diff --git a/build.gradle b/build.gradle index d2e0648..f950cc5 100644 --- a/build.gradle +++ b/build.gradle @@ -13,9 +13,9 @@ apply plugin: 'net.minecraftforge.gradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' -version = '1.0' -group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html -archivesBaseName = 'modid' +version = '1.1.0' +group = 'com.markus1002' +archivesBaseName = 'incubation' sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. @@ -71,7 +71,7 @@ minecraft { } dependencies { - minecraft 'net.minecraftforge:forge:1.16.1-32.0.57' + minecraft 'net.minecraftforge:forge:1.16.3-34.1.0' } jar { diff --git a/src/main/java/com/markus1002/incubation/common/world/gen/feature/ChickenNestFeature.java b/src/main/java/com/markus1002/incubation/common/world/gen/feature/ChickenNestFeature.java index e686a12..05208cd 100644 --- a/src/main/java/com/markus1002/incubation/common/world/gen/feature/ChickenNestFeature.java +++ b/src/main/java/com/markus1002/incubation/common/world/gen/feature/ChickenNestFeature.java @@ -23,8 +23,8 @@ public ChickenNestFeature(Codec config) super(config); } - public boolean func_230362_a_(ISeedReader worldIn, StructureManager manager, ChunkGenerator generator, Random rand, BlockPos pos, NoFeatureConfig config) - { + @Override + public boolean func_241855_a(ISeedReader worldIn, ChunkGenerator generator, Random rand, BlockPos pos, NoFeatureConfig config) { BlockState blockstate = ModBlocks.CHICKEN_NEST.getDefaultState().with(ChickenNestBlock.EGGS, 1 + rand.nextInt(3)); int i = worldIn.getHeight(Heightmap.Type.WORLD_SURFACE, pos.getX(), pos.getZ()); @@ -37,4 +37,4 @@ public boolean func_230362_a_(ISeedReader worldIn, StructureManager manager, Chu return true; } -} \ No newline at end of file +} diff --git a/src/main/java/com/markus1002/incubation/core/Incubation.java b/src/main/java/com/markus1002/incubation/core/Incubation.java index 4260f0e..dded96f 100644 --- a/src/main/java/com/markus1002/incubation/core/Incubation.java +++ b/src/main/java/com/markus1002/incubation/core/Incubation.java @@ -4,7 +4,10 @@ import com.markus1002.incubation.core.util.EventHandler; import com.markus1002.incubation.core.util.VanillaCompatibility; +import net.minecraft.world.gen.feature.Feature; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @@ -18,11 +21,17 @@ public Incubation() MinecraftForge.EVENT_BUS.register(new EventHandler()); MinecraftForge.EVENT_BUS.register(this); + + MinecraftForge.EVENT_BUS.addListener(ModFeatures::addFeaturesToBiome); + } + + @SubscribeEvent + public void handleRegistration(RegistryEvent.Register> event) { + ModFeatures.registerFeatures(event); } private void setup(final FMLCommonSetupEvent event) { VanillaCompatibility.setupVanillaCompatibility(); - ModFeatures.setupFeatures(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/markus1002/incubation/core/registry/ModFeatures.java b/src/main/java/com/markus1002/incubation/core/registry/ModFeatures.java index 452419f..5ff10a4 100644 --- a/src/main/java/com/markus1002/incubation/core/registry/ModFeatures.java +++ b/src/main/java/com/markus1002/incubation/core/registry/ModFeatures.java @@ -4,58 +4,67 @@ import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; +import net.minecraft.util.ResourceLocation; import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.MobSpawnInfo; import net.minecraft.world.gen.GenerationStage; -import net.minecraft.world.gen.feature.Feature; -import net.minecraft.world.gen.feature.IFeatureConfig; -import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.*; import net.minecraft.world.gen.placement.ChanceConfig; import net.minecraft.world.gen.placement.Placement; -import net.minecraftforge.common.BiomeDictionary; -import net.minecraftforge.common.BiomeDictionary.Type; +import net.minecraftforge.common.world.MobSpawnInfoBuilder; import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.world.BiomeLoadingEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.IForgeRegistry; + +import java.util.function.Supplier; @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public class ModFeatures { public static final Feature CHICKEN_NEST = new ChickenNestFeature(NoFeatureConfig.field_236558_a_); - @SubscribeEvent public static void registerFeatures(RegistryEvent.Register> event) { - registerFeature(CHICKEN_NEST, "chicken_nest"); + // make sure it's the expected registry + final ResourceLocation regName = ForgeRegistries.FEATURES.getRegistryName(); + if (!event.getName().equals(regName)) { + return; + } + IForgeRegistry> reg = event.getRegistry(); + + // register all features below this point + registerFeature(reg, CHICKEN_NEST, "chicken_nest"); } - private static void registerFeature(Feature feature, String name) + private static void registerFeature(IForgeRegistry> reg, Feature feature, String name) { feature.setRegistryName(name); - ForgeRegistries.FEATURES.register(feature); + reg.register(feature); } - public static void setupFeatures() + + public static void addFeaturesToBiome(BiomeLoadingEvent biome) { - for(Biome biome : ForgeRegistries.BIOMES.getValues()) - { - if (BiomeDictionary.getTypes(biome).contains(Type.FOREST) && doesCreatureSpawnInBiome(EntityType.CHICKEN, EntityClassification.CREATURE, biome)) - { - biome.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, CHICKEN_NEST.withConfiguration(IFeatureConfig.NO_FEATURE_CONFIG).withPlacement(Placement.CHANCE_HEIGHTMAP_DOUBLE.configure(new ChanceConfig(32)))); - } - } + if (biome.getCategory() == Biome.Category.FOREST && doesCreatureSpawnInBiome(EntityType.CHICKEN, biome.getSpawns())) + + biome.getGeneration().getFeatures(GenerationStage.Decoration.VEGETAL_DECORATION).add( + configuredFeatureSupplier(CHICKEN_NEST) + ); } - private static boolean doesCreatureSpawnInBiome(EntityType entityType, EntityClassification classification, Biome biome) + private static Supplier> configuredFeatureSupplier(Feature feature) { + return () -> feature.withConfiguration(IFeatureConfig.NO_FEATURE_CONFIG).withPlacement(Placement.field_242898_b.configure(new ChanceConfig(32))); + } + + private static boolean doesCreatureSpawnInBiome(EntityType entityType, MobSpawnInfoBuilder spawns) { - for (Biome.SpawnListEntry entry : biome.getSpawns(classification)) - { - if (entry.entityType == entityType) - { + for (MobSpawnInfo.Spawners spawner : spawns.getSpawner(EntityClassification.CREATURE)) { + if (spawner.field_242588_c == entityType) { return true; } } - return false; } -} \ No newline at end of file +} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index f7cfcfc..c5b998c 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,6 +1,7 @@ modLoader="javafml" -loaderVersion="[31,)" -issueTrackerURL="https://github.com/Markus1002/Incubation/issues" +loaderVersion="[34,)" +issueTrackerURL="https://github.com/allaryin/Incubation/issues" +license="LGPL-2.1" [[mods]] modId="incubation" version="1.1.0" @@ -8,17 +9,17 @@ displayName="Incubation" displayURL="https://www.curseforge.com/minecraft/mc-mods/incubation" logoFile="logo.png" credits="Markus1002, Translators: vhslance, F4zzer, peehpeh, xM4RCOSx, XanaSago, Rye" -authors="Markus1002" +authors="Markus1002, allaryin" description='''Adds chicken nests and makes eggs more useful.''' [[dependencies.incubation]] modId="forge" mandatory=true - versionRange="[32.0.57,)" + versionRange="[34.1.0,)" ordering="NONE" side="BOTH" [[dependencies.incubation]] modId="minecraft" mandatory=true - versionRange="[1.16.1]" + versionRange="[1.16.3]" ordering="NONE" side="BOTH" \ No newline at end of file