From 49469a961815fb810433816da22c4219a73568ba Mon Sep 17 00:00:00 2001 From: Forstride Date: Wed, 7 Oct 2020 04:40:19 -0400 Subject: [PATCH] More biome rework progress --- .../biomesoplenty/api/biome/BOPBiomes.java | 6 + .../java/biomesoplenty/api/item/BOPItems.java | 5 - .../biomesoplenty/api/sound/BOPSounds.java | 7 - .../overworld/ConiferousForestBiome.java | 2 - .../biome/overworld/ConiferousLakesBiome.java | 1 - .../biome/overworld/FirClearingBiome.java | 2 - .../common/biome/overworld/HighlandBiome.java | 2 +- .../biome/overworld/HighlandCragBiome.java | 85 ++++++++++ .../biome/overworld/JadeCliffsBiome.java | 2 +- .../biome/overworld/JadeGrasslandBiome.java | 85 ++++++++++ .../biome/overworld/LushDesertBiome.java | 4 +- .../biome/overworld/LushSavannaBiome.java | 10 +- .../biome/overworld/MeadowForestBiome.java | 99 +++++++++++ .../biome/overworld/OminousMireBiome.java | 92 ++++++++++ .../biome/overworld/RainforestBiome.java | 4 +- .../overworld/RainforestClearingBiome.java | 4 +- .../overworld/RainforestCliffsBiome.java | 4 +- .../biome/overworld/RedwoodForestBiome.java | 5 +- .../overworld/RedwoodForestEdgeBiome.java | 3 +- .../biome/overworld/RedwoodHillsBiome.java | 87 ++++++++++ .../biome/overworld/SeasonalForestBiome.java | 2 - .../biome/overworld/SilkgladeNestBiome.java | 83 +++++++++ .../overworld/SnowyConiferousForestBiome.java | 1 - .../overworld/SnowyFirClearingBiome.java | 1 - .../overworld/SnowyMapleForestBiome.java | 1 - .../biome/overworld/TundraBasinBiome.java | 5 - .../common/entity/DeerEntity.java | 91 ---------- .../common/entity/DeerModel.java | 159 ------------------ .../common/entity/DeerRenderer.java | 28 --- .../common/entity/TurkeyEntity.java | 120 ------------- .../common/entity/TurkeyModel.java | 137 --------------- .../common/entity/TurkeyRenderer.java | 27 --- .../gen/feature/BOPConfiguredFeatures.java | 18 +- .../common/world/gen/feature/BOPFeatures.java | 1 + .../gen/feature/CragSplatterFeature.java | 89 ++++++++++ .../gen/feature/HugeToadstoolFeature.java | 4 +- .../surfacebuilders/BOPSurfaceBuilders.java | 2 +- .../HighlandCragSurfaceBuilder.java | 35 ++++ .../common/world/layer/BOPBiomeEdgeLayer.java | 1 + .../biomesoplenty/core/BiomesOPlenty.java | 2 - .../java/biomesoplenty/init/ModBiomes.java | 25 ++- .../java/biomesoplenty/init/ModEntities.java | 82 +-------- .../java/biomesoplenty/init/ModItems.java | 9 - .../java/biomesoplenty/init/ModSounds.java | 7 - .../assets/biomesoplenty/lang/en_us.json | 17 +- .../models/item/cooked_turkey_leg.json | 6 - .../models/item/cooked_venison.json | 6 - .../models/item/deer_spawn_egg.json | 3 - .../biomesoplenty/models/item/turkey_leg.json | 6 - .../models/item/turkey_spawn_egg.json | 3 - .../biomesoplenty/models/item/venison.json | 6 - .../assets/biomesoplenty/sounds.json | 25 --- .../biomesoplenty/sounds/entity/deer/dead.ogg | Bin 14255 -> 0 bytes .../biomesoplenty/sounds/entity/deer/hurt.ogg | Bin 9667 -> 0 bytes .../sounds/entity/turkey/ambient.ogg | Bin 14432 -> 0 bytes .../sounds/entity/turkey/dead.ogg | Bin 9356 -> 0 bytes .../sounds/entity/turkey/hurt.ogg | Bin 6999 -> 0 bytes .../biomesoplenty/textures/entity/deer.png | Bin 2182 -> 0 bytes .../biomesoplenty/textures/entity/fawn.png | Bin 2010 -> 0 bytes .../biomesoplenty/textures/entity/turkey.png | Bin 1977 -> 0 bytes .../textures/item/cooked_turkey_leg.png | Bin 531 -> 0 bytes .../textures/item/cooked_venison.png | Bin 421 -> 0 bytes .../textures/item/turkey_leg.png | Bin 543 -> 0 bytes .../biomesoplenty/textures/item/venison.png | Bin 411 -> 0 bytes .../biomesoplenty/all_biomes.json | 36 ++++ .../advancements/biomesoplenty/root.json | 42 +++++ .../recipes/food/cooked_turkey_leg.json | 32 ---- ...oked_turkey_leg_from_campfire_cooking.json | 32 ---- .../food/cooked_turkey_leg_from_smoking.json | 32 ---- .../recipes/food/cooked_venison.json | 32 ---- .../cooked_venison_from_campfire_cooking.json | 32 ---- .../food/cooked_venison_from_smoking.json | 32 ---- .../loot_tables/entities/deer.json | 45 ----- .../loot_tables/entities/turkey.json | 71 -------- .../recipes/cooked_turkey_leg.json | 9 - ...oked_turkey_leg_from_campfire_cooking.json | 9 - .../cooked_turkey_leg_from_smoking.json | 9 - .../biomesoplenty/recipes/cooked_venison.json | 9 - .../cooked_venison_from_campfire_cooking.json | 9 - .../recipes/cooked_venison_from_smoking.json | 9 - 80 files changed, 808 insertions(+), 1143 deletions(-) create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/HighlandCragBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/JadeGrasslandBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/MeadowForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/OminousMireBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/RedwoodHillsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/SilkgladeNestBiome.java delete mode 100644 src/main/java/biomesoplenty/common/entity/DeerEntity.java delete mode 100644 src/main/java/biomesoplenty/common/entity/DeerModel.java delete mode 100644 src/main/java/biomesoplenty/common/entity/DeerRenderer.java delete mode 100644 src/main/java/biomesoplenty/common/entity/TurkeyEntity.java delete mode 100644 src/main/java/biomesoplenty/common/entity/TurkeyModel.java delete mode 100644 src/main/java/biomesoplenty/common/entity/TurkeyRenderer.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/CragSplatterFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/HighlandCragSurfaceBuilder.java delete mode 100644 src/main/resources/assets/biomesoplenty/models/item/cooked_turkey_leg.json delete mode 100644 src/main/resources/assets/biomesoplenty/models/item/cooked_venison.json delete mode 100644 src/main/resources/assets/biomesoplenty/models/item/deer_spawn_egg.json delete mode 100644 src/main/resources/assets/biomesoplenty/models/item/turkey_leg.json delete mode 100644 src/main/resources/assets/biomesoplenty/models/item/turkey_spawn_egg.json delete mode 100644 src/main/resources/assets/biomesoplenty/models/item/venison.json delete mode 100644 src/main/resources/assets/biomesoplenty/sounds/entity/deer/dead.ogg delete mode 100644 src/main/resources/assets/biomesoplenty/sounds/entity/deer/hurt.ogg delete mode 100644 src/main/resources/assets/biomesoplenty/sounds/entity/turkey/ambient.ogg delete mode 100644 src/main/resources/assets/biomesoplenty/sounds/entity/turkey/dead.ogg delete mode 100644 src/main/resources/assets/biomesoplenty/sounds/entity/turkey/hurt.ogg delete mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/deer.png delete mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/fawn.png delete mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/turkey.png delete mode 100644 src/main/resources/assets/biomesoplenty/textures/item/cooked_turkey_leg.png delete mode 100644 src/main/resources/assets/biomesoplenty/textures/item/cooked_venison.png delete mode 100644 src/main/resources/assets/biomesoplenty/textures/item/turkey_leg.png delete mode 100644 src/main/resources/assets/biomesoplenty/textures/item/venison.png delete mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg.json delete mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg_from_campfire_cooking.json delete mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg_from_smoking.json delete mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison.json delete mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison_from_campfire_cooking.json delete mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison_from_smoking.json delete mode 100644 src/main/resources/data/biomesoplenty/loot_tables/entities/deer.json delete mode 100644 src/main/resources/data/biomesoplenty/loot_tables/entities/turkey.json delete mode 100644 src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg.json delete mode 100644 src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg_from_campfire_cooking.json delete mode 100644 src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg_from_smoking.json delete mode 100644 src/main/resources/data/biomesoplenty/recipes/cooked_venison.json delete mode 100644 src/main/resources/data/biomesoplenty/recipes/cooked_venison_from_campfire_cooking.json delete mode 100644 src/main/resources/data/biomesoplenty/recipes/cooked_venison_from_smoking.json diff --git a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java index 4e4d1274d..bb110597b 100644 --- a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java +++ b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java @@ -34,16 +34,20 @@ public class BOPBiomes public static RegistryKey gravel_beach = register("gravel_beach"); public static RegistryKey grove = register("grove"); public static RegistryKey highland = register("highland"); + public static RegistryKey highland_crag = register("highland_crag"); public static RegistryKey highland_moor = register("highland_moor"); public static RegistryKey jade_cliffs = register("jade_cliffs"); + public static RegistryKey jade_grassland = register("jade_grassland"); public static RegistryKey lavender_field = register("lavender_field"); public static RegistryKey lush_desert = register("lush_desert"); public static RegistryKey lush_savanna = register("lush_savanna"); public static RegistryKey meadow = register("meadow"); + public static RegistryKey meadow_forest = register("meadow_forest"); public static RegistryKey muskeg = register("muskeg"); public static RegistryKey mystic_grove = register("mystic_grove"); public static RegistryKey mystic_plains = register("mystic_plains"); public static RegistryKey ominous_woods = register("ominous_woods"); + public static RegistryKey ominous_mire = register("ominous_mire"); public static RegistryKey orchard = register("orchard"); public static RegistryKey origin_valley = register("origin_valley"); public static RegistryKey overgrown_fungal_jungle = register("overgrown_fungal_jungle"); @@ -54,12 +58,14 @@ public class BOPBiomes public static RegistryKey rainforest_cliffs = register("rainforest_cliffs"); public static RegistryKey redwood_forest = register("redwood_forest"); public static RegistryKey redwood_forest_edge = register("redwood_forest_edge"); + public static RegistryKey redwood_hills = register("redwood_hills"); public static RegistryKey seasonal_forest = register("seasonal_forest"); public static RegistryKey seasonal_pumpkin_patch = register("seasonal_pumpkin_patch"); public static RegistryKey shroomy_wetland = register("shroomy_wetland"); public static RegistryKey shrubland = register("shrubland"); public static RegistryKey shrubland_hills = register("shrubland_hills"); public static RegistryKey silkglade = register("silkglade"); + public static RegistryKey silkglade_nest = register("silkglade_nest"); public static RegistryKey snowy_coniferous_forest = register("snowy_coniferous_forest"); public static RegistryKey snowy_fir_clearing = register("snowy_fir_clearing"); public static RegistryKey snowy_maple_forest = register("snowy_maple_forest"); diff --git a/src/main/java/biomesoplenty/api/item/BOPItems.java b/src/main/java/biomesoplenty/api/item/BOPItems.java index dec34b553..5aa98461a 100644 --- a/src/main/java/biomesoplenty/api/item/BOPItems.java +++ b/src/main/java/biomesoplenty/api/item/BOPItems.java @@ -28,10 +28,5 @@ public class BOPItems public static Item umbran_boat; public static Item hellbark_boat; - public static Item venison; - public static Item cooked_venison; - public static Item turkey_leg; - public static Item cooked_turkey_leg; - public static Item music_disc_wanderer; } diff --git a/src/main/java/biomesoplenty/api/sound/BOPSounds.java b/src/main/java/biomesoplenty/api/sound/BOPSounds.java index 4c2b729b6..793e0a811 100644 --- a/src/main/java/biomesoplenty/api/sound/BOPSounds.java +++ b/src/main/java/biomesoplenty/api/sound/BOPSounds.java @@ -12,11 +12,4 @@ import net.minecraft.util.SoundEvent; public class BOPSounds { public static SoundEvent music_disc_wanderer; - public static SoundEvent deer_hurt; - public static SoundEvent deer_dead; - public static SoundEvent deer_step; - public static SoundEvent turkey_ambient; - public static SoundEvent turkey_hurt; - public static SoundEvent turkey_dead; - public static SoundEvent turkey_step; } diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java index b2d8cc26b..f06835bf2 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java @@ -84,8 +84,6 @@ public class ConiferousForestBiome extends BiomeTemplate protected void configureMobSpawns(MobSpawnInfo.Builder builder) { // Entities - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.turkey, 10, 4, 4)); - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ConiferousLakesBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousLakesBiome.java index ae7f16f48..893dd2c69 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/ConiferousLakesBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousLakesBiome.java @@ -84,7 +84,6 @@ public class ConiferousLakesBiome extends BiomeTemplate protected void configureMobSpawns(MobSpawnInfo.Builder builder) { // Entities - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/FirClearingBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/FirClearingBiome.java index c8d090791..a41aa697e 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/FirClearingBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/FirClearingBiome.java @@ -78,8 +78,6 @@ public class FirClearingBiome extends BiomeTemplate protected void configureMobSpawns(MobSpawnInfo.Builder builder) { // Entities - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.turkey, 10, 4, 4)); - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/HighlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/HighlandBiome.java index c1cd34338..fa66fc9fa 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/HighlandBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/HighlandBiome.java @@ -22,7 +22,7 @@ public class HighlandBiome extends BiomeTemplate { public HighlandBiome() { - this.addWeight(BOPClimates.COOL_TEMPERATE, 3); + this.addWeight(BOPClimates.COOL_TEMPERATE, 5); this.setBeachBiome(null); } diff --git a/src/main/java/biomesoplenty/common/biome/overworld/HighlandCragBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/HighlandCragBiome.java new file mode 100644 index 000000000..09ee84141 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/HighlandCragBiome.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class HighlandCragBiome extends BiomeTemplate +{ + public HighlandCragBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.EXTREME_HILLS).depth(3.0F).scale(0.7F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.HIGHLAND_CRAG, SurfaceBuilder.CONFIG_STONE)); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CRAG_SPLATTER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/JadeCliffsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/JadeCliffsBiome.java index d42f73912..456aaf671 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/JadeCliffsBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/JadeCliffsBiome.java @@ -31,7 +31,7 @@ public class JadeCliffsBiome extends BiomeTemplate @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(2.0F).scale(1.15F).temperature(0.75F).downfall(0.85F); + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(2.0F).scale(1.15F).temperature(0.8F).downfall(0.85F); builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0xBBD1D5).skyColor(0xB7CCAD).grassColorOverride(0x7CA568).foliageColorOverride(0x8BB76E).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } diff --git a/src/main/java/biomesoplenty/common/biome/overworld/JadeGrasslandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/JadeGrasslandBiome.java new file mode 100644 index 000000000..4bd564615 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/JadeGrasslandBiome.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class JadeGrasslandBiome extends BiomeTemplate +{ + public JadeGrasslandBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.3F).scale(0.2F).temperature(0.8F).downfall(0.85F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0xBBD1D5).skyColor(0xB7CCAD).grassColorOverride(0x7CA568).foliageColorOverride(0x8BB76E).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, SurfaceBuilder.CONFIG_GRASS)); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/LushDesertBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/LushDesertBiome.java index 297954cf6..053d9c215 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/LushDesertBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/LushDesertBiome.java @@ -32,9 +32,9 @@ public class LushDesertBiome extends BiomeTemplate @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.DESERT).depth(0.6F).scale(0.6F).temperature(1.8F).downfall(0.15F); + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.DESERT).depth(0.6F).scale(0.6F).temperature(0.9F).downfall(0.5F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(1.8F)).grassColorOverride(0xEFE182).foliageColorOverride(0xD3D156).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0xEFE182).foliageColorOverride(0xD3D156).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override diff --git a/src/main/java/biomesoplenty/common/biome/overworld/LushSavannaBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/LushSavannaBiome.java index 7bb547b6e..d417ea224 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/LushSavannaBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/LushSavannaBiome.java @@ -18,6 +18,7 @@ import net.minecraft.world.gen.GenerationStage; import net.minecraft.world.gen.feature.Features; import net.minecraft.world.gen.feature.structure.StructureFeatures; import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; public class LushSavannaBiome extends BiomeTemplate { @@ -29,15 +30,15 @@ public class LushSavannaBiome extends BiomeTemplate @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.DESERT).depth(0.1F).scale(0.01F).temperature(1.8F).downfall(0.15F); + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.DESERT).depth(0.1F).scale(0.01F).temperature(0.9F).downfall(0.5F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(1.8F)).grassColorOverride(0xEFE182).foliageColorOverride(0xD3D156).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0xEFE182).foliageColorOverride(0xD3D156).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override protected void configureGeneration(BiomeGenerationSettings.Builder builder) { - builder.surfaceBuilder(new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.LUSH_SAVANNA, BOPSurfaceBuilders.ORANGE_SAND_SURFACE)); + builder.surfaceBuilder(new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.LUSH_SAVANNA, SurfaceBuilder.CONFIG_GRASS)); // Structures DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); @@ -66,6 +67,9 @@ public class LushSavannaBiome extends BiomeTemplate // Other Features DefaultBiomeFeatures.addDefaultSprings(builder); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATER_SPRING_EXTRA); + DefaultBiomeFeatures.addSurfaceFreezing(builder); } diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MeadowForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MeadowForestBiome.java new file mode 100644 index 000000000..8a89312ed --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MeadowForestBiome.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MeadowForestBiome extends BiomeTemplate +{ + public MeadowForestBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(0.05F).temperature(0.4F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0x63B26D).foliageColorOverride(0x63B26D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS)); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_TAIGA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/OminousMireBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/OminousMireBiome.java new file mode 100644 index 000000000..6bc59ef86 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/OminousMireBiome.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class OminousMireBiome extends BiomeTemplate +{ + public OminousMireBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(-0.215F).scale(-0.05F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x312346).waterFogColor(0x0A030C).fogColor(0x7881A5).skyColor(0x84A1CC).grassColorOverride(0x4C4A70).foliageColorOverride(0x6B487C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.MARSH, SurfaceBuilder.CONFIG_GRASS)); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.BLACK_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OMINOUS_MIRE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OMINOUS_WOODS_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BRAMBLE_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.EVOKER, 50, 2, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 50, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 25, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java index 6d3ef7555..be0c8a0ac 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java @@ -31,9 +31,9 @@ public class RainforestBiome extends BiomeTemplate @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.15F).scale(0.35F).temperature(1.0F).downfall(1.0F); + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.15F).scale(0.35F).temperature(1.2F).downfall(2.0F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.0F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.2F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainforestClearingBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainforestClearingBiome.java index 40b35e784..d375d1330 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/RainforestClearingBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainforestClearingBiome.java @@ -29,9 +29,9 @@ public class RainforestClearingBiome extends BiomeTemplate @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(-0.125F).scale(-0.05F).temperature(1.0F).downfall(1.0F); + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(-0.125F).scale(-0.05F).temperature(1.2F).downfall(2.0F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.0F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.2F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainforestCliffsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainforestCliffsBiome.java index c69c6f937..961d58394 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/RainforestCliffsBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainforestCliffsBiome.java @@ -30,9 +30,9 @@ public class RainforestCliffsBiome extends BiomeTemplate @Override protected void configureBiome(Biome.Builder builder) { - builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(2.9F).scale(0.6F).temperature(1.0F).downfall(1.0F); + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(2.9F).scale(0.6F).temperature(1.2F).downfall(2.0F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.0F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.2F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestBiome.java index 5f814e46c..900d6feb5 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestBiome.java @@ -23,7 +23,7 @@ public class RedwoodForestBiome extends BiomeTemplate { public RedwoodForestBiome() { - this.addWeight(BOPClimates.WARM_TEMPERATE, 3); + this.addWeight(BOPClimates.WARM_TEMPERATE, 7); } @Override @@ -31,7 +31,7 @@ public class RedwoodForestBiome extends BiomeTemplate { builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.25F).scale(0.05F).temperature(0.8F).downfall(0.6F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xB6D367).foliageColorOverride(0x97BF4E).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override @@ -59,6 +59,7 @@ public class RedwoodForestBiome extends BiomeTemplate builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REDWOOD_FOREST_TREES); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestEdgeBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestEdgeBiome.java index 13646396d..90ea7717d 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestEdgeBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestEdgeBiome.java @@ -28,7 +28,7 @@ public class RedwoodForestEdgeBiome extends BiomeTemplate { builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.25F).scale(0.05F).temperature(0.8F).downfall(0.6F); - builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xB6D367).foliageColorOverride(0x97BF4E).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); } @Override @@ -56,6 +56,7 @@ public class RedwoodForestEdgeBiome extends BiomeTemplate builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REDWOOD_FOREST_EDGE_TREES); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RedwoodHillsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodHillsBiome.java new file mode 100644 index 000000000..d7265449c --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodHillsBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RedwoodHillsBiome extends BiomeTemplate +{ + public RedwoodHillsBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(1.5F).scale(0.2F).temperature(0.8F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xB6D367).foliageColorOverride(0x97BF4E).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_PODZOL)); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REDWOOD_HILLS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java index 0609935fc..1d8120287 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java @@ -81,8 +81,6 @@ public class SeasonalForestBiome extends BiomeTemplate protected void configureMobSpawns(MobSpawnInfo.Builder builder) { // Entities - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.turkey, 10, 4, 4)); - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeNestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeNestBiome.java new file mode 100644 index 000000000..4e3ba0d42 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SilkgladeNestBiome.java @@ -0,0 +1,83 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SilkgladeNestBiome extends BiomeTemplate +{ + public SilkgladeNestBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.5F).scale(0.2F).temperature(0.75F).downfall(0.2F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x82826A).waterFogColor(0x0D0F09).fogColor(12638463).skyColor(calculateSkyColor(0.75F)).grassColorOverride(0xB2B39F).foliageColorOverride(0xDEE1C6).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS)); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SILKGLADE_NEST_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CAVE_SPIDER, 50, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SnowyConiferousForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SnowyConiferousForestBiome.java index 04c8cba8a..5ba2908be 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/SnowyConiferousForestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/SnowyConiferousForestBiome.java @@ -78,7 +78,6 @@ public class SnowyConiferousForestBiome extends BiomeTemplate protected void configureMobSpawns(MobSpawnInfo.Builder builder) { // Entities - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SnowyFirClearingBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SnowyFirClearingBiome.java index 0179e7425..64e0b928b 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/SnowyFirClearingBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/SnowyFirClearingBiome.java @@ -72,7 +72,6 @@ public class SnowyFirClearingBiome extends BiomeTemplate protected void configureMobSpawns(MobSpawnInfo.Builder builder) { // Entities - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SnowyMapleForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SnowyMapleForestBiome.java index 1476cd1e7..eb0a0a7a0 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/SnowyMapleForestBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/SnowyMapleForestBiome.java @@ -77,7 +77,6 @@ public class SnowyMapleForestBiome extends BiomeTemplate protected void configureMobSpawns(MobSpawnInfo.Builder builder) { // Entities - builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java index 1b4db1148..b5c708b0d 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java @@ -54,11 +54,6 @@ public class TundraBasinBiome extends BiomeTemplate //////////////////////////////////////////////////////////// - // Vegetation - builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_GRASS_1); - - //////////////////////////////////////////////////////////// - // Other Features DefaultBiomeFeatures.addDefaultSprings(builder); DefaultBiomeFeatures.addSurfaceFreezing(builder); diff --git a/src/main/java/biomesoplenty/common/entity/DeerEntity.java b/src/main/java/biomesoplenty/common/entity/DeerEntity.java deleted file mode 100644 index dffa0542a..000000000 --- a/src/main/java/biomesoplenty/common/entity/DeerEntity.java +++ /dev/null @@ -1,91 +0,0 @@ -package biomesoplenty.common.entity; - -import biomesoplenty.api.sound.BOPSounds; -import biomesoplenty.init.ModEntities; -import net.minecraft.block.BlockState; -import net.minecraft.entity.*; -import net.minecraft.entity.ai.attributes.AttributeModifierMap; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.entity.ai.goal.*; -import net.minecraft.entity.passive.AnimalEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.DamageSource; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class DeerEntity extends AnimalEntity { - public DeerEntity(EntityType type, World worldIn) - { - super(type, worldIn); - } - - private static final Ingredient FOOD_ITEMS = Ingredient.of(Items.WHEAT_SEEDS, Items.MELON_SEEDS, Items.PUMPKIN_SEEDS, Items.BEETROOT_SEEDS); - - @Override - protected void registerGoals() { - this.goalSelector.addGoal(0, new SwimGoal(this)); - this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); - this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); - this.goalSelector.addGoal(3, new TemptGoal(this, 0.8D, false, FOOD_ITEMS)); - this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); - this.goalSelector.addGoal(5, new WaterAvoidingRandomWalkingGoal(this, 1.0D)); - this.goalSelector.addGoal(6, new LookAtGoal(this, PlayerEntity.class, 6.0F)); - this.goalSelector.addGoal(7, new LookRandomlyGoal(this)); - } - - public static AttributeModifierMap.MutableAttribute createAttributes() { - return MobEntity.createMobAttributes().add(Attributes.MAX_HEALTH, 9.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); - } - - @Override - protected SoundEvent getAmbientSound() { - return null; - } - - @Override - protected SoundEvent getHurtSound(DamageSource damageSourceIn) { - return BOPSounds.deer_hurt; - } - - @Override - protected SoundEvent getDeathSound() { - return BOPSounds.deer_dead; - } - - @Override - protected void playStepSound(BlockPos pos, BlockState blockIn) { - this.playSound(BOPSounds.deer_step, 0.15F, 1.0F); - } - - /** - * Returns the volume for the sounds this mob makes. - */ - @Override - protected float getSoundVolume() { - return 0.4F; - } - - @Override - public DeerEntity getBreedOffspring(ServerWorld p_241840_1_, AgeableEntity p_241840_2_) { - return ModEntities.deer.create(p_241840_1_); - } - - @Override - protected float getStandingEyeHeight(Pose poseIn, EntitySize sizeIn) { - return this.isBaby() ? sizeIn.height * 0.95F : 1.3F; - } - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - @Override - public boolean isFood(ItemStack stack) { - return FOOD_ITEMS.test(stack); - } -} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entity/DeerModel.java b/src/main/java/biomesoplenty/common/entity/DeerModel.java deleted file mode 100644 index b63014ec6..000000000 --- a/src/main/java/biomesoplenty/common/entity/DeerModel.java +++ /dev/null @@ -1,159 +0,0 @@ -package biomesoplenty.common.entity; - -import com.google.common.collect.ImmutableList; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import net.minecraft.client.renderer.entity.model.AgeableModel; -import net.minecraft.client.renderer.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -public class DeerModel extends AgeableModel -{ - private final ModelRenderer head; - private final ModelRenderer snout; - private final ModelRenderer neck; - private final ModelRenderer body; - private final ModelRenderer tail; - private final ModelRenderer ear0; - private final ModelRenderer ear1; - private final ModelRenderer leg0; - private final ModelRenderer leg1; - private final ModelRenderer leg2; - private final ModelRenderer leg3; - private final ModelRenderer antler0; - private final ModelRenderer antler1; - private boolean scaleHead = true; - private float yHeadOffset = 14.0F; - private float zHeadOffset = 3.0F; - private float babyHeadScale = 2.0F; - private float babyBodyScale = 2.0F; - private float bodyYOffset = 24.0F; - - public DeerModel() - { - this.texWidth = 128; - this.texHeight = 32; - - this.head = new ModelRenderer(this, 0, 0); - this.head.addBox(-3F, -3F, -6F, 6, 6, 6); - this.head.setPos(0F, 3F, -9F); - - this.snout = new ModelRenderer(this, 24, 0); - this.snout.addBox(-2F, -1F, -10F, 4, 4, 4); - - this.ear0 = new ModelRenderer(this, 32, 16); - this.ear0.addBox(-1F, -8F, -2F, 3, 6, 1); - this.ear0.zRot = -1.047198F; - - this.ear1 = new ModelRenderer(this, 32, 23); - this.ear1.addBox(-2F, -8F, -2F, 3, 6, 1); - this.ear1.zRot = 1.047198F; - - this.antler0 = new ModelRenderer(this, 70, 18); - this.antler0.addBox(-7F, -14F, -2F, 8, 12, 1); - this.antler0.xRot = -0.5235988F; - this.antler0.yRot = -1.047198F; - - this.antler1 = new ModelRenderer(this, 88, 18); - this.antler1.addBox(-1F, -14F, -2F, 8, 12, 1); - this.antler1.xRot = -0.5235988F; - this.antler1.yRot = 1.047198F; - - this.head.addChild(snout); - this.head.addChild(ear0); - this.head.addChild(ear1); - this.head.addChild(antler0); - this.head.addChild(antler1); - - this.neck = new ModelRenderer(this, 0, 12); - this.neck.addBox(-2F, 0F, -9F, 4, 6, 9); - this.neck.setPos(0F, 6F, -2F); - this.neck.xRot = -0.6283185F; - - this.body = new ModelRenderer(this, 40, 0); - this.body.addBox(-4F, -9F, -7F, 8, 18, 7); - this.body.setPos(0F, 5F, 1F); - this.body.xRot = 1.570796F; - - this.leg0 = new ModelRenderer(this, 70, 0); - this.leg0.addBox(0F, 0F, 0F, 3, 12, 3); - this.leg0.setPos(-4F, 12F, 6F); - - this.leg1 = new ModelRenderer(this, 82, 0); - this.leg1.addBox(-3F, 0F, 0F, 3, 12, 3); - this.leg1.setPos(4F, 12F, 6F); - - this.leg2 = new ModelRenderer(this, 94, 0); - this.leg2.addBox(0F, 0F, 0F, 3, 12, 3); - this.leg2.setPos(-4F, 12F, -7F); - - this.leg3 = new ModelRenderer(this, 106, 0); - this.leg3.addBox(-3F, 0F, 0F, 3, 12, 3); - this.leg3.setPos(4F, 12F, -7F); - - this.tail = new ModelRenderer(this, 32, 8); - this.tail.addBox(0F, 0F, 0F, 2, 6, 2); - this.tail.setPos(-1F, 7F, 8F); - this.tail.xRot = 0.4363323F; - } - - @Override - protected Iterable headParts() { - return ImmutableList.of(this.head); - } - - @Override - protected Iterable bodyParts() { - return ImmutableList.of(this.body, this.neck, this.leg0, this.leg1, this.leg2, this.leg3, this.tail); - } - - @Override - public void setupAnim(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { - this.head.xRot = headPitch * ((float)Math.PI / 180F); - this.head.yRot = netHeadYaw * ((float)Math.PI / 180F); - this.leg0.xRot = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount; - this.leg1.xRot = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount; - this.leg2.xRot = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount; - this.leg3.xRot = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount; - } - - @Override - public void renderToBuffer(MatrixStack matrixStackIn, IVertexBuilder bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) { - if (this.young) - { - matrixStackIn.pushPose(); - if (this.scaleHead) - { - float f = 1.5F / this.babyHeadScale; - matrixStackIn.scale(f, f, f); - } - - matrixStackIn.translate(0.0D, (double)(this.yHeadOffset / 16.0F), (double)(this.zHeadOffset / 16.0F)); - this.headParts().forEach((p_228230_8_) -> { - p_228230_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); - }); - matrixStackIn.popPose(); - matrixStackIn.pushPose(); - float f1 = 1.0F / this.babyBodyScale; - matrixStackIn.scale(f1, f1, f1); - matrixStackIn.translate(0.0D, (double)(this.bodyYOffset / 16.0F), 0.0D); - this.bodyParts().forEach((p_228229_8_) -> { - p_228229_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); - }); - matrixStackIn.popPose(); - } - else - { - this.headParts().forEach((p_228228_8_) -> { - p_228228_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); - }); - this.bodyParts().forEach((p_228227_8_) -> { - p_228227_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); - }); - } - } -} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entity/DeerRenderer.java b/src/main/java/biomesoplenty/common/entity/DeerRenderer.java deleted file mode 100644 index add2f3e7c..000000000 --- a/src/main/java/biomesoplenty/common/entity/DeerRenderer.java +++ /dev/null @@ -1,28 +0,0 @@ -package biomesoplenty.common.entity; - -import net.minecraft.client.renderer.entity.EntityRendererManager; -import net.minecraft.client.renderer.entity.MobRenderer; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -public class DeerRenderer extends MobRenderer> { - private static final ResourceLocation DEER_LOCATION = new ResourceLocation("biomesoplenty:textures/entity/deer.png"); - private static final ResourceLocation FAWN_LOCATION = new ResourceLocation("biomesoplenty:textures/entity/fawn.png"); - - public DeerRenderer(EntityRendererManager renderManagerIn) { - super(renderManagerIn, new DeerModel<>(), 0.7F); - } - - public ResourceLocation getTextureLocation(DeerEntity entity) { - if (entity.getAge() < 0) - { - return FAWN_LOCATION; - } - else - { - return DEER_LOCATION; - } - } -} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entity/TurkeyEntity.java b/src/main/java/biomesoplenty/common/entity/TurkeyEntity.java deleted file mode 100644 index 4a8cc61a0..000000000 --- a/src/main/java/biomesoplenty/common/entity/TurkeyEntity.java +++ /dev/null @@ -1,120 +0,0 @@ -package biomesoplenty.common.entity; - -import biomesoplenty.api.sound.BOPSounds; -import biomesoplenty.init.ModEntities; -import net.minecraft.block.BlockState; -import net.minecraft.entity.*; -import net.minecraft.entity.ai.attributes.AttributeModifierMap; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.entity.ai.goal.*; -import net.minecraft.entity.passive.AnimalEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.pathfinding.PathNodeType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class TurkeyEntity extends AnimalEntity { - private static final Ingredient FOOD_ITEMS = Ingredient.of(Items.WHEAT_SEEDS, Items.MELON_SEEDS, Items.PUMPKIN_SEEDS, Items.BEETROOT_SEEDS); - public float flap; - public float flapSpeed; - public float oFlapSpeed; - public float oFlap; - public float flapping = 1.0F; - - public TurkeyEntity(EntityType type, World worldIn) { - super(type, worldIn); - this.setPathfindingMalus(PathNodeType.WATER, 0.0F); - } - - @Override - protected void registerGoals() { - this.goalSelector.addGoal(0, new SwimGoal(this)); - this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D)); - this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); - this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, false, FOOD_ITEMS)); - this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.1D)); - this.goalSelector.addGoal(5, new WaterAvoidingRandomWalkingGoal(this, 1.0D)); - this.goalSelector.addGoal(6, new LookAtGoal(this, PlayerEntity.class, 6.0F)); - this.goalSelector.addGoal(7, new LookRandomlyGoal(this)); - } - - @Override - protected float getStandingEyeHeight(Pose poseIn, EntitySize sizeIn) { - return this.isBaby() ? sizeIn.height * 0.85F : sizeIn.height * 0.92F; - } - - public static AttributeModifierMap.MutableAttribute createAttributes() { - return MobEntity.createMobAttributes().add(Attributes.MAX_HEALTH, 7.0D).add(Attributes.MOVEMENT_SPEED, (double)0.25F); - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - @Override - public void aiStep() { - super.aiStep(); - this.oFlap = this.flap; - this.oFlapSpeed = this.flapSpeed; - this.flapSpeed = (float)((double)this.flapSpeed + (double)(this.onGround ? -1 : 4) * 0.3D); - this.flapSpeed = MathHelper.clamp(this.flapSpeed, 0.0F, 1.0F); - if (!this.onGround && this.flapping < 1.0F) { - this.flapping = 1.0F; - } - - this.flapping = (float)((double)this.flapping * 0.9D); - Vector3d vec3d = this.getDeltaMovement(); - if (!this.onGround && vec3d.y < 0.0D) { - this.setDeltaMovement(vec3d.multiply(1.0D, 0.6D, 1.0D)); - } - - this.flap += this.flapping * 2.0F; - } - - @Override - public boolean causeFallDamage(float distance, float damageMultiplier) { - return false; - } - - @Override - protected SoundEvent getAmbientSound() { - return BOPSounds.turkey_ambient; - } - - @Override - protected SoundEvent getHurtSound(DamageSource damageSourceIn) { - return BOPSounds.turkey_hurt; - } - - @Override - protected SoundEvent getDeathSound() { - return BOPSounds.turkey_dead; - } - - @Override - protected void playStepSound(BlockPos pos, BlockState blockIn) { - this.playSound(BOPSounds.turkey_step, 0.15F, 1.0F); - } - - @Override - public TurkeyEntity getBreedOffspring(ServerWorld p_241840_1_, AgeableEntity p_241840_2_) { - return ModEntities.turkey.create(p_241840_1_); - } - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - @Override - public boolean isFood(ItemStack stack) { - return FOOD_ITEMS.test(stack); - } -} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entity/TurkeyModel.java b/src/main/java/biomesoplenty/common/entity/TurkeyModel.java deleted file mode 100644 index 66a98c461..000000000 --- a/src/main/java/biomesoplenty/common/entity/TurkeyModel.java +++ /dev/null @@ -1,137 +0,0 @@ -package biomesoplenty.common.entity; - -import com.google.common.collect.ImmutableList; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import net.minecraft.client.renderer.entity.model.AgeableModel; -import net.minecraft.client.renderer.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -public class TurkeyModel extends AgeableModel -{ - private final ModelRenderer head; - private final ModelRenderer chest; - private final ModelRenderer body; - private final ModelRenderer leg0; - private final ModelRenderer leg1; - private final ModelRenderer wing0; - private final ModelRenderer wing1; - private final ModelRenderer beak; - private final ModelRenderer wattle; - private final ModelRenderer plume; - private boolean scaleHead = true; - private float yHeadOffset = 12.0F; - private float zHeadOffset = 3.0F; - private float babyHeadScale = 2.0F; - private float babyBodyScale = 2.0F; - private float bodyYOffset = 24.0F; - - public TurkeyModel() - { - this.texWidth = 128; - this.texHeight = 64; - - this.chest = new ModelRenderer(this, 0, 22); - this.chest.addBox(-4F, -4F, -4F, 8, 5, 5); - this.chest.setPos(0F, 14F, -3F); - - this.head = new ModelRenderer(this, 0, 32); - this.head.addBox(-2F, -10F, -5F, 4, 10, 3); - this.head.setPos(0F, 14F, -3F); - - this.beak = new ModelRenderer(this, 0, 45); - this.beak.addBox(-1F, -8F, -7F, 2, 1, 2); - this.beak.setPos(0F, 14F, -3F); - - this.wattle = new ModelRenderer(this, 14, 32); - this.wattle.addBox(-1F, -7F, -6F, 2, 7, 1); - this.wattle.setPos(0F, 14F, -3F); - - this.body = new ModelRenderer(this, 0, 0); - this.body.addBox(-6F, 0F, -6F, 12, 8, 14); - this.body.setPos(0F, 10F, 0F); - - this.wing0 = new ModelRenderer(this, 26, 22); - this.wing0.addBox(-1F, 0F, 0F, 1, 6, 8); - this.wing0.setPos(-6F, 11F, -4F); - - this.wing1 = new ModelRenderer(this, 26, 22); - this.wing1.addBox(0F, 0F, 0F, 1, 6, 8); - this.wing1.setPos(6F, 11F, -4F); - - this.plume = new ModelRenderer(this, 52, 0); - this.plume.addBox(-11F, -13F, 6F, 22, 14, 0); - this.plume.setPos(0F, 12F, 0F); - this.plume.xRot = -0.2617994F; - - this.leg0 = new ModelRenderer(this, 44, 22); - this.leg0.addBox(-5F, 0F, -5F, 5, 6, 4); - this.leg0.setPos(0F, 18F, 4F); - - this.leg1 = new ModelRenderer(this, 44, 22); - this.leg1.addBox(0F, 0F, -5F, 5, 6, 4); - this.leg1.setPos(0F, 18F, 4F); - } - - @Override - protected Iterable headParts() { - return ImmutableList.of(this.head, this.beak, this.wattle); - } - - @Override - protected Iterable bodyParts() { - return ImmutableList.of(this.body, this.chest, this.leg0, this.leg1, this.wing0, this.wing1, this.plume); - } - - @Override - public void setupAnim(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { - this.chest.xRot = (headPitch * ((float)Math.PI / 180F)) + 0.7853982F; - this.chest.yRot = netHeadYaw * ((float)Math.PI / 180F); - this.head.xRot = this.chest.xRot - 0.7853982F; - this.head.yRot = this.chest.yRot; - this.beak.xRot = this.chest.xRot - 0.7853982F; - this.beak.yRot = this.chest.yRot; - this.wattle.xRot = this.chest.xRot - 0.7853982F; - this.wattle.yRot = this.chest.yRot; - this.leg0.xRot = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount; - this.leg1.xRot = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount; - this.wing0.zRot = ageInTicks; - this.wing1.zRot = -ageInTicks; - } - - @Override - public void renderToBuffer(MatrixStack matrixStackIn, IVertexBuilder bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) { - if (this.young) { - matrixStackIn.pushPose(); - if (this.scaleHead) { - float f = 1.5F / this.babyHeadScale; - matrixStackIn.scale(f, f, f); - } - - matrixStackIn.translate(0.0D, (double)(this.yHeadOffset / 16.0F), (double)(this.zHeadOffset / 16.0F)); - this.headParts().forEach((p_228230_8_) -> { - p_228230_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); - }); - matrixStackIn.popPose(); - matrixStackIn.pushPose(); - float f1 = 1.0F / this.babyBodyScale; - matrixStackIn.scale(f1, f1, f1); - matrixStackIn.translate(0.0D, (double)(this.bodyYOffset / 16.0F), 0.0D); - this.bodyParts().forEach((p_228229_8_) -> { - if (p_228229_8_ != this.plume) { p_228229_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); } - }); - matrixStackIn.popPose(); - } else { - this.headParts().forEach((p_228228_8_) -> { - p_228228_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); - }); - this.bodyParts().forEach((p_228227_8_) -> { - p_228227_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); - }); - } - } -} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entity/TurkeyRenderer.java b/src/main/java/biomesoplenty/common/entity/TurkeyRenderer.java deleted file mode 100644 index a45041c7a..000000000 --- a/src/main/java/biomesoplenty/common/entity/TurkeyRenderer.java +++ /dev/null @@ -1,27 +0,0 @@ -package biomesoplenty.common.entity; - -import net.minecraft.client.renderer.entity.EntityRendererManager; -import net.minecraft.client.renderer.entity.MobRenderer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -public class TurkeyRenderer extends MobRenderer> { - private static final ResourceLocation TURKEY_LOCATION = new ResourceLocation("biomesoplenty:textures/entity/turkey.png"); - - public TurkeyRenderer(EntityRendererManager renderManagerIn) { - super(renderManagerIn, new TurkeyModel<>(), 0.6F); - } - - public ResourceLocation getTextureLocation(TurkeyEntity entity) { - return TURKEY_LOCATION; - } - - protected float getBob(TurkeyEntity livingBase, float partialTicks) { - float f = MathHelper.lerp(partialTicks, livingBase.oFlap, livingBase.flap); - float f1 = MathHelper.lerp(partialTicks, livingBase.oFlapSpeed, livingBase.flapSpeed); - return (MathHelper.sin(f) + 1.0F) * f1; - } -} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java index 4b848bfda..9b65faec1 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java @@ -122,11 +122,13 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature JADE_CLIFFS_TREES = register("jade_cliffs_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE.weighted(0.075F), Features.PINE.weighted(0.025F)), SPRUCE_BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(35, 0.1F, 1)))); public static final ConfiguredFeature LAVENDER_FIELD_TREES = register("lavender_field_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FLOWERING_OAK_TREE_BEES.weighted(0.2F), BIG_FLOWERING_OAK_TREE.weighted(0.1F), BIG_JACARANDA_TREE.weighted(0.1F)), JACARANDA_TREE_BEES)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1)))); public static final ConfiguredFeature LUSH_DESERT_TREES = register("lush_desert_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(ACACIA_BUSH.weighted(0.4F), SPARSE_ACACIA_TREE.weighted(0.2F)), ACACIA_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.4F, 1)))); - public static final ConfiguredFeature MEADOW_TREES = register("meadow_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE_BEES.weighted(0.25F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.1F, 1)))); + public static final ConfiguredFeature MEADOW_TREES = register("meadow_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE_BEES.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.1F, 1)))); + public static final ConfiguredFeature MEADOW_FOREST_TREES = register("meadow_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.25F)), TALL_SPRUCE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(8, 0.1F, 1)))); public static final ConfiguredFeature MUSKEG_TREES = register("muskeg_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DARK_OAK_TWIGLET_TREE.weighted(0.4F), DEAD_TREE.weighted(0.3F), DYING_TREE.weighted(0.075F), DEAD_TWIGLET_TREE_TALL.weighted(0.1F)), DEAD_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1)))); public static final ConfiguredFeature MYSTIC_GROVE_TREES = register("mystic_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_FLOWERING_OAK_TREE.weighted(0.15F), JACARANDA_TREE.weighted(0.25F), BIG_MAGIC_TREE.weighted(0.3F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1)))); public static final ConfiguredFeature MYSTIC_PLAINS_TREES = register("mystic_plains_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FLOWERING_OAK_TREE.weighted(0.1F), JACARANDA_TREE.weighted(0.25F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1)))); - public static final ConfiguredFeature OMINOUS_WOODS_TREES = register("ominous_woods_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.05F), DYING_TREE.weighted(0.15F), WILLOW_TREE.weighted(0.15F), TALL_UMBRAN_TREE.weighted(0.7F)), UMBRAN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.5F, 1)))); + public static final ConfiguredFeature OMINOUS_WOODS_TREES = register("ominous_woods_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.05F), DYING_TREE.weighted(0.15F), TALL_UMBRAN_TREE.weighted(0.7F)), UMBRAN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.5F, 1)))); + public static final ConfiguredFeature OMINOUS_MIRE_TREES = register("ominous_mire_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.1F), DYING_TREE.weighted(0.2F), UMBRAN_TREE.weighted(0.4F)), WILLOW_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1)))); public static final ConfiguredFeature ORCHARD_TREES = register("orchard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_FLOWERING_OAK_TREE.weighted(0.1F)), FLOWERING_OAK_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.3F, 1)))); public static final ConfiguredFeature ORIGIN_VALLEY_TREES = register("origin_valley_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_ORIGIN_TREE.weighted(0.1F)), ORIGIN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(BOPPlacements.ALPHA_TREE.configured(NoPlacementConfig.INSTANCE))); public static final ConfiguredFeature OVERGROWN_FUNGAL_JUNGLE_TREES = register("overgrown_fungal_jungle_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(GIANT_TREE.weighted(0.04F), BIG_OAK_TREE.weighted(0.4F), Features.OAK.weighted(0.2F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(20, 0.6F, 1)))); @@ -135,14 +137,16 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature RAINFOREST_TREES = register("rainforest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.JUNGLE_TREE.weighted(0.1F)), MAHOGANY_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1)))); public static final ConfiguredFeature RAINFOREST_CLEARING_TREES = register("rainforest_clearing_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPARSE_OAK_TREE.weighted(0.3F), BIG_OAK_TREE.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1)))); public static final ConfiguredFeature RAINFOREST_CLIFFS_TREES = register("rainforest_cliffs_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(JUNGLE_TWIGLET_TREE.weighted(0.4F), MAHOGANY_TREE.weighted(0.05F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(20, 0.4F, 1)))); - public static final ConfiguredFeature REDWOOD_FOREST_EDGE_TREES = register("redwood_forest_edge_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(REDWOOD_TREE.weighted(0.3F), REDWOOD_TREE_MEDIUM.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.3F, 1)))); - public static final ConfiguredFeature REDWOOD_FOREST_TREES = register("redwood_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(REDWOOD_TREE.weighted(0.1F), REDWOOD_TREE_MEDIUM.weighted(0.3F), REDWOOD_TREE_LARGE.weighted(0.5F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(18, 0.2F, 1)))); + public static final ConfiguredFeature REDWOOD_FOREST_EDGE_TREES = register("redwood_forest_edge_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.OAK.weighted(0.2F), SPARSE_OAK_TREE.weighted(0.1F), REDWOOD_TREE.weighted(0.3F), REDWOOD_TREE_MEDIUM.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.3F, 1)))); + public static final ConfiguredFeature REDWOOD_FOREST_TREES = register("redwood_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.1F), REDWOOD_TREE.weighted(0.3F), REDWOOD_TREE_LARGE.weighted(0.5F)), REDWOOD_TREE_MEDIUM)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(18, 0.2F, 1)))); + public static final ConfiguredFeature REDWOOD_HILLS_TREES = register("redwood_hills_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.1F), REDWOOD_TREE_MEDIUM.weighted(0.3F)), REDWOOD_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(24, 0.2F, 1)))); public static final ConfiguredFeature SEASONAL_FOREST_TREES = register("seasonal_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.OAK.weighted(0.05F), BIG_OAK_TREE.weighted(0.025F), MAPLE_TREE.weighted(0.2F), YELLOW_AUTUMN_TREE.weighted(0.3F), BIG_MAPLE_TREE.weighted(0.1F), BIG_YELLOW_AUTUMN_TREE.weighted(0.1F), BIG_ORANGE_AUTUMN_TREE.weighted(0.1F)), ORANGE_AUTUMN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.3F, 1)))); public static final ConfiguredFeature SEASONAL_PUMPKIN_PATCH_TREES = register("seasonal_pumpkin_patch_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.2F), YELLOW_AUTUMN_TREE.weighted(0.1F), BIG_YELLOW_AUTUMN_TREE.weighted(0.05F)), TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.5F, 1)))); public static final ConfiguredFeature SHROOMY_WETLAND_TREES = register("shroomy_wetland_trees", DARK_OAK_TWIGLET_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.1F, 1)))); public static final ConfiguredFeature SHRUBLAND_TREES = register("shrubland_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.05F, 1)))); public static final ConfiguredFeature SHRUBLAND_HILLS_TREES = register("shrubland_hills_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.05F, 1)))); public static final ConfiguredFeature SILKGLADE_TREES = register("silkglade_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.SWAMP_TREE.weighted(0.05F), BIRCH_POPLAR.weighted(0.15F), COBWEB_BUSH.weighted(0.2F), SMALL_DEAD_TREE.weighted(0.5F), SILK_TREE.weighted(0.2F), FULL_COBWEB_BUSH.weighted(0.05F), FULL_SILK_TREE.weighted(0.05F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.4F, 1)))); + public static final ConfiguredFeature SILKGLADE_NEST_TREES = register("silkglade_nest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(COBWEB_BUSH.weighted(0.3F), SMALL_DEAD_TREE.weighted(0.1F), SILK_TREE.weighted(0.3F), FULL_COBWEB_BUSH.weighted(0.2F), FULL_SILK_TREE.weighted(0.2F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(25, 0.5F, 1)))); public static final ConfiguredFeature SNOWY_CONIFEROUS_FOREST_TREES = register("snowy_coniferous_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.4F), MAPLE_TREE.weighted(0.1F)), FIR_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.1F, 1)))); public static final ConfiguredFeature SNOWY_MAPLE_FOREST_TREES = register("snowy_maple_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.025F), FIR_TREE_SMALL.weighted(0.1F), BIG_MAPLE_TREE.weighted(0.3F)), MAPLE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.1F, 1)))); public static final ConfiguredFeature TROPICS_TREES = register("tropics_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(JUNGLE_TWIGLET_TREE.weighted(0.3F), FLOWERING_BUSH.weighted(0.1F)), PALM_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(11, 0.2F, 1)))); @@ -191,10 +195,8 @@ public class BOPConfiguredFeatures public static final ConfiguredFeature FERN_GRASS_8 = register("fern_grass_8", BOPFeatures.FERN_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(8))); public static final ConfiguredFeature FERN_GRASS_16 = register("fern_grass_16", BOPFeatures.FERN_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(16))); - public static final ConfiguredFeature WASTELAND_GRASS_1 = register("wasteland_grass_1", BOPFeatures.WASTELAND_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); public static final ConfiguredFeature WASTELAND_GRASS_2 = register("wasteland_grass_2", BOPFeatures.WASTELAND_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(2))); - public static final ConfiguredFeature BUSH_5 = register("bush_5", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); public static final ConfiguredFeature BUSH_10 = register("bush_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); public static final ConfiguredFeature BUSH_15 = register("bush_15", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(15))); public static final ConfiguredFeature BUSH_50 = register("bush_50", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50))); @@ -278,9 +280,11 @@ public class BOPConfiguredFeatures // Features public static final ConfiguredFeature BIG_PUMPKIN = register("big_pumpkin", BOPFeatures.BIG_PUMPKIN.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); public static final ConfiguredFeature BLACK_SANDSTONE_COLUMN = register("black_sandstone_column", BOPFeatures.BLACK_SANDSTONE_COLUMN.configured(new ColumnConfig(FeatureSpread.fixed(1), FeatureSpread.of(1, 3))).decorated(Placement.COUNT_MULTILAYER.configured(new FeatureSpreadConfig(2))).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); - public static final ConfiguredFeature BLACK_SAND_DISK = register("black_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.black_sand.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(4)); + public static final ConfiguredFeature BLACK_SAND_DISK = register("black_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.black_sand.defaultBlockState(), FeatureSpread.of(2, 4), 2, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(2)); public static final ConfiguredFeature BONE_SPINE = register("bone_spine", BOPFeatures.BONE_SPINE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); public static final ConfiguredFeature BRAMBLE = register("bramble", BOPFeatures.BRAMBLE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature BRAMBLE_EXTRA = register("bramble_extra", BOPFeatures.BRAMBLE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature CRAG_SPLATTER = register("crag_splatter", BOPFeatures.CRAG_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(128))); public static final ConfiguredFeature DENSE_BAYOU_VINES = register("dense_bayou_vines", BOPFeatures.DENSE_BAYOU_VINES.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(128)); public static final ConfiguredFeature FLESH_TENDON = register("flesh_tendon", BOPFeatures.FLESH_TENDON.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(65))); public static final ConfiguredFeature GRAVEL_DISK_EXTRA = register("gravel_disk_extra", Feature.DISK.configured(new SphereReplaceConfig(Blocks.GRAVEL.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(6)); diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java index 8f92f9721..17212bb26 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java @@ -116,6 +116,7 @@ public class BOPFeatures public static final Feature BIG_PUMPKIN = register("big_pumpkin", new BigPumpkinFeature(NoFeatureConfig.CODEC)); public static final Feature BONE_SPINE = register("bone_spine", new BoneSpineFeature(NoFeatureConfig.CODEC)); public static final Feature BRAMBLE = register("bramble", new BrambleFeature(NoFeatureConfig.CODEC)); + public static final Feature CRAG_SPLATTER = register("crag_splatter", new CragSplatterFeature(NoFeatureConfig.CODEC)); public static final Feature DENSE_BAYOU_VINES = register("dense_bayou_vines", new DenseBayouVinesFeature(NoFeatureConfig.CODEC)); public static final Feature FERN_GRASS = register("fern_grass", new FernGrassFeature(NoFeatureConfig.CODEC)); public static final Feature FLESH_TENDON = register("flesh_tendon", new FleshTendonFeature(NoFeatureConfig.CODEC)); diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/CragSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/CragSplatterFeature.java new file mode 100644 index 000000000..2ea4ddc98 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/CragSplatterFeature.java @@ -0,0 +1,89 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class CragSplatterFeature extends Feature +{ + public CragSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(8 - 2) + 2; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + BlockState blockstate1 = worldIn.getBlockState(blockpos.above()); + + if ((blockstate.getBlock() == Blocks.STONE || blockstate.getBlock() == Blocks.GRAVEL || blockstate.getBlock() == Blocks.ANDESITE || blockstate.getBlock() == Blocks.DIORITE || blockstate.getBlock() == Blocks.GRANITE || blockstate.getBlock() == Blocks.DIRT)) + { + switch (rand.nextInt(14)) + { + default: + case 0: + case 1: + case 2: + worldIn.setBlock(blockpos, Blocks.COBBLESTONE.defaultBlockState(), 2); + break; + + case 3: + case 4: + case 5: + worldIn.setBlock(blockpos, Blocks.GRAVEL.defaultBlockState(), 2); + break; + + case 6: + case 7: + worldIn.setBlock(blockpos, Blocks.MOSSY_COBBLESTONE.defaultBlockState(), 2); + break; + + case 8: + case 9: + worldIn.setBlock(blockpos, Blocks.ANDESITE.defaultBlockState(), 2); + break; + + case 10: + if (blockstate1.isAir(worldIn, blockpos.above())) + { + worldIn.setBlock(blockpos, Blocks.GRASS_BLOCK.defaultBlockState(), 2); + worldIn.setBlock(blockpos.above(), Blocks.GRASS.defaultBlockState(), 2); + + } + break; + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/HugeToadstoolFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/HugeToadstoolFeature.java index e83dd1f4b..dc92f5c2e 100644 --- a/src/main/java/biomesoplenty/common/world/gen/feature/HugeToadstoolFeature.java +++ b/src/main/java/biomesoplenty/common/world/gen/feature/HugeToadstoolFeature.java @@ -85,9 +85,9 @@ public class HugeToadstoolFeature extends Feature { for (int y = 0; y <= 8; y++) { - for (int x = -1; x <= 1; x++) + for (int x = -2; x <= 2; x++) { - for (int z = -1; z <= 1; z++) + for (int z = -2; z <= 2; z++) { BlockPos pos1 = pos.offset(x, y, z); if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java index a0c0d2a07..d5db2b428 100644 --- a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java @@ -23,7 +23,6 @@ public class BOPSurfaceBuilders public static final SurfaceBuilderConfig TERRACOTTA_SURFACE = new SurfaceBuilderConfig(Blocks.TERRACOTTA.defaultBlockState(), Blocks.TERRACOTTA.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); public static final SurfaceBuilderConfig MAGMA_SURFACE = new SurfaceBuilderConfig(Blocks.MAGMA_BLOCK.defaultBlockState(), Blocks.MAGMA_BLOCK.defaultBlockState(), Blocks.BASALT.defaultBlockState()); public static final SurfaceBuilderConfig MUD_SURFACE = new SurfaceBuilderConfig(BOPBlocks.mud.defaultBlockState(), BOPBlocks.mud.defaultBlockState(), BOPBlocks.mud.defaultBlockState()); - public static final SurfaceBuilderConfig RED_SAND_SURFACE = new SurfaceBuilderConfig(Blocks.RED_SAND.defaultBlockState(), Blocks.RED_SAND.defaultBlockState(), Blocks.RED_SAND.defaultBlockState()); public static final SurfaceBuilderConfig SNOW_SNOW_GRAVEL_SURFACE = new SurfaceBuilderConfig(Blocks.SNOW_BLOCK.defaultBlockState(), Blocks.SNOW_BLOCK.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); public static final SurfaceBuilderConfig WHITE_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.white_sand.defaultBlockState(), BOPBlocks.white_sand.defaultBlockState(), BOPBlocks.white_sand.defaultBlockState()); public static final SurfaceBuilderConfig ORANGE_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.orange_sand.defaultBlockState(), BOPBlocks.orange_sand.defaultBlockState(), BOPBlocks.orange_sand.defaultBlockState()); @@ -32,6 +31,7 @@ public class BOPSurfaceBuilders public static final SurfaceBuilderConfig DRIED_SALT_SURFACE = new SurfaceBuilderConfig(BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState()); public static final SurfaceBuilderConfig ORIGIN_GRASS_SURFACE = new SurfaceBuilderConfig(BOPBlocks.origin_grass_block.defaultBlockState(), Blocks.DIRT.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + public static final SurfaceBuilder HIGHLAND_CRAG = register("highland_crag", new HighlandCragSurfaceBuilder(SurfaceBuilderConfig.CODEC)); public static final SurfaceBuilder EXPOSED_STONE = register("exposed_stone", new ExposedStoneSurfaceBuilder(SurfaceBuilderConfig.CODEC)); public static final SurfaceBuilder TERRACOTTA = register("terracotta", new TerracottaSurfaceBuilder(SurfaceBuilderConfig.CODEC)); public static final SurfaceBuilder MARSH = register("marsh", new MarshSurfaceBuilder(SurfaceBuilderConfig.CODEC)); diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/HighlandCragSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/HighlandCragSurfaceBuilder.java new file mode 100644 index 000000000..e264fb365 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/HighlandCragSurfaceBuilder.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class HighlandCragSurfaceBuilder extends SurfaceBuilder +{ + public HighlandCragSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + if (noise > 1.9D) { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRAVEL); + } else { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_STONE); + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPBiomeEdgeLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPBiomeEdgeLayer.java index 543fc19a1..c2cd5f3af 100644 --- a/src/main/java/biomesoplenty/common/world/layer/BOPBiomeEdgeLayer.java +++ b/src/main/java/biomesoplenty/common/world/layer/BOPBiomeEdgeLayer.java @@ -49,6 +49,7 @@ public enum BOPBiomeEdgeLayer implements ICastleTransformer // line BOP redwood forest with BOP redwood forest edge if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.redwood_forest, BOPBiomes.redwood_forest_edge)) { return outBiomeId[0]; } + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.redwood_hills, BOPBiomes.redwood_forest_edge)) { return outBiomeId[0]; } // line BOP volcano with BOP volcanic plains if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.volcano, BOPBiomes.volcanic_plains)) { return outBiomeId[0]; } diff --git a/src/main/java/biomesoplenty/core/BiomesOPlenty.java b/src/main/java/biomesoplenty/core/BiomesOPlenty.java index e13eb4e99..336617c08 100644 --- a/src/main/java/biomesoplenty/core/BiomesOPlenty.java +++ b/src/main/java/biomesoplenty/core/BiomesOPlenty.java @@ -51,13 +51,11 @@ public class BiomesOPlenty private void commonSetup(final FMLCommonSetupEvent event) { - ModEntities.setup(); ModVanillaCompat.setup(); } private void clientSetup(final FMLClientSetupEvent event) { - ModEntities.registerRendering(); } private void loadComplete(final FMLLoadCompleteEvent event) // PostRegistrationEven diff --git a/src/main/java/biomesoplenty/init/ModBiomes.java b/src/main/java/biomesoplenty/init/ModBiomes.java index 7d37cc776..6990c6825 100644 --- a/src/main/java/biomesoplenty/init/ModBiomes.java +++ b/src/main/java/biomesoplenty/init/ModBiomes.java @@ -142,16 +142,20 @@ public class ModBiomes registerBiome(new GoldenPrairieBiome(), "golden_prairie"); registerBiome(new GroveBiome(), "grove"); registerBiome(new HighlandBiome(), "highland"); + registerBiome(new HighlandCragBiome(), "highland_crag"); registerBiome(new HighlandMoorBiome(), "highland_moor"); registerBiome(new JadeCliffsBiome(), "jade_cliffs"); + registerBiome(new JadeGrasslandBiome(), "jade_grassland"); registerBiome(new LavenderFieldBiome(), "lavender_field"); registerBiome(new LushDesertBiome(), "lush_desert"); registerBiome(new LushSavannaBiome(), "lush_savanna"); registerBiome(new MeadowBiome(), "meadow"); + registerBiome(new MeadowForestBiome(), "meadow_forest"); registerBiome(new MuskegBiome(), "muskeg"); registerBiome(new MysticGroveBiome(), "mystic_grove"); registerBiome(new MysticPlainsBiome(), "mystic_plains"); registerBiome(new OminousWoodsBiome(), "ominous_woods"); + registerBiome(new OminousMireBiome(), "ominous_mire"); registerBiome(new OriginValleyBiome(), "origin_valley"); registerBiome(new OvergrownFungalJungleBiome(), "overgrown_fungal_jungle"); registerBiome(new PrairieBiome(), "prairie"); @@ -160,12 +164,14 @@ public class ModBiomes registerBiome(new RainforestClearingBiome(), "rainforest_clearing"); registerBiome(new RainforestCliffsBiome(), "rainforest_cliffs"); registerBiome(new RedwoodForestBiome(), "redwood_forest"); + registerBiome(new RedwoodHillsBiome(), "redwood_hills"); registerBiome(new SeasonalForestBiome(), "seasonal_forest"); registerBiome(new SeasonalPumpkinPatchBiome(), "seasonal_pumpkin_patch"); registerBiome(new ShroomyWetlandBiome(), "shroomy_wetland"); registerBiome(new ShrublandBiome(), "shrubland"); registerBiome(new ShrublandHillsBiome(), "shrubland_hills"); registerBiome(new SilkgladeBiome(), "silkglade"); + registerBiome(new SilkgladeNestBiome(), "silkglade_nest"); registerBiome(new SnowyConiferousForestBiome(), "snowy_coniferous_forest"); registerBiome(new SnowyMapleForestBiome(), "snowy_maple_forest"); registerBiome(new SnowyFirClearingBiome(), "snowy_fir_clearing"); @@ -200,23 +206,33 @@ public class ModBiomes registerSubBiome(fungal_jungle, overgrown_fungal_jungle, 0.8F, 100); + registerSubBiome(highland, highland_crag, 1.25F, 100); registerSubBiome(highland, highland_moor, 0.75F, 100); + registerSubBiome(jade_cliffs, jade_grassland, 0.85F, 100); + registerSubBiome(lush_desert, lush_savanna, 0.65F, 100); - registerSubBiome(meadow, flower_meadow, 0.5F, 100); + registerSubBiome(meadow, flower_meadow, 1.0F, 100); + registerSubBiome(meadow, meadow_forest, 1.0F, 100); registerSubBiome(mystic_grove, mystic_plains, 0.75F, 100); + registerSubBiome(ominous_woods, ominous_mire, 0.75F, 100); + registerSubBiome(prairie, golden_prairie, 1.0F, 100); registerSubBiome(rainforest, rainforest_cliffs, 2.0F, 100); registerSubBiome(rainforest, rainforest_clearing, 2.0F, 100); + registerSubBiome(redwood_forest, redwood_hills, 0.75F, 100); + registerSubBiome(seasonal_forest, seasonal_pumpkin_patch, 0.45F, 100); registerSubBiome(shrubland, shrubland_hills, 0.75F, 100); + registerSubBiome(silkglade, silkglade_nest, 0.45F, 100); + registerSubBiome(snowy_coniferous_forest, snowy_fir_clearing, 0.75F, 100); registerSubBiome(snowy_coniferous_forest, snowy_maple_forest, 1.25F, 100); @@ -256,8 +272,8 @@ public class ModBiomes registerVanillaBiome(Biomes.TAIGA, BOPClimates.WET_BOREAL, 10); registerVanillaBiome(Biomes.GIANT_TREE_TAIGA, BOPClimates.DRY_BOREAL, 5); registerVanillaBiome(Biomes.DARK_FOREST, BOPClimates.WET_TEMPERATE, 5); + registerVanillaBiome(Biomes.BIRCH_FOREST, BOPClimates.DRY_TEMPERATE, 5); registerVanillaBiome(Biomes.FOREST, BOPClimates.COOL_TEMPERATE, 10); - registerVanillaBiome(Biomes.BIRCH_FOREST, BOPClimates.COOL_TEMPERATE, 7); registerVanillaBiome(Biomes.PLAINS, BOPClimates.WARM_TEMPERATE, 10); registerVanillaBiome(Biomes.SWAMP, BOPClimates.SUBTROPICAL, 7); registerVanillaBiome(Biomes.LUKEWARM_OCEAN, BOPClimates.SUBTROPICAL, 3); @@ -300,16 +316,19 @@ public class ModBiomes registerVillagerType(gravel_beach, VillagerType.PLAINS); registerVillagerType(grove, VillagerType.PLAINS); registerVillagerType(highland, VillagerType.PLAINS); + registerVillagerType(highland_crag, VillagerType.PLAINS); registerVillagerType(highland_moor, VillagerType.PLAINS); registerVillagerType(jade_cliffs, VillagerType.PLAINS); registerVillagerType(lavender_field, VillagerType.PLAINS); registerVillagerType(lush_desert, VillagerType.SAVANNA); registerVillagerType(lush_savanna, VillagerType.SAVANNA); registerVillagerType(meadow, VillagerType.TAIGA); + registerVillagerType(meadow_forest, VillagerType.TAIGA); registerVillagerType(muskeg, VillagerType.SNOW); registerVillagerType(mystic_grove, VillagerType.PLAINS); registerVillagerType(mystic_plains, VillagerType.PLAINS); registerVillagerType(ominous_woods, VillagerType.SWAMP); + registerVillagerType(ominous_mire, VillagerType.SWAMP); registerVillagerType(orchard, VillagerType.PLAINS); registerVillagerType(origin_valley, VillagerType.PLAINS); registerVillagerType(overgrown_fungal_jungle, VillagerType.JUNGLE); @@ -320,12 +339,14 @@ public class ModBiomes registerVillagerType(rainforest_cliffs, VillagerType.JUNGLE); registerVillagerType(redwood_forest, VillagerType.PLAINS); registerVillagerType(redwood_forest_edge, VillagerType.PLAINS); + registerVillagerType(redwood_hills, VillagerType.PLAINS); registerVillagerType(seasonal_forest, VillagerType.PLAINS); registerVillagerType(seasonal_pumpkin_patch, VillagerType.PLAINS); registerVillagerType(shroomy_wetland, VillagerType.SWAMP); registerVillagerType(shrubland, VillagerType.PLAINS); registerVillagerType(shrubland_hills, VillagerType.PLAINS); registerVillagerType(silkglade, VillagerType.SWAMP); + registerVillagerType(silkglade_nest, VillagerType.SWAMP); registerVillagerType(snowy_coniferous_forest, VillagerType.SNOW); registerVillagerType(snowy_fir_clearing, VillagerType.SNOW); registerVillagerType(snowy_maple_forest, VillagerType.SNOW); diff --git a/src/main/java/biomesoplenty/init/ModEntities.java b/src/main/java/biomesoplenty/init/ModEntities.java index 508f24fb0..9f7bc1327 100644 --- a/src/main/java/biomesoplenty/init/ModEntities.java +++ b/src/main/java/biomesoplenty/init/ModEntities.java @@ -7,85 +7,5 @@ ******************************************************************************/ package biomesoplenty.init; -import biomesoplenty.common.entity.DeerEntity; -import biomesoplenty.common.entity.DeerRenderer; -import biomesoplenty.common.entity.TurkeyEntity; -import biomesoplenty.common.entity.TurkeyRenderer; -import biomesoplenty.common.util.inventory.ItemGroupBOP; -import biomesoplenty.core.BiomesOPlenty; -import com.google.common.collect.Lists; -import net.minecraft.entity.EntityClassification; -import net.minecraft.entity.EntitySpawnPlacementRegistry; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.ai.attributes.GlobalEntityTypeAttributes; -import net.minecraft.entity.passive.AnimalEntity; -import net.minecraft.item.Item; -import net.minecraft.item.SpawnEggItem; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.gen.Heightmap; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.client.registry.RenderingRegistry; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.registries.ForgeRegistries; - -import java.util.List; - -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) -public class ModEntities -{ - private static List entities = Lists.newArrayList(); - private static List spawnEggs = Lists.newArrayList(); - - public static EntityType deer = addEntity(DeerEntity::new, EntityClassification.CREATURE, 1.0F, 1.6F, "deer", 0x765134, 0xF7EFE6); - public static EntityType turkey = addEntity(TurkeyEntity::new, EntityClassification.CREATURE, 0.9F, 1.4F, "turkey", 0x6B492E, 0xE23131); - - public static EntityType addEntity(EntityType.IFactory type, EntityClassification classification, float width, float height, String name, int eggPrimary, int eggSecondary) - { - EntityType entity = EntityType.Builder.of(type, classification).sized(width, height).build(BiomesOPlenty.MOD_ID + ":" + name); - entity.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name)); - entities.add(entity); - - Item spawnEgg = new SpawnEggItem(entity, eggPrimary, eggSecondary, (new Item.Properties()).tab(ItemGroupBOP.instance)); - spawnEgg.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name + "_spawn_egg")); - spawnEggs.add(spawnEgg); - - return entity; - } - - @SubscribeEvent - public static void registerEntities(RegistryEvent.Register> event) - { - for (EntityType entity : entities) - { - ForgeRegistries.ENTITIES.register(entity); - } - } - - @SubscribeEvent - public static void registerSpawnEggs(RegistryEvent.Register event) - { - for (Item spawnEgg : spawnEggs) - { - ForgeRegistries.ITEMS.register(spawnEgg); - } - } - - @OnlyIn(Dist.CLIENT) - public static void registerRendering() - { - RenderingRegistry.registerEntityRenderingHandler(deer, DeerRenderer::new); - RenderingRegistry.registerEntityRenderingHandler(turkey, TurkeyRenderer::new); - } - - public static void setup() - { - EntitySpawnPlacementRegistry.register(deer, EntitySpawnPlacementRegistry.PlacementType.ON_GROUND, Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, DeerEntity::checkAnimalSpawnRules); - EntitySpawnPlacementRegistry.register(turkey, EntitySpawnPlacementRegistry.PlacementType.ON_GROUND, Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, TurkeyEntity::checkAnimalSpawnRules); - - GlobalEntityTypeAttributes.put(deer, DeerEntity.createAttributes().build()); - GlobalEntityTypeAttributes.put(turkey, TurkeyEntity.createAttributes().build()); - } +public class ModEntities { } diff --git a/src/main/java/biomesoplenty/init/ModItems.java b/src/main/java/biomesoplenty/init/ModItems.java index 382cf79df..fb15549ad 100644 --- a/src/main/java/biomesoplenty/init/ModItems.java +++ b/src/main/java/biomesoplenty/init/ModItems.java @@ -25,10 +25,6 @@ import static biomesoplenty.api.item.BOPItems.*; @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public class ModItems { - public static final Food VENISON = (new Food.Builder()).nutrition(3).saturationMod(0.3F).meat().build(); - public static final Food COOKED_VENISON = (new Food.Builder()).nutrition(8).saturationMod(0.8F).meat().build(); - public static final Food TURKEY_LEG = (new Food.Builder()).nutrition(1).saturationMod(0.15F).effect(new EffectInstance(Effects.HUNGER, 600, 0), 0.3F).meat().build(); - public static final Food COOKED_TURKEY_LEG = (new Food.Builder()).nutrition(3).saturationMod(0.3F).meat().build(); @SubscribeEvent public static void registerItems(RegistryEvent.Register event) @@ -50,11 +46,6 @@ public class ModItems umbran_boat = registerItem(new BoatItem(BoatEntity.Type.OAK, (new Item.Properties()).stacksTo(1).tab(ItemGroupBOP.instance)), "umbran_boat"); hellbark_boat = registerItem(new BoatItem(BoatEntity.Type.OAK, (new Item.Properties()).stacksTo(1).tab(ItemGroupBOP.instance)), "hellbark_boat"); - venison = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance).food(VENISON)), "venison"); - cooked_venison = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance).food(COOKED_VENISON)), "cooked_venison"); - turkey_leg = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance).food(TURKEY_LEG)), "turkey_leg"); - cooked_turkey_leg = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance).food(COOKED_TURKEY_LEG)), "cooked_turkey_leg"); - bop_icon = registerItem(new Item(new Item.Properties()), "bop_icon"); } diff --git a/src/main/java/biomesoplenty/init/ModSounds.java b/src/main/java/biomesoplenty/init/ModSounds.java index 12ee3b30b..b311bda63 100644 --- a/src/main/java/biomesoplenty/init/ModSounds.java +++ b/src/main/java/biomesoplenty/init/ModSounds.java @@ -26,13 +26,6 @@ public class ModSounds public static void registerSounds(RegistryEvent.Register event) { music_disc_wanderer = registerSound("music_disc.wanderer"); - deer_hurt = registerSound("entity.biomesoplenty.deer.hurt"); - deer_dead = registerSound("entity.biomesoplenty.deer.dead"); - deer_step = SoundEvents.LLAMA_STEP; - turkey_ambient = registerSound("entity.biomesoplenty.turkey.ambient"); - turkey_hurt = registerSound("entity.biomesoplenty.turkey.hurt"); - turkey_dead = registerSound("entity.biomesoplenty.turkey.dead"); - turkey_step = SoundEvents.CHICKEN_STEP; } private static SoundEvent registerSound(String soundName) diff --git a/src/main/resources/assets/biomesoplenty/lang/en_us.json b/src/main/resources/assets/biomesoplenty/lang/en_us.json index f8d5cfab2..f109999fa 100644 --- a/src/main/resources/assets/biomesoplenty/lang/en_us.json +++ b/src/main/resources/assets/biomesoplenty/lang/en_us.json @@ -18,7 +18,6 @@ "biome.biomesoplenty.coniferous_lakes": "Coniferous Lakes", "biome.biomesoplenty.crystalline_chasm": "Crystalline Chasm", "biome.biomesoplenty.dead_forest": "Dead Forest", - "biome.biomesoplenty.dead_plains": "Dead Plains", "biome.biomesoplenty.dense_bayou": "Dense Bayou", "biome.biomesoplenty.dryland": "Dryland", "biome.biomesoplenty.dry_steppe": "Dry Steppe", @@ -29,15 +28,19 @@ "biome.biomesoplenty.gravel_beach": "Gravel Beach", "biome.biomesoplenty.grove": "Grove", "biome.biomesoplenty.highland": "Highland", + "biome.biomesoplenty.highland_crag": "Highland Crag", "biome.biomesoplenty.highland_moor": "Highland Moor", "biome.biomesoplenty.jade_cliffs": "Jade Cliffs", + "biome.biomesoplenty.jade_grassland": "Jade Grassland", "biome.biomesoplenty.lavender_field": "Lavender Field", "biome.biomesoplenty.lush_desert": "Lush Desert", "biome.biomesoplenty.lush_savanna": "Lush Savanna", "biome.biomesoplenty.meadow": "Meadow", + "biome.biomesoplenty.meadow_forest": "Meadow Forest", "biome.biomesoplenty.muskeg": "Muskeg", "biome.biomesoplenty.mystic_grove": "Mystic Grove", "biome.biomesoplenty.mystic_plains": "Mystic Plains", + "biome.biomesoplenty.ominous_mire": "Ominous Mire", "biome.biomesoplenty.ominous_woods": "Ominous Woods", "biome.biomesoplenty.orchard": "Orchard", "biome.biomesoplenty.origin_valley": "Origin Valley", @@ -49,12 +52,14 @@ "biome.biomesoplenty.rainforest_cliffs": "Rainforest Cliffs", "biome.biomesoplenty.redwood_forest": "Redwood Forest", "biome.biomesoplenty.redwood_forest_edge": "Redwood Forest Edge", + "biome.biomesoplenty.redwood_hills": "Redwood Hills", "biome.biomesoplenty.seasonal_forest": "Seasonal Forest", "biome.biomesoplenty.seasonal_pumpkin_patch": "Seasonal Pumpkin Patch", "biome.biomesoplenty.shroomy_wetland": "Shroomy Wetland", "biome.biomesoplenty.shrubland": "Shrubland", "biome.biomesoplenty.shrubland_hills": "Shrubland Hills", "biome.biomesoplenty.silkglade": "Silkglade", + "biome.biomesoplenty.silkglade_nest": "Silkglade Nest", "biome.biomesoplenty.snowy_coniferous_forest": "Snowy Coniferous Forest", "biome.biomesoplenty.snowy_fir_clearing": "Snowy Fir Clearing", "biome.biomesoplenty.snowy_maple_forest": "Snowy Maple Forest", @@ -74,10 +79,7 @@ "item.biomesoplenty.bop_icon": "BOP Icon", "item.biomesoplenty.cherry_boat": "Cherry Boat", - "item.biomesoplenty.cooked_turkey_leg": "Cooked Turkey Leg", - "item.biomesoplenty.cooked_venison": "Cooked Venison", "item.biomesoplenty.dead_boat": "Dead Boat", - "item.biomesoplenty.deer_spawn_egg": "Deer Spawn Egg", "item.biomesoplenty.fir_boat": "Fir Boat", "item.biomesoplenty.hellbark_boat": "Hellbark Boat", "item.biomesoplenty.jacaranda_boat": "Jacaranda Boat", @@ -89,10 +91,7 @@ "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", "item.biomesoplenty.palm_boat": "Palm Boat", "item.biomesoplenty.redwood_boat": "Redwood Boat", - "item.biomesoplenty.turkey_leg": "Raw Turkey Leg", - "item.biomesoplenty.turkey_spawn_egg": "Turkey Spawn Egg", "item.biomesoplenty.umbran_boat": "Umbran Boat", - "item.biomesoplenty.venison": "Raw Venison", "item.biomesoplenty.willow_boat": "Willow Boat", "block.biomesoplenty.black_sand": "Black Sand", @@ -404,7 +403,5 @@ "commands.biomesoplenty.tpbiome.success": "Teleported %s to biome %s at (%s, %s, %s)", "commands.biomesoplenty.tpbiome.error": "Couldn't find biome %s!", - "entity.biomesoplenty.boat_bop": "Boat", - "entity.biomesoplenty.deer": "Deer", - "entity.biomesoplenty.turkey": "Turkey" + "entity.biomesoplenty.boat_bop": "Boat" } \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/cooked_turkey_leg.json b/src/main/resources/assets/biomesoplenty/models/item/cooked_turkey_leg.json deleted file mode 100644 index 65722ea92..000000000 --- a/src/main/resources/assets/biomesoplenty/models/item/cooked_turkey_leg.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "biomesoplenty:item/cooked_turkey_leg" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/cooked_venison.json b/src/main/resources/assets/biomesoplenty/models/item/cooked_venison.json deleted file mode 100644 index 734f70a03..000000000 --- a/src/main/resources/assets/biomesoplenty/models/item/cooked_venison.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "biomesoplenty:item/cooked_venison" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/deer_spawn_egg.json b/src/main/resources/assets/biomesoplenty/models/item/deer_spawn_egg.json deleted file mode 100644 index 765225c94..000000000 --- a/src/main/resources/assets/biomesoplenty/models/item/deer_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "item/template_spawn_egg" -} diff --git a/src/main/resources/assets/biomesoplenty/models/item/turkey_leg.json b/src/main/resources/assets/biomesoplenty/models/item/turkey_leg.json deleted file mode 100644 index a2c9b63a3..000000000 --- a/src/main/resources/assets/biomesoplenty/models/item/turkey_leg.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "biomesoplenty:item/turkey_leg" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/turkey_spawn_egg.json b/src/main/resources/assets/biomesoplenty/models/item/turkey_spawn_egg.json deleted file mode 100644 index 765225c94..000000000 --- a/src/main/resources/assets/biomesoplenty/models/item/turkey_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "item/template_spawn_egg" -} diff --git a/src/main/resources/assets/biomesoplenty/models/item/venison.json b/src/main/resources/assets/biomesoplenty/models/item/venison.json deleted file mode 100644 index 89db09d1c..000000000 --- a/src/main/resources/assets/biomesoplenty/models/item/venison.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "biomesoplenty:item/venison" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/sounds.json b/src/main/resources/assets/biomesoplenty/sounds.json index c3a0ee861..64f224cf5 100644 --- a/src/main/resources/assets/biomesoplenty/sounds.json +++ b/src/main/resources/assets/biomesoplenty/sounds.json @@ -6,30 +6,5 @@ "stream": true } ] - }, - "entity.biomesoplenty.turkey.ambient": { - "sounds": [ - "biomesoplenty:entity/turkey/ambient" - ] - }, - "entity.biomesoplenty.turkey.hurt": { - "sounds": [ - "biomesoplenty:entity/turkey/hurt" - ] - }, - "entity.biomesoplenty.turkey.dead": { - "sounds": [ - "biomesoplenty:entity/turkey/dead" - ] - }, - "entity.biomesoplenty.deer.hurt": { - "sounds": [ - "biomesoplenty:entity/deer/hurt" - ] - }, - "entity.biomesoplenty.deer.dead": { - "sounds": [ - "biomesoplenty:entity/deer/dead" - ] } } \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/sounds/entity/deer/dead.ogg b/src/main/resources/assets/biomesoplenty/sounds/entity/deer/dead.ogg deleted file mode 100644 index 1441985459d224e416f2db32eca09c33437290c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14255 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 diff --git a/src/main/resources/assets/biomesoplenty/sounds/entity/deer/hurt.ogg b/src/main/resources/assets/biomesoplenty/sounds/entity/deer/hurt.ogg deleted file mode 100644 index 5379936c8ed0c9d6d4c19f67e8c036092c6bdf24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9667 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 F{2vJjzx@CJ diff --git a/src/main/resources/assets/biomesoplenty/sounds/entity/turkey/ambient.ogg b/src/main/resources/assets/biomesoplenty/sounds/entity/turkey/ambient.ogg deleted file mode 100644 index 5b04744e2af2f35f8bb50bfacc1ab3a374d488fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14432 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 NOX>e*m+^j_m*d diff --git a/src/main/resources/assets/biomesoplenty/sounds/entity/turkey/dead.ogg b/src/main/resources/assets/biomesoplenty/sounds/entity/turkey/dead.ogg deleted file mode 100644 index 95ff25d5fe64a730d49cb7466d59858814b31ff3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9356 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 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/deer.png b/src/main/resources/assets/biomesoplenty/textures/entity/deer.png deleted file mode 100644 index 902704b389a77cd6cd9cf4100ffa241935b31f17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2182 zcmV;12zmF3P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY2pdU6K~#8N?V4YR zRYe@f&#o4js|8YPFBSSwK~iKPruk4&5D{od)PwbuNt3-B3^Q}i%$zy%{mpM?&b?ig zN+nCN=#J|uJ!8+yjt%~m5d-PRmM;zI3op4W#J?Tb7vf3N=XQle9iEzVW2I;O_>ew! zZ8Yj_1#*P~kV%V{D zYc+L>)U`Yi|H^BogdjsW6Y#8NpT{_85|p9S$`?^+0RE76Jrv=m&X^Gb>2^W?9OWf^ zD@MnAH}d|SR=$YBC7^fW_-tVRk=g^vUp3|WAfCHzJiy#1UMb~%_H5fwnLU3+NN-xZ zEX1uW0r5b@d5I77o4)?AYiGzm^X4bH&(abIv~mCZ1=;0OW`#WL-MKk?ebtNATo#tH z`2M=JuZ3j}ykAA)<+Zb9&AM9t<>f1r^}U~?dU{KZW1$BaJbFAlNJ{|5&?tyRc<#Yl zD;rinTC=u;hYp1pLHbraovm8DC=4hAPoNHQD3pT+k~o!@`0_XyT3OGd0ajb$*MXm_ zsnhR)--lXXti8OpJs-E@`MmngP-p_IeUt7gAuR0>3JAwc4T1W`FX2RxmJ z27%bilb6s4FE1m?7(v{oL{O}I>O*`VDC2!p>}~71NVNmXm#trhZl9gFX9DSomre); zd;qxSLP~tx9PO-lU{;v9#7a}%2OA-_y!&bhE{e*z5s)ro@c7>$h=D`L!(jMz_4T6O zD?*SLsD}@*gVBpv2=MzLapH2My}rtcxScp(uYOrZ`|R9#;QVai!i7N`khtLGX5RBi z*4Nip8%UMIQwXJfuqC()|DPb$Oci+)o~LC%gQpjD;Ys&iJTB|$IcWq3k5;c{*$3}^ zoPGY$XCdwNHDEiwJawG%K~z}?7aVe0g0At*0Y zR`tCtV)8<1u2avSiBZO4_#n?Zl+&r}|k$_x@iF*DA?1`-6i^uDas9 za z_JBc@_<-IJV6=C zg6gVb4*;`@M-CPow&0k}@yuX}xB)mI*rR}67GLeC{Gs_*GCdo>ZI4MlMX-0O-?E6Cg(@k%m+?;J4B0NYqU^W0ohynPA6X0VB$c-{+w52xVws|ML z8!`MeFc@NS!Km)+_Y?orViD)_IMemlZ~dh`Hy{}SXy!|Nt`iOp{y8MyDeVCyybqK_Df_Eh3cfkW001%Z z0?b^9_ZXn{P|J~f0P6c@iK8IkHq~GCUE(`>H~*FGY^3ZjgQW}rH%;uKJFOVN;oaLS z5?{y&fOEWNtYW;top;|hWc_z!1bjnhEtUAx6?zXDv>OBYR^I7sqO<|TGaok%%+OW` zO9lom5_=2o>6wB&UVtAyAU1+LFCruGwm{;`5Y8n7D76P*&|>j%!2}sXvq*fk6WXta z+C392^u>0%zUvn{3TmG~9pP;uwggvR>2rlr1^^PDSnDrAgWL)-sMwe!oX3c-qn+0I zc=m(#2Y#H2+jHTCr_TjS8-T+zQ0R~ z)IIhpCyotNh^vxg zL7NyF&uT_M>QGl3)J~!6*?BjIBc5EJ(s3;OI>c#+%Rt_yN}qyPzV&{#blzPxv4xAF zds+tM1>$2MFvu8)djX(5HwJ$<>PYXl}@3V#_W&bUOZ!kHiAW`038E`3lB;YtDmW7iFT~r?P#N&4A}$Z4UWe# z&D3$~9Rq2@h4W3Ih))69oT`lK#QpMiQ`cg?|7J_gxEfiBm8)-<8N@8>&e=O)l!!m`-p4y@3Gnriv;-t3 zuOL$SGIi>acMR+#aNiQYe_weIKw0Wgx6_t@QlEl{6HWnq*5z+t{5?GW@n@tx0D|$i zHPX$@ev$G5-u6gQ`a8gIg6OQ{vG|<;Vr$kmGy8>m0iaFtBTYvbKqn*NBpCT-)^X~j z+8S|K0{#!h;fr@xR}TI7RfRad*Jx;GTkQxVz6bc9ktECh1t~GKwk^dB6951J07*qo IM6N<$g6=UDv;Y7A diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/fawn.png b/src/main/resources/assets/biomesoplenty/textures/entity/fawn.png deleted file mode 100644 index dc2ec689c15a21256a0b444e938a0400f249e500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2010 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 FV1j}+rsn_v diff --git a/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json index 9dee4b280..97d86f157 100644 --- a/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json +++ b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json @@ -134,6 +134,12 @@ "conditions": { "biome": "biomesoplenty:highland" } + }, + "highland_crag": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:highland_crag" + } }, "highland_moor": { "trigger": "minecraft:location", @@ -146,6 +152,12 @@ "conditions": { "biome": "biomesoplenty:jade_cliffs" } + }, + "jade_grassland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:jade_grassland" + } }, "lavender_field": { "trigger": "minecraft:location", @@ -170,6 +182,12 @@ "conditions": { "biome": "biomesoplenty:meadow" } + }, + "meadow_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:meadow_forest" + } }, "muskeg": { "trigger": "minecraft:location", @@ -194,6 +212,12 @@ "conditions": { "biome": "biomesoplenty:ominous_woods" } + }, + "ominous_mire": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:ominous_mire" + } }, "orchard": { "trigger": "minecraft:location", @@ -254,6 +278,12 @@ "conditions": { "biome": "biomesoplenty:redwood_forest_edge" } + }, + "redwood_hills": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:redwood_hills" + } }, "seasonal_forest": { "trigger": "minecraft:location", @@ -290,6 +320,12 @@ "conditions": { "biome": "biomesoplenty:silkglade" } + }, + "silkglade_nest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:silkglade_nest" + } }, "snowy_coniferous_forest": { "trigger": "minecraft:location", diff --git a/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json index a73e0f27e..16b0c9519 100644 --- a/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json +++ b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json @@ -133,6 +133,12 @@ "conditions": { "biome": "biomesoplenty:highland" } + }, + "highland_crag": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:highland_crag" + } }, "highland_moor": { "trigger": "minecraft:location", @@ -145,6 +151,12 @@ "conditions": { "biome": "biomesoplenty:jade_cliffs" } + }, + "jade_grassland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:jade_grassland" + } }, "lavender_field": { "trigger": "minecraft:location", @@ -169,6 +181,12 @@ "conditions": { "biome": "biomesoplenty:meadow" } + }, + "meadow_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:meadow_forest" + } }, "muskeg": { "trigger": "minecraft:location", @@ -193,6 +211,12 @@ "conditions": { "biome": "biomesoplenty:ominous_woods" } + }, + "ominous_mire": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:ominous_mire" + } }, "orchard": { "trigger": "minecraft:location", @@ -253,6 +277,12 @@ "conditions": { "biome": "biomesoplenty:redwood_forest_edge" } + }, + "redwood_hills": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:redwood_hills" + } }, "seasonal_forest": { "trigger": "minecraft:location", @@ -289,6 +319,12 @@ "conditions": { "biome": "biomesoplenty:silkglade" } + }, + "silkglade_nest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:silkglade_nest" + } }, "snowy_coniferous_forest": { "trigger": "minecraft:location", @@ -409,16 +445,20 @@ "gravel_beach", "grove", "highland", + "highland_crag", "highland_moor", "jade_cliffs", + "jade_grassland", "lavender_field", "lush_desert", "lush_savanna", "meadow", + "meadow_forest", "muskeg", "mystic_grove", "mystic_plains", "ominous_woods", + "ominous_mire", "orchard", "origin_valley", "overgrown_fungal_jungle", @@ -429,12 +469,14 @@ "rainforest_cliffs", "redwood_forest", "redwood_forest_edge", + "redwood_hills", "seasonal_forest", "seasonal_pumpkin_patch", "shroomy_wetland", "shrubland", "shrubland_hills", "silkglade", + "silkglade_nest", "snowy_coniferous_forest", "snowy_fir_clearing", "snowy_maple_forest", diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg.json b/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg.json deleted file mode 100644 index d302bfa34..000000000 --- a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "biomesoplenty:cooked_turkey_leg" - ] - }, - "criteria": { - "has_turkey_leg": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "biomesoplenty:turkey_leg" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "biomesoplenty:cooked_turkey_leg" - } - } - }, - "requirements": [ - [ - "has_turkey_leg", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg_from_campfire_cooking.json b/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg_from_campfire_cooking.json deleted file mode 100644 index 8e255f7fd..000000000 --- a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg_from_campfire_cooking.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "biomesoplenty:cooked_turkey_leg_from_campfire_cooking" - ] - }, - "criteria": { - "has_turkey_leg": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "biomesoplenty:turkey_leg" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "biomesoplenty:cooked_turkey_leg_from_campfire_cooking" - } - } - }, - "requirements": [ - [ - "has_turkey_leg", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg_from_smoking.json b/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg_from_smoking.json deleted file mode 100644 index 0c96ca0fb..000000000 --- a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_turkey_leg_from_smoking.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "biomesoplenty:cooked_turkey_leg_from_smoking" - ] - }, - "criteria": { - "has_turkey_leg": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "biomesoplenty:turkey_leg" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "biomesoplenty:cooked_turkey_leg_from_smoking" - } - } - }, - "requirements": [ - [ - "has_turkey_leg", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison.json b/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison.json deleted file mode 100644 index 420a5e8eb..000000000 --- a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "biomesoplenty:cooked_venison" - ] - }, - "criteria": { - "has_venison": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "biomesoplenty:venison" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "biomesoplenty:cooked_venison" - } - } - }, - "requirements": [ - [ - "has_venison", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison_from_campfire_cooking.json b/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison_from_campfire_cooking.json deleted file mode 100644 index ea415df08..000000000 --- a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison_from_campfire_cooking.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "biomesoplenty:cooked_venison_from_campfire_cooking" - ] - }, - "criteria": { - "has_venison": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "biomesoplenty:venison" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "biomesoplenty:cooked_venison_from_campfire_cooking" - } - } - }, - "requirements": [ - [ - "has_venison", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison_from_smoking.json b/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison_from_smoking.json deleted file mode 100644 index 3fa830c8f..000000000 --- a/src/main/resources/data/biomesoplenty/advancements/recipes/food/cooked_venison_from_smoking.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "biomesoplenty:cooked_venison_from_smoking" - ] - }, - "criteria": { - "has_venison": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "biomesoplenty:venison" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "biomesoplenty:cooked_venison_from_smoking" - } - } - }, - "requirements": [ - [ - "has_venison", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/entities/deer.json b/src/main/resources/data/biomesoplenty/loot_tables/entities/deer.json deleted file mode 100644 index a198bb363..000000000 --- a/src/main/resources/data/biomesoplenty/loot_tables/entities/deer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "type": "minecraft:entity", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 1.0, - "max": 3.0, - "type": "minecraft:uniform" - } - }, - { - "function": "minecraft:furnace_smelt", - "conditions": [ - { - "condition": "minecraft:entity_properties", - "predicate": { - "flags": { - "is_on_fire": true - } - }, - "entity": "this" - } - ] - }, - { - "function": "minecraft:looting_enchant", - "count": { - "min": 0.0, - "max": 1.0 - } - } - ], - "name": "biomesoplenty:venison" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/entities/turkey.json b/src/main/resources/data/biomesoplenty/loot_tables/entities/turkey.json deleted file mode 100644 index 8af342a9a..000000000 --- a/src/main/resources/data/biomesoplenty/loot_tables/entities/turkey.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "type": "minecraft:entity", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 0.0, - "max": 2.0, - "type": "minecraft:uniform" - } - }, - { - "function": "minecraft:looting_enchant", - "count": { - "min": 0.0, - "max": 1.0 - } - } - ], - "name": "minecraft:feather" - } - ] - }, - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 1.0, - "max": 2.0, - "type": "minecraft:uniform" - } - }, - { - "function": "minecraft:furnace_smelt", - "conditions": [ - { - "condition": "minecraft:entity_properties", - "predicate": { - "flags": { - "is_on_fire": true - } - }, - "entity": "this" - } - ] - }, - { - "function": "minecraft:looting_enchant", - "count": { - "min": 0.0, - "max": 1.0 - } - } - ], - "name": "biomesoplenty:turkey_leg" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg.json b/src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg.json deleted file mode 100644 index a3dcb4d66..000000000 --- a/src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "biomesoplenty:turkey_leg" - }, - "result": "biomesoplenty:cooked_turkey_leg", - "experience": 0.35, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg_from_campfire_cooking.json b/src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg_from_campfire_cooking.json deleted file mode 100644 index 1657e02e1..000000000 --- a/src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg_from_campfire_cooking.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:campfire_cooking", - "ingredient": { - "item": "biomesoplenty:turkey_leg" - }, - "result": "biomesoplenty:cooked_turkey_leg", - "experience": 0.35, - "cookingtime": 600 -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg_from_smoking.json b/src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg_from_smoking.json deleted file mode 100644 index 8ef177a2e..000000000 --- a/src/main/resources/data/biomesoplenty/recipes/cooked_turkey_leg_from_smoking.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smoking", - "ingredient": { - "item": "biomesoplenty:turkey_leg" - }, - "result": "biomesoplenty:cooked_turkey_leg", - "experience": 0.35, - "cookingtime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cooked_venison.json b/src/main/resources/data/biomesoplenty/recipes/cooked_venison.json deleted file mode 100644 index d57cf51ce..000000000 --- a/src/main/resources/data/biomesoplenty/recipes/cooked_venison.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "biomesoplenty:venison" - }, - "result": "biomesoplenty:cooked_venison", - "experience": 0.35, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cooked_venison_from_campfire_cooking.json b/src/main/resources/data/biomesoplenty/recipes/cooked_venison_from_campfire_cooking.json deleted file mode 100644 index e9b1550b5..000000000 --- a/src/main/resources/data/biomesoplenty/recipes/cooked_venison_from_campfire_cooking.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:campfire_cooking", - "ingredient": { - "item": "biomesoplenty:venison" - }, - "result": "biomesoplenty:cooked_venison", - "experience": 0.35, - "cookingtime": 600 -} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cooked_venison_from_smoking.json b/src/main/resources/data/biomesoplenty/recipes/cooked_venison_from_smoking.json deleted file mode 100644 index 1947a1bc8..000000000 --- a/src/main/resources/data/biomesoplenty/recipes/cooked_venison_from_smoking.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smoking", - "ingredient": { - "item": "biomesoplenty:venison" - }, - "result": "biomesoplenty:cooked_venison", - "experience": 0.35, - "cookingtime": 100 -} \ No newline at end of file