Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Andrew Murdza

Members
  • Posts

    29
  • Joined

  • Last visited

Everything posted by Andrew Murdza

  1. I am interested in hiring someone to update a 1.12.2 mod called Tektopia and a 1.12.2 mod called Craftstudio (which is needed by Tektopia) to 1.17.1. Both Tektopia and CraftStudio are relatively large mods but I am willing to pay at least $800 (you let me know what an appropriate amount would be) for this and I can also perform tasks as long as you make it clear what I need to do (I know Java). The one catch is that for the Tektopia mod you cannot post the mod publicly (I talked to the author and he is ok with me updating the mod and hiring someone as long as I send it to him to upload to curse forge it himself so that he still owns it) so before I send you the source code for Tektopia I need you to promise that you will not share it with anyone else. I have already removed most of the errors that are easier to fix in Tektopia so I will send you the updated project.
  2. I'm sorry for wasting your time I figured out that the reason it wasn't working is because I used to use a different scale of biome scores (with varied between 0 and 2 instead of 0 and 4) which made the crops seem to grow at the same rate. When I scaled the scores by 2 everything worked.
  3. I want my mod to change how quickly crops grow based on the biome. But when I test my mod the crops grow the same regardless of the biome. I have other methods inside of ModClientEvents that do work and when I add a print statement above the state.randomTick line it gives the correct score that the biomes should have when I am within each biome which means that the method is being called when the event occurs, the method calculates the biome scores connectly, and the code inside of the if statement is being run. This makes me think that the problem is with state.randomTick. How I can fix my code to make it so that state.randomTick actually alters the growth age of crops? @Mod.EventBusSubscriber(modid = AOEMod.MOD_ID, bus=Mod.EventBusSubscriber.Bus.FORGE, value= Dist.CLIENT) public class ModClientEvents { public static double[] growth_chances=new double[]{0,0,1.0/3.0,1.0/2.0,2.0/3.0}; @SubscribeEvent public static void onPlantTick(BlockEvent.CropGrowEvent.Pre event) { IWorld world=event.getWorld(); BlockPos pos=event.getPos(); BlockState state=event.getState(); int score=getScore(world,pos,state.getBlock()); if(world.getRandom().nextDouble()<growth_chances[score]){ state.randomTick((ServerWorld) world,pos,world.getRandom());//NOT WORKING!!! } } }
  4. I am interested in registering my own BiomeProviderType which uses my custom BiomeProvider BiomeProviderNew. I am familiar with java reflection and the Function<C,T> generic class and I read this question. The problem that I am having is that in order to get the constructor I need to get the class of BiomeProviderType<OverworldBiomeProviderSettings, OverworldBiomeProvider> (once I get things to work I will replace OverworldBiomeProvider with BiomeProviderNew). I want to say Class<BiomeProviderType<OverworldBiomeProviderSettings, OverworldBiomeProvider>> class=BiomeProviderType<OverworldBiomeProviderSettings, OverworldBiomeProvider>.class; But this is not possible. I read that I could get the class using Types according to the second answer on this link and on this link, but this resulted in the exception sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to java.lang.Class. This link talks about the exception but I don't know how to apply it to my case. Similarly, I also need to get the class of Function<OverworldBiomeProviderSettings, OverworldBiomeProvider> and Function<OverworldBiomeProviderSettings, OverworldBiomeProvider> This is my code: This is the stacktrace I got I guess this is more of a java question than a question about forge. Thanks!
  5. I am now making a mod for 1.15 I would like to know when the event comes to forge 1.15. I went to the link Draco18s provided and it seems that there is no project or milestone. I subscribed to that github thread, but I was wondering if anyone has a time estimate for the number of months before it gets added.
  6. I recently started my mod over and I am unable to run minecraft in eclipse with the play or debug buttons (I already ran gradlew genEclipseRuns) I am able to run my mod with gradlew runClient and and everything works until I try to create a world. The world tries to load until it reaches 100% and then stays at 100% without generating the world. This is my log: I might be wrong, but I believe the problem is that my mod is trying to find the website http://myurl.me/ but this website doesn't have the information it is expecting. The only place I could find that URL is in my mods.toml file. This is my .toml I commented out the line updateJSONURL="http://myurl.me/", which is the only place where myurl.me appeared, but when I type gradlew runClient again it is still searching for myurl.me. The problem might also be what is wrong with the forge-client.toml file. This is my forge-clent.toml file: I don't understand why is it saying that I am missing zoomInMissingModelTextInGui and the other fields because they are in the file and my forge-client.toml file looks exactly like Cadiboo's github file for 1.15 and I was able to successfully run his mod from eclipse without any problems. Let me if know if any other information would be helpful in determining what I did wrong and how I could fix it. Thanks, Andrew Murdza
  7. Thanks for replying! I ended up using Minecraft Deobfuscator v3.0 which deobfuscated the majority of the functions.
  8. I figured out how to make the changes I wanted by overriding the vanilla blocks with my own blocks. Even if I unload the mod, the blocks are still there and they function as normal.
  9. I also just realized that the max growth heights for cacti and sugarcane are determined before the onCropsGrowPre is called. So I'm hoping there is a solution for cacti and sugarcane as well.
  10. I found that beetroots, carrots, wheat, potatoes, cacti, sugarcane, chorus flowers, cocoa beans, kelp, nether wart, sweet berries, pumpkin and melon stems when they grow in age, and pumpkin and melon stems when they grow pumpkins and melons all call the ForgeHooks onCropsGrowPre event which is related to the BlockEvent.CropGrowEvent.Pre event. This leaves Bamboo, Mushrooms, Saplings, and Vines. I am especially interested in the mushroom block. The only three methods that are called when deciding when there are too many mushrooms in the area are BlockPos.getAllInBoxMutable, the getBlockState method of ServerWorld, and the getBlock method of BlockState. All of these methods do not seem to lead to any forge events. Is some way to involve events? If not, is there a way I can either work with the ServerWorld or introduce a fake replica of the mushroom block with my tick method that will not cause the mushrooms to disappear if I unload the mod? The code is below: I would like to change the number 25 in the nextInt method and the value of i depending on the biome, with the value of i being most important.
  11. When I run gradlew eclipse I get the source code but the code is still obfuscated. I read that the correct approach to solve this is to use MCPBot. In the website it says that I should replace "mappings channel: 'snapshot', version: '20191219-1.14.3'" with "mappings=stable_60" in the build.gradle file. When I do this and run gradlew build in command prompt, I get the follow stacktrace: The problem is that there is no file at the link https://files.minecraftforge.net/maven/net/minecraftforge/forge/1.15.2-31.1.0_mapped_stable_60/forge-1.15.2-31.1.0_mapped_stable_60.jar. I tried to search that link manually and I got no results. What should I put in build.gradle that will allow MCPBot to deobfuscate the class files?
  12. I am making a mod for 1.15 that alters the growth rate of wheat, cocoa beans, etc. based on the biome they are growing in and affects the max height of cacti and sugarcane depending on the biome and the maximum number of mushrooms that can spread in an area depending on the biome. The brute force way to do it would be to replace mushrooms, crops, etc. with custom blocks, but I want my world to still be playable even if I remove the mod. I've looked at the source code and the method I am interested in is called tick and I am interested specifically when it is called from the following classes: There are many other blocks that use the tick method (such as redstone ore and leaves) that I don't care about. The way I was planning to do this is look for an event that fires whenever the tick method runs and then check if the block in the event is one of the blocks I am interested in. If it is, then I cancel the event and run my own custom tick method that accounts for higher max height, growth rate, and/or maximum mushroom density. The problem that I am having is that I cannot find an event that fires whenever the tick method is called. I expected that the TickEvent would work but it didn't seem to do what I wanted (I want an event to include the world and the position of the block that is trying to grow). If there is a method that works specifically when the tick event fires for all the blocks I listed but not for all blocks in general, then that's even better. I don't want the event to fire only when the plant grows, I want it to fire every time the plant tries to grow. Thanks, Andrew Murdza
  13. Today I downloaded the MDK for Minecraft forge 1.15 to work on a mod, but I am not able to see the source code for Minecraft like I was for previous versions. I'm a novice modder so the source code helped me do things that I would not have been able to do without it. I read another question that was saying that Forge no longer has the right to deobfuscate the code but I also read this quote: "You can use the eclipse task to decompile the sources and then find them in a jar hidden in a cache directory" on this stack overflow question. I also saw in the New LTS System, 1.14 and moving forward that I can use MCPConfig to see the source code. I was wondering if you could tell me 1) if it is possible to view Minecraft source code for 1.15+ and 2) if it is possible, how can I view it using some hidden jar file, MCPConfig, or something else (I don't know what MCPConfig is other than that MCP is mentioned in many of the forge files). I was able to find the .class files corresponding to the .java I was interested in but they weren't helpful. It might also be that I just messed up the process because I used the same steps as the tutorials based on 1.14 and I was able to successfully find the source code for 1.12 and 1.13 in the past. Thanks, Andrew Murdza
  14. Thanks, Draco! This answers my question. I reached out to Tango on his Patreon, but I think it is unlikely that he will provide his source code and I doubt he spent the time to make an API. I guess I will never get to make an addon to his mod. I'll have to wait and see until he responds.
  15. I am hoping to make an addon mod to Tango Tek's Tektopia mod. I have a google document containing all of the things I want to add to the mod, but I don't think it's necessary for you to read through it to answer my question. Essentially I would like to add onto the Tektopia mod and it is more difficult to add onto a mod because, unlike Minecraft, you don't have the source code. I've seen some forum topics about deobfuscating, but I'm not sure that wouldn't apply here because Tango is still actively working on his mod. If it does apply here, then is there a tutorial that you would recommend for deobfuscating a mod .jar file? I was able to decompile the TekTopia jar file, but when I used Minecraft Deobfuscator v3.0 the program outputted an empty zip file If it doesn't apply here, do you have any tips for adding an addon without source code? I'll send specific questions later. Thanks, Andrew Murdza
  16. The log statements in OnBlockBreak all run, while the log statement in the HarvestDropsEvent does not. This means that the if statement is not reached. How could I change the if statement so that it would work? (This is something I would have to deal with after I get the HarvestDropsEvent to fire) Thanks, Andrew Murdza
  17. I'm making a mod for 1.14.4 which affects the drops of blocks depending on the biome at the location where they were harvested. I think that the best way to do this is with the HarvestDropsEvent. The problem is that my HarvestDropEvent method does not get called when I mine a sand block with a diamond shovel in survival on a test world. I could use the OnBlockBreakEvent method (which does get called under the same situation) but I only want the additional drops to be added if the conditions of the harvest drops event are satisfied and the tool is not a silk-touch tool. Note that I have strange code inside of both methods because I first want to make sure I get the onEvent method to fire and then I will replace the inside code with things relevant to my mod. Please tell if there is a way to get the onEvent method to be called when I harvest blocks like wheat, melons, ores, etc. My code is below: Thanks, Andrew Murdza
  18. Thank you very much! I needed to create a JAVA_HOME environment variable and after I did it worked!!
  19. I installed the 1.14.4 minecraft forge version and ran the gradlew eclipse command. I get the error "Could not resolve: net.minecraftforge:forge:1.14.4-28.0.29_mapped_snapshot_20190719-1.14.3" My full log is below. When I run eclipse it says Project 'MyMinecraftMod' is missing required library 'C:\Users\apmur\Desktop\MCMod\MyMinecraftMod\unresolved dependency - net.minecraftforge forge 1.14.4-29.0.29_mapped snapshot_20190719-1.14.3' It appears that the gradlew eclipse command failed to download the directory net.minecraftforge:forge:1.14.4-28.0.29_mapped_snapshot_20190719-1.14.3. How can I resolve this error? Thanks, Andrew Murdza
  20. Thanks Draco18s! It was really obvious I didn't notice it because my post was so long and I was only looking near the top. I hope that my question is readable now. I apologize for not doing this earlier. I didn't know about inserting code. Thanks, Andrew Murdza
  21. Dear Animefan8888, How do I edit my previous post? Or should I ask a new question using <>? I'm sorry I knew that all the code together would be a big problem I almost attached the code as .java files because I didn't know about spoilers or <>. Thanks, Andrew Murdza
  22. I recently successfully replaced the vanilla minecraft biomes with my custom biomes. I got everything to work perfectly except for some reason cacti and dead bushes did not spawn in the desert biome. I tried tinkering with my code and now none of the biomes generate properly. The problem is that all of the biomes use oak trees rather than the native tree and the desert still doesn't have cacti or dead bushes (which is less important, the trees are much more important). At the same time, I get the message MyMod loaded a new chunk [23, 17] in dimension 0 (overworld) while populating chunk [23, 16], causing cascading worldgen lag. This message is described in Jabelar's minecraft biome modding tutorial which occurs when one chunk loads the next chunk and so on. I know that it is usually avoided by adding a +8 the position where blocks that are generated. I did not add anything that would require an additional +8 or remove any +8 though. The class that edited the most was the BiomesNew class. The way that I edited it caused some biomes to be reigstered more than once (I was trying to get rid of Desert_Mutated by replacing it with Desert, I did similar things for many other biomes). I think this is what is causing the problem. I changed the classes back to the way before but I think the old duplicate biomes may still be registered. One reason that I think this is the cause is because when I changed BiomeDesertNew to extend Biome instead of BiomeNew I got the same cascading effect when I entered a Desert biome in the past. This is the BiomesNew class: package com.amurdza.mymod.biomes; import java.util.HashMap; import com.amurdza.mymod.biomes.biomes.*; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.BiomeHills; import net.minecraft.world.biome.BiomeForest; import net.minecraft.world.biome.BiomeTaiga; import net.minecraft.world.biome.BiomeEnd; import net.minecraft.world.biome.BiomeHell; import net.minecraft.world.biome.BiomeVoid; public class BiomesNew { //Ocean public static final Biome OCEAN = new BiomeOceanNew((new Biome.BiomeProperties("Ocean")).setBaseHeight(-1.0F).setHeightVariation(0.1F)).setRegistryName("ocean"); public static final Biome DEFAULT = OCEAN; public static final Biome DEEP_OCEAN = new BiomeOceanNew((new Biome.BiomeProperties("Deep Ocean")).setBaseHeight(-1.8F).setHeightVariation(0.1F)).setRegistryName("Deep Ocean"); public static final Biome FROZEN_OCEAN = new BiomeOceanNew((new Biome.BiomeProperties("FrozenOcean")).setBaseHeight(-1.0F).setHeightVariation(0.1F).setTemperature(0.0F).setRainfall(0.5F).setSnowEnabled()).setRegistryName("FrozenOcean"); //Beach public static final Biome BEACH = new BiomeBeachNew((new Biome.BiomeProperties("Beach")).setBaseHeight(0.0F).setHeightVariation(0.025F).setTemperature(0.8F).setRainfall(0.4F)).setRegistryName("Beach"); public static final Biome STONE_BEACH = new BiomeStoneBeachNew((new Biome.BiomeProperties("Stone Beach")).setBaseHeight(0.1F).setHeightVariation(0.8F).setTemperature(0.2F).setRainfall(0.3F)).setRegistryName("Stone Beach"); public static final Biome COLD_BEACH = new BiomeBeachNew((new Biome.BiomeProperties("Cold Beach")).setBaseHeight(0.0F).setHeightVariation(0.025F).setTemperature(0.05F).setRainfall(0.3F).setSnowEnabled()).setRegistryName("Cold Beach"); //Jungle public static final Biome JUNGLE = new BiomeJungleNew(false, (new Biome.BiomeProperties("Jungle")).setTemperature(0.95F).setRainfall(0.9F)).setRegistryName("Jungle"); public static final Biome JUNGLE_HILLS = new BiomeJungleNew(false, (new Biome.BiomeProperties("JungleHills")).setBaseHeight(0.45F).setHeightVariation(0.3F).setTemperature(0.95F).setRainfall(0.9F)).setRegistryName("JungleHills"); public static final Biome JUNGLE_EDGE = new BiomeJungleNew(true, (new Biome.BiomeProperties("JungleEdge")).setTemperature(0.95F).setRainfall(0.8F)).setRegistryName("JungleEdge"); public static final Biome MUTATED_JUNGLE = new BiomeJungleNew(false, (new Biome.BiomeProperties("Jungle M")).setBaseBiome("jungle").setBaseHeight(0.2F).setHeightVariation(0.4F).setTemperature(0.95F).setRainfall(0.9F)).setRegistryName("Jungle M");; public static final Biome MUTATED_JUNGLE_EDGE = new BiomeJungleNew(true, (new Biome.BiomeProperties("JungleEdge M")).setBaseBiome("jungle_edge").setBaseHeight(0.2F).setHeightVariation(0.4F).setTemperature(0.95F).setRainfall(0.8F)).setRegistryName("Jungle Edge M");; //Hills public static final Biome EXTREME_HILLS_WITH_TREES = new BiomeHillsNew(BiomeHills.Type.EXTRA_TREES, (new Biome.BiomeProperties("Extreme Hills+")).setBaseHeight(1.0F).setHeightVariation(0.5F).setTemperature(0.2F).setRainfall(0.3F)).setRegistryName("Extreme Hills +"); public static final Biome MUTATED_EXTREME_HILLS = new BiomeHillsNew(BiomeHills.Type.MUTATED, (new Biome.BiomeProperties("Extreme Hills M")).setBaseBiome("extreme_hills").setBaseHeight(1.0F).setHeightVariation(0.5F).setTemperature(0.2F).setRainfall(0.3F)).setRegistryName("Extreme Hills M"); public static final Biome MUTATED_EXTREME_HILLS_WITH_TREES = new BiomeHillsNew(BiomeHills.Type.MUTATED, (new Biome.BiomeProperties("Extreme Hills+ M")).setBaseBiome("extreme_hills_with_trees").setBaseHeight(1.0F).setHeightVariation(0.5F).setTemperature(0.2F).setRainfall(0.3F)).setRegistryName("Extreme Hills+ M"); public static final Biome EXTREME_HILLS = new BiomeHillsNew(BiomeHills.Type.NORMAL, (new Biome.BiomeProperties("Extreme Hills")).setBaseHeight(1.0F).setHeightVariation(0.5F).setTemperature(0.2F).setRainfall(0.3F)).setRegistryName("Extreme Hills"); public static final Biome EXTREME_HILLS_EDGE = new BiomeHillsNew(BiomeHills.Type.EXTRA_TREES, (new Biome.BiomeProperties("Extreme Hills Edge")).setBaseHeight(0.8F).setHeightVariation(0.3F).setTemperature(0.2F).setRainfall(0.3F)).setRegistryName("Extreme Hills Edge"); //Plains public static final Biome PLAINS = new BiomePlainsNew(false, (new Biome.BiomeProperties("Plains")).setBaseHeight(0.125F).setHeightVariation(0.05F).setTemperature(0.8F).setRainfall(0.4F)).setRegistryName("Plains"); public static final Biome MUTATED_PLAINS = new BiomePlainsNew(true, (new Biome.BiomeProperties("Sunflower Plains")).setBaseBiome("plains").setBaseHeight(0.125F).setHeightVariation(0.05F).setTemperature(0.8F).setRainfall(0.4F)).setRegistryName("Sunflower Plains"); //Miscellaneous public static final Biome HELL= new BiomeHell((new Biome.BiomeProperties("Hell")).setTemperature(2.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Nether"); public static final Biome SKY = new BiomeEnd((new Biome.BiomeProperties("The End")).setRainDisabled()).setRegistryName("The End"); public static final Biome VOID = new BiomeVoid((new Biome.BiomeProperties("The Void")).setRainDisabled()).setRegistryName("The Void"); //Desert public static final Biome DESERT = new BiomeDesertNew((new Biome.BiomeProperties("Desert")).setBaseHeight(0.125F).setHeightVariation(0.05F).setTemperature(2.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Desert"); public static final Biome MUTATED_DESERT = new BiomeDesertNew((new Biome.BiomeProperties("Desert M")).setBaseBiome("desert").setBaseHeight(0.225F).setHeightVariation(0.25F).setTemperature(2.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Desert M"); public static final Biome DESERT_HILLS = new BiomeDesertNew((new Biome.BiomeProperties("DesertHills")).setBaseHeight(0.45F).setHeightVariation(0.3F).setTemperature(2.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("DesertHills"); //Swamp public static final Biome SWAMPLAND = new BiomeSwampNew((new Biome.BiomeProperties("Swampland")).setBaseHeight(-0.2F).setHeightVariation(0.1F).setTemperature(0.8F).setRainfall(0.9F).setWaterColor(14745518)).setRegistryName("Swampland"); public static final Biome MUTATED_SWAMPLAND = new BiomeSwampNew((new Biome.BiomeProperties("Swampland M")).setBaseBiome("swampland").setBaseHeight(-0.1F).setHeightVariation(0.3F).setTemperature(0.8F).setRainfall(0.9F).setWaterColor(14745518)).setRegistryName("Swampland M"); //Roofed Forest public static final Biome ROOFED_FOREST = new BiomeForestNew(BiomeForest.Type.ROOFED, (new Biome.BiomeProperties("Roofed Forest")).setTemperature(0.7F).setRainfall(0.8F)).setRegistryName("Roofed Forest"); public static final Biome MUTATED_ROOFED_FOREST = new BiomeForestNew(BiomeForest.Type.ROOFED, (new Biome.BiomeProperties("Roofed Forest M")).setBaseBiome("roofed_forest").setBaseHeight(0.2F).setHeightVariation(0.4F).setTemperature(0.7F).setRainfall(0.8F)).setRegistryName("Roofed Forest M"); //Forest public static final Biome FOREST = new BiomeForestNew(BiomeForest.Type.NORMAL, (new Biome.BiomeProperties("Forest")).setTemperature(0.7F).setRainfall(0.8F)).setRegistryName("Forest"); public static final Biome MUTATED_FOREST = new BiomeForestNew(BiomeForest.Type.FLOWER, (new Biome.BiomeProperties("Flower Forest")).setBaseBiome("forest").setHeightVariation(0.4F).setTemperature(0.7F).setRainfall(0.8F)).setRegistryName("Flower Forest"); public static final Biome FOREST_HILLS = new BiomeForestNew(BiomeForest.Type.NORMAL, (new Biome.BiomeProperties("ForestHills")).setBaseHeight(0.45F).setHeightVariation(0.3F).setTemperature(0.7F).setRainfall(0.8F)).setRegistryName("ForestHills"); //Birch Forest public static final Biome BIRCH_FOREST = new BiomeForestNew(BiomeForest.Type.BIRCH, (new Biome.BiomeProperties("Birch Forest")).setTemperature(0.6F).setRainfall(0.6F)).setRegistryName("Birch Forest"); public static final Biome MUTATED_BIRCH_FOREST = new BiomeForestMutatedNew((new Biome.BiomeProperties("Birch Forest M")).setBaseBiome("birch_forest").setBaseHeight(0.2F).setHeightVariation(0.4F).setTemperature(0.6F).setRainfall(0.6F)).setRegistryName("Birch Forest M"); public static final Biome MUTATED_BIRCH_FOREST_HILLS = new BiomeForestMutatedNew((new Biome.BiomeProperties("Birch Forest Hills M")).setBaseBiome("birch_forest_hills").setBaseHeight(0.55F).setHeightVariation(0.5F).setTemperature(0.6F).setRainfall(0.6F)).setRegistryName("Birch Forest Hils M"); public static final Biome BIRCH_FOREST_HILLS = new BiomeForestNew(BiomeForest.Type.BIRCH, (new Biome.BiomeProperties("Birch Forest Hills")).setBaseHeight(0.45F).setHeightVariation(0.3F).setTemperature(0.6F).setRainfall(0.6F)).setRegistryName("Birch Forest Hills"); //Snow public static final Biome ICE_PLAINS = new BiomeSnowNew(false, (new Biome.BiomeProperties("Ice Plains")).setBaseHeight(0.125F).setHeightVariation(0.05F).setTemperature(0.0F).setRainfall(0.5F).setSnowEnabled()).setRegistryName("Ice Plains"); public static final Biome ICE_MOUNTAINS = new BiomeSnowNew(false, (new Biome.BiomeProperties("Ice Mountains")).setBaseHeight(0.45F).setHeightVariation(0.3F).setTemperature(0.0F).setRainfall(0.5F).setSnowEnabled()).setRegistryName("Ice Mountains"); public static final Biome MUTATED_ICE_FLATS = new BiomeSnowNew(true, (new Biome.BiomeProperties("Ice Plains Spikes")).setBaseBiome("ice_flats").setBaseHeight(0.425F).setHeightVariation(0.45000002F).setTemperature(0.0F).setRainfall(0.5F).setSnowEnabled()).setRegistryName("Ice Plains Spikes"); //River public static final Biome RIVER = new BiomeRiverNew((new Biome.BiomeProperties("River")).setBaseHeight(-0.5F).setHeightVariation(0.0F)).setRegistryName("River"); public static final Biome FROZEN_RIVER = new BiomeRiverNew((new Biome.BiomeProperties("FrozenRiver")).setBaseHeight(-0.5F).setHeightVariation(0.0F).setTemperature(0.0F).setRainfall(0.5F).setSnowEnabled()).setRegistryName("FrozenRiver"); //Taiga public static final Biome TAIGA = new BiomeTaigaNew(BiomeTaiga.Type.NORMAL, (new Biome.BiomeProperties("Taiga")).setBaseHeight(0.2F).setHeightVariation(0.2F).setTemperature(0.25F).setRainfall(0.8F)).setRegistryName("taiga"); public static final Biome TAIGA_HILLS = new BiomeTaigaNew(BiomeTaiga.Type.NORMAL, (new Biome.BiomeProperties("TaigaHills")).setTemperature(0.25F).setRainfall(0.8F).setBaseHeight(0.45F).setHeightVariation(0.3F)).setRegistryName("TaigaHills"); public static final Biome MUTATED_TAIGA = new BiomeTaigaNew(BiomeTaiga.Type.NORMAL, (new Biome.BiomeProperties("Taiga M")).setBaseBiome("taiga").setBaseHeight(0.3F).setHeightVariation(0.4F).setTemperature(0.25F).setRainfall(0.8F)).setRegistryName("Taiga M");; //Mushroom Island public static final Biome MUSHROOM_ISLAND = new BiomeMushroomIslandNew((new Biome.BiomeProperties("MushroomIsland")).setBaseHeight(0.2F).setHeightVariation(0.3F).setTemperature(0.9F).setRainfall(1.0F)).setRegistryName("MushroomIsland"); public static final Biome MUSHROOM_ISLAND_SHORE = new BiomeMushroomIslandNew((new Biome.BiomeProperties("MushroomIslandShore")).setBaseHeight(0.0F).setHeightVariation(0.025F).setTemperature(0.9F).setRainfall(1.0F)).setRegistryName("MushroomIslandShore"); //Cold Taiga public static final Biome COLD_TAIGA = new BiomeTaigaNew(BiomeTaiga.Type.NORMAL, (new Biome.BiomeProperties("Cold Taiga")).setBaseHeight(0.2F).setHeightVariation(0.2F).setTemperature(-0.5F).setRainfall(0.4F).setSnowEnabled()).setRegistryName("Cold Taiga"); public static final Biome COLD_TAIGA_HILLS = new BiomeTaigaNew(BiomeTaiga.Type.NORMAL, (new Biome.BiomeProperties("Cold Taiga Hills")).setBaseHeight(0.45F).setHeightVariation(0.3F).setTemperature(-0.5F).setRainfall(0.4F).setSnowEnabled()).setRegistryName("Cold Taiga Hills"); public static final Biome MUTATED_TAIGA_COLD = new BiomeTaigaNew(BiomeTaiga.Type.NORMAL, (new Biome.BiomeProperties("Cold Taiga M")).setBaseBiome("taiga_cold").setBaseHeight(0.3F).setHeightVariation(0.4F).setTemperature(-0.5F).setRainfall(0.4F).setSnowEnabled()).setRegistryName("Cold Taiga M");; //Red Wood Taiga public static final Biome MUTATED_REDWOOD_TAIGA = new BiomeTaigaNew(BiomeTaiga.Type.MEGA_SPRUCE, (new Biome.BiomeProperties("Mega Spruce Taiga")).setBaseBiome("redwood_taiga").setBaseHeight(0.2F).setHeightVariation(0.2F).setTemperature(0.25F).setRainfall(0.8F)).setRegistryName("Mega Spruce Taiga"); public static final Biome MUTATED_REDWOOD_TAIGA_HILLS = new BiomeTaigaNew(BiomeTaiga.Type.MEGA_SPRUCE, (new Biome.BiomeProperties("Redwood Taiga Hills M")).setBaseBiome("redwood_taiga_hills").setBaseHeight(0.2F).setHeightVariation(0.2F).setTemperature(0.25F).setRainfall(0.8F)).setRegistryName("Mega Spruce Taiga Hills"); public static final Biome REDWOOD_TAIGA = new BiomeTaigaNew(BiomeTaiga.Type.MEGA, (new Biome.BiomeProperties("Mega Taiga")).setTemperature(0.3F).setRainfall(0.8F).setBaseHeight(0.2F).setHeightVariation(0.2F)).setRegistryName("Mega Taiga"); public static final Biome REDWOOD_TAIGA_HILLS = new BiomeTaigaNew(BiomeTaiga.Type.MEGA, (new Biome.BiomeProperties("Mega Taiga Hills")).setBaseHeight(0.45F).setHeightVariation(0.3F).setTemperature(0.3F).setRainfall(0.8F)).setRegistryName("Mega Taiga Hills"); //Savanna public static final Biome SAVANNA = new BiomeSavannaNew((new Biome.BiomeProperties("Savanna")).setBaseHeight(0.125F).setHeightVariation(0.05F).setTemperature(1.2F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Savanna"); public static final Biome SAVANNA_PLATEAU = new BiomeSavannaNew((new Biome.BiomeProperties("Savanna Plateau")).setBaseHeight(1.5F).setHeightVariation(0.025F).setTemperature(1.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Savanna Plateau"); public static final Biome MUTATED_SAVANNA = new BiomeSavannaMutatedNew((new Biome.BiomeProperties("Savanna M")).setBaseBiome("savanna").setBaseHeight(0.3625F).setHeightVariation(1.225F).setTemperature(1.1F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Savanna M"); public static final Biome MUTATED_SAVANNA_ROCK = new BiomeSavannaMutatedNew((new Biome.BiomeProperties("Savanna Plateau M")).setBaseBiome("savanna_rock").setBaseHeight(1.05F).setHeightVariation(1.2125001F).setTemperature(1.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Savanna Plateau M"); //Mesa public static final Biome MESA = new BiomeMesaNew(false, false, (new Biome.BiomeProperties("Mesa")).setTemperature(2.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Mesa");; public static final Biome MESA_ROCK = new BiomeMesaNew(false, true, (new Biome.BiomeProperties("Mesa Plateau F")).setBaseHeight(1.5F).setHeightVariation(0.025F).setTemperature(2.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Mesa Plateau F");; public static final Biome MESA_CLEAR_ROCK = new BiomeMesaNew(false, false, (new Biome.BiomeProperties("Mesa Plateau")).setBaseHeight(1.5F).setHeightVariation(0.025F).setTemperature(2.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Mesa Plateau"); public static final Biome MUTATED_MESA = new BiomeMesaNew(true, false, (new Biome.BiomeProperties("Mesa (Bryce)")).setBaseBiome("mesa").setTemperature(2.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Mesa Bryce"); public static final Biome MUTATED_MESA_ROCK = new BiomeMesaNew(false, true, (new Biome.BiomeProperties("Mesa Plateau F M")).setBaseBiome("mesa_rock").setBaseHeight(0.45F).setHeightVariation(0.3F).setTemperature(2.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Mesa Plateau F M"); public static final Biome MUTATED_MESA_CLEAR_ROCK = new BiomeMesaNew(false, false, (new Biome.BiomeProperties("Mesa Plateau M")).setBaseBiome("mesa_clear_rock").setBaseHeight(0.45F).setHeightVariation(0.3F).setTemperature(2.0F).setRainfall(0.0F).setRainDisabled()).setRegistryName("Mesa Plateau M"); public static HashMap<Integer, Biome> biomemap= new HashMap<>(); static { biomemap.put(0, OCEAN); biomemap.put(1, PLAINS); biomemap.put(2, DESERT); biomemap.put(3, EXTREME_HILLS); biomemap.put(4, FOREST); biomemap.put(5, TAIGA); biomemap.put(6, SWAMPLAND); biomemap.put(7, RIVER); biomemap.put(8, HELL); biomemap.put(9, SKY); biomemap.put(10, FROZEN_OCEAN); biomemap.put(11, FROZEN_RIVER); biomemap.put(12, ICE_PLAINS); biomemap.put(13, ICE_MOUNTAINS); biomemap.put(14, MUSHROOM_ISLAND); biomemap.put(15, MUSHROOM_ISLAND_SHORE); biomemap.put(16, BEACH); biomemap.put(17, DESERT_HILLS); biomemap.put(18, FOREST_HILLS); biomemap.put(19, TAIGA_HILLS); biomemap.put(20, EXTREME_HILLS_EDGE); biomemap.put(21, JUNGLE); biomemap.put(22, JUNGLE_HILLS); biomemap.put(23, JUNGLE_EDGE); biomemap.put(24, DEEP_OCEAN); biomemap.put(25, STONE_BEACH); biomemap.put(26, COLD_BEACH); biomemap.put(27, BIRCH_FOREST); biomemap.put(28, BIRCH_FOREST_HILLS); biomemap.put(29, ROOFED_FOREST); biomemap.put(30, COLD_TAIGA); biomemap.put(31, COLD_TAIGA_HILLS); biomemap.put(32, REDWOOD_TAIGA); biomemap.put(33, REDWOOD_TAIGA_HILLS); biomemap.put(34, EXTREME_HILLS_WITH_TREES); biomemap.put(35, SAVANNA); biomemap.put(36, SAVANNA_PLATEAU); biomemap.put(37, MESA); biomemap.put(38, MESA_ROCK); biomemap.put(39, MESA_CLEAR_ROCK); biomemap.put(127, VOID); biomemap.put(129, MUTATED_PLAINS); biomemap.put(130, MUTATED_DESERT); biomemap.put(131, MUTATED_EXTREME_HILLS); biomemap.put(132, MUTATED_FOREST); biomemap.put(133, MUTATED_TAIGA); biomemap.put(134, MUTATED_SWAMPLAND); biomemap.put(140, MUTATED_ICE_FLATS); biomemap.put(149, MUTATED_JUNGLE); biomemap.put(151, MUTATED_JUNGLE_EDGE); biomemap.put(155, MUTATED_BIRCH_FOREST); biomemap.put(156, MUTATED_BIRCH_FOREST_HILLS); biomemap.put(157, MUTATED_ROOFED_FOREST); biomemap.put(158, MUTATED_TAIGA_COLD); biomemap.put(160, MUTATED_REDWOOD_TAIGA); biomemap.put(161, MUTATED_REDWOOD_TAIGA_HILLS); biomemap.put(162, MUTATED_EXTREME_HILLS_WITH_TREES); biomemap.put(163, MUTATED_SAVANNA); biomemap.put(164, MUTATED_SAVANNA_ROCK); biomemap.put(165, MUTATED_MESA_ROCK); biomemap.put(166, MUTATED_MESA_CLEAR_ROCK); } } This is the BiomeNew class (This could be the cause of the problem) package com.amurdza.mymod.biomes; import com.amurdza.mymod.entity.mobs.*; import java.util.Random; import javax.annotation.Nullable; import net.minecraft.entity.EntityLiving; import net.minecraft.util.WeightedRandom; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.BiomeDecorator; import net.minecraft.world.gen.feature.WorldGenAbstractTree; import net.minecraft.world.gen.feature.WorldGenMelon; import net.minecraft.world.gen.feature.WorldGenVines; import net.minecraft.block.BlockDoublePlant; import net.minecraft.block.BlockFlower; import net.minecraft.entity.monster.*; import net.minecraft.entity.passive.EntityBat; import net.minecraft.entity.passive.EntityDonkey; import net.minecraft.entity.passive.EntitySquid; public class BiomeNew extends Biome{ private final int plantsscore; private final int flowerscore; private final int cropsscore; private final int animalsscore; private final int mineralsscore; private final int mushroomscore; private final int monstersscore; private final int husbandryscore; private final int treesscore; public BiomeDecoratorNew theBiomeDecorator; public BiomeNew(BiomeProperties properties) { super(properties); plantsscore=BiomeScores.getPlantsScore(this); flowerscore=BiomeScores.getFlowerScore(this); cropsscore=BiomeScores.getCropScore(this); animalsscore=BiomeScores.getAnimalScore(this); mineralsscore=BiomeScores.getMineralScore(this); mushroomscore=BiomeScores.getMushroomScore(this); husbandryscore=BiomeScores.getHusbandryScore(this); treesscore=BiomeScores.getTreeScore(this); monstersscore=BiomeScores.getMonsterScore(this); this.theBiomeDecorator = this.createBiomeDecoratorNew(); if(flowerscore<2) { this.theBiomeDecorator.flowersPerChunk=0; } else if(flowerscore<4) { this.theBiomeDecorator.flowersPerChunk=6; } else if(flowerscore<6) { this.theBiomeDecorator.flowersPerChunk=8; } else if(flowerscore<8) { this.theBiomeDecorator.flowersPerChunk=14; } else if(flowerscore<10) { this.theBiomeDecorator.flowersPerChunk=30; } else { this.theBiomeDecorator.flowersPerChunk=100; } if(monstersscore>0) { this.theBiomeDecorator.dungeonchance=4*monstersscore; this.theBiomeDecorator.useDungeons=true; } else { this.theBiomeDecorator.useDungeons=false; } if(this.cropsscore<2) { this.theBiomeDecorator.pumpkinchance=25; } else if(this.cropsscore<4) { this.theBiomeDecorator.pumpkinchance=25; } else if(this.cropsscore<6) { this.theBiomeDecorator.pumpkinchance=15; } else if(this.cropsscore<8) { this.theBiomeDecorator.pumpkinchance=10; } else { this.theBiomeDecorator.pumpkinchance=10; } if(this.plantsscore<2) { this.theBiomeDecorator.reedsPerChunk=0; } else if(this.plantsscore<4) { this.theBiomeDecorator.reedsPerChunk=3; } else if(this.plantsscore<6) { this.theBiomeDecorator.reedsPerChunk=8; } else if(this.plantsscore<8) { this.theBiomeDecorator.reedsPerChunk=15; } else if(this.plantsscore<10) { this.theBiomeDecorator.reedsPerChunk=30; } if(this.animalsscore<4) { } else if(this.plantsscore<6) { this.theBiomeDecorator.grassPerChunk=10; } else if(this.plantsscore<8) { this.theBiomeDecorator.grassPerChunk=25; } else if(this.plantsscore<10) { this.theBiomeDecorator.grassPerChunk=80; } this.theBiomeDecorator.useMineshafts=false; if(this.mineralsscore<2) { this.theBiomeDecorator.coalmaxheight=0; this.theBiomeDecorator.ironmaxheight=0; this.theBiomeDecorator.redstonemaxheight=0; this.theBiomeDecorator.emeraldmaxheight=0; this.theBiomeDecorator.goldmaxheight=0; this.theBiomeDecorator.lapismaxheight=0; this.theBiomeDecorator.diamondmaxheight=0; this.theBiomeDecorator.useRavines=false; this.theBiomeDecorator.useLavaLakes=false; } else if(this.mineralsscore<4) { this.theBiomeDecorator.coalmaxheight=128; this.theBiomeDecorator.ironmaxheight=64; this.theBiomeDecorator.redstonemaxheight=16; this.theBiomeDecorator.emeraldmaxheight=16; this.theBiomeDecorator.goldmaxheight=32; this.theBiomeDecorator.lapismaxheight=16; this.theBiomeDecorator.diamondmaxheight=16; this.theBiomeDecorator.coalsize=17; this.theBiomeDecorator.ironsize=9; this.theBiomeDecorator.goldsize=9; this.theBiomeDecorator.diamondsize=8; this.theBiomeDecorator.redstonesize=8; this.theBiomeDecorator.lapissize=7; this.theBiomeDecorator.emeraldsize=8; this.theBiomeDecorator.coaltries=20; this.theBiomeDecorator.irontries=20; this.theBiomeDecorator.redstonetries=8; this.theBiomeDecorator.goldtries=2; this.theBiomeDecorator.diamondtries=1; this.theBiomeDecorator.lapistries=1; this.theBiomeDecorator.emeraldtries=1; this.theBiomeDecorator.obsidiantries=8; this.theBiomeDecorator.obsidiansize=5; this.theBiomeDecorator.obsidianmaxheight=32; } else if(this.mineralsscore<6) { this.theBiomeDecorator.coalmaxheight=128; this.theBiomeDecorator.ironmaxheight=80; this.theBiomeDecorator.redstonemaxheight=32; this.theBiomeDecorator.emeraldmaxheight=32; this.theBiomeDecorator.goldmaxheight=64; this.theBiomeDecorator.lapismaxheight=32; this.theBiomeDecorator.diamondmaxheight=32; this.theBiomeDecorator.coalsize=20; this.theBiomeDecorator.ironsize=11; this.theBiomeDecorator.goldsize=10; this.theBiomeDecorator.diamondsize=10; this.theBiomeDecorator.redstonesize=10; this.theBiomeDecorator.lapissize=10; this.theBiomeDecorator.emeraldsize=10; this.theBiomeDecorator.coaltries=24; this.theBiomeDecorator.irontries=24; this.theBiomeDecorator.redstonetries=10; this.theBiomeDecorator.goldtries=4; this.theBiomeDecorator.diamondtries=2; this.theBiomeDecorator.lapistries=2; this.theBiomeDecorator.emeraldtries=2; this.theBiomeDecorator.obsidiantries=10; this.theBiomeDecorator.obsidiansize=8; this.theBiomeDecorator.obsidianmaxheight=64; this.theBiomeDecorator.lavalakechance=80; } else if(this.mineralsscore<8) { this.theBiomeDecorator.useMineshafts=true; this.theBiomeDecorator.coalmaxheight=128; this.theBiomeDecorator.ironmaxheight=128; this.theBiomeDecorator.redstonemaxheight=50; this.theBiomeDecorator.emeraldmaxheight=50; this.theBiomeDecorator.goldmaxheight=80; this.theBiomeDecorator.lapismaxheight=50; this.theBiomeDecorator.diamondmaxheight=50; this.theBiomeDecorator.coalsize=25; this.theBiomeDecorator.ironsize=16; this.theBiomeDecorator.goldsize=14; this.theBiomeDecorator.diamondsize=14; this.theBiomeDecorator.redstonesize=14; this.theBiomeDecorator.lapissize=14; this.theBiomeDecorator.emeraldsize=14; this.theBiomeDecorator.coaltries=27; this.theBiomeDecorator.irontries=27; this.theBiomeDecorator.redstonetries=15; this.theBiomeDecorator.goldtries=10; this.theBiomeDecorator.diamondtries=5; this.theBiomeDecorator.lapistries=5; this.theBiomeDecorator.emeraldtries=5; this.theBiomeDecorator.obsidiantries=12; this.theBiomeDecorator.obsidiansize=15; this.theBiomeDecorator.obsidianmaxheight=80; this.theBiomeDecorator.lavalakechance=40; } else if(this.mineralsscore<10) { this.theBiomeDecorator.useMineshafts=true; this.theBiomeDecorator.coalmaxheight=128; this.theBiomeDecorator.ironmaxheight=128; this.theBiomeDecorator.redstonemaxheight=70; this.theBiomeDecorator.emeraldmaxheight=70; this.theBiomeDecorator.goldmaxheight=128; this.theBiomeDecorator.lapismaxheight=70; this.theBiomeDecorator.diamondmaxheight=70; this.theBiomeDecorator.coalsize=32; this.theBiomeDecorator.ironsize=24; this.theBiomeDecorator.goldsize=18; this.theBiomeDecorator.diamondsize=18; this.theBiomeDecorator.redstonesize=18; this.theBiomeDecorator.lapissize=18; this.theBiomeDecorator.emeraldsize=18; this.theBiomeDecorator.coaltries=35; this.theBiomeDecorator.irontries=35; this.theBiomeDecorator.redstonetries=20; this.theBiomeDecorator.goldtries=20; this.theBiomeDecorator.diamondtries=10; this.theBiomeDecorator.lapistries=10; this.theBiomeDecorator.emeraldtries=10; this.theBiomeDecorator.obsidiantries=20; this.theBiomeDecorator.obsidiansize=18; this.theBiomeDecorator.obsidianmaxheight=128; this.theBiomeDecorator.lavalakechance=20; } if(this.mushroomscore<2) { this.theBiomeDecorator.mushroomsPerChunk=0; } else if(this.mushroomscore<4) { this.theBiomeDecorator.mushroomsPerChunk=2; } else if(this.mushroomscore<6) { this.theBiomeDecorator.mushroomsPerChunk=6; } else if(this.mushroomscore<8) { this.theBiomeDecorator.mushroomsPerChunk=10; } else if(this.mushroomscore<10) { this.theBiomeDecorator.mushroomsPerChunk=16; } this.spawnableCreatureList.clear(); this.spawnableCreatureList.add(new Biome.SpawnListEntry(EntitySheepNew.class, 10, 4, 4)); this.spawnableCreatureList.add(new Biome.SpawnListEntry(EntityPigNew.class, 10, 4, 4)); this.spawnableCreatureList.add(new Biome.SpawnListEntry(EntityChickenNew.class, 10, 4, 4)); this.spawnableCreatureList.add(new Biome.SpawnListEntry(EntityCowNew.class, 10, 4, 4)); this.spawnableCreatureList.add(new Biome.SpawnListEntry(EntityChickenNew.class, 10, 4, 4)); this.spawnableCreatureList.add(new Biome.SpawnListEntry(EntityRabbitNew.class, 10, 2, 3)); this.spawnableCreatureList.add(new Biome.SpawnListEntry(EntityHorseNew.class, 5, 2, 3)); this.spawnableCreatureList.add(new Biome.SpawnListEntry(EntityDonkey.class, 3, 2, 3)); this.spawnableCreatureList.add(new Biome.SpawnListEntry(EntityLlamaNew.class, 3, 2, 3)); this.spawnableMonsterList.add(new Biome.SpawnListEntry(EntitySpider.class, 100, 4, 4)); this.spawnableMonsterList.add(new Biome.SpawnListEntry(EntityZombie.class, 95, 4, 4)); this.spawnableMonsterList.add(new Biome.SpawnListEntry(EntityZombieVillager.class, 5, 1, 1)); this.spawnableMonsterList.add(new Biome.SpawnListEntry(EntitySkeleton.class, 100, 4, 4)); // this.spawnableMonsterList.add(new Biome.SpawnListEntry(EntityCreeper.class, 100, 4, 4)); this.spawnableMonsterList.add(new Biome.SpawnListEntry(EntitySlime.class, 100, 4, 4)); this.spawnableMonsterList.add(new Biome.SpawnListEntry(EntityEnderman.class, 10, 1, 4)); this.spawnableMonsterList.add(new Biome.SpawnListEntry(EntityWitch.class, 5, 1, 1)); this.spawnableWaterCreatureList.add(new Biome.SpawnListEntry(EntitySquid.class, 10, 4, 4)); this.spawnableCaveCreatureList.add(new Biome.SpawnListEntry(EntityBat.class, 10, 8, 8)); } public BiomeDecoratorNew createBiomeDecoratorNew() { return new BiomeDecoratorNew(); } public BlockFlower.EnumFlowerType pickRandomFlower(Random rand, BlockPos pos) { if(this.flowerscore<2) { return rand.nextInt(2) > 0 ? BlockFlower.EnumFlowerType.DANDELION : BlockFlower.EnumFlowerType.POPPY; } if(this.flowerscore<4) { int randnum=rand.nextInt(8); if(randnum==0) { return BlockFlower.EnumFlowerType.DANDELION; } else if(randnum==1) { return BlockFlower.EnumFlowerType.POPPY; } else if(randnum==2) { return BlockFlower.EnumFlowerType.HOUSTONIA; } else if(randnum==3) { return BlockFlower.EnumFlowerType.OXEYE_DAISY; } else if(randnum==4) { return BlockFlower.EnumFlowerType.WHITE_TULIP; } else if(randnum==5) { return BlockFlower.EnumFlowerType.PINK_TULIP; } else if(randnum==6) { return BlockFlower.EnumFlowerType.ORANGE_TULIP; } else { return BlockFlower.EnumFlowerType.RED_TULIP; } } else { int randnum=rand.nextInt(12); if(randnum==0) { return BlockFlower.EnumFlowerType.DANDELION; } else if(randnum==1) { return BlockFlower.EnumFlowerType.POPPY; } else if(randnum==2) { return BlockFlower.EnumFlowerType.HOUSTONIA; } else if(randnum==3) { return BlockFlower.EnumFlowerType.OXEYE_DAISY; } else if(randnum==4) { return BlockFlower.EnumFlowerType.WHITE_TULIP; } else if(randnum==5) { return BlockFlower.EnumFlowerType.PINK_TULIP; } else if(randnum==6) { return BlockFlower.EnumFlowerType.ORANGE_TULIP; } else if(randnum==7) { return BlockFlower.EnumFlowerType.ORANGE_TULIP; } else if(randnum==8) { return BlockFlower.EnumFlowerType.ORANGE_TULIP; } else if(randnum==9){ return BlockFlower.EnumFlowerType.RED_TULIP; } else if(randnum==10){ return BlockFlower.EnumFlowerType.ALLIUM; } else { return BlockFlower.EnumFlowerType.BLUE_ORCHID; } } } public float getSpawningChance() { if(this.animalsscore<2) { return 0.07F; } else if(this.animalsscore<4) { return 0.10F; } else if(this.animalsscore<6) { return 0.15F; } else if(animalsscore<8) { return 0.20F; } else { return 0.30F; } } public void decorate(World worldIn, Random rand, BlockPos pos) { this.theBiomeDecorator.decorate(worldIn, rand, this, pos); if(this.flowerscore>4) { int i = rand.nextInt(5) - 3; if(this.flowerscore>6) { i=i+2; } if(this.flowerscore>6) { i=i+3; } this.addDoublePlants(worldIn, rand, pos, i); } if(this.cropsscore>4) { int i = rand.nextInt(16) + 8; int j = rand.nextInt(16) + 8; int k = rand.nextInt(worldIn.getHeight(pos.add(i, 0, j)).getY() * 2); (new WorldGenMelon()).generate(worldIn, rand, pos.add(i, k, j)); } if(this.plantsscore>4) { DOUBLE_PLANT_GENERATOR.setPlantType(BlockDoublePlant.EnumPlantType.FERN); WorldGenVines worldgenvines = new WorldGenVines(); for (int j1 = 0; j1 < 50; ++j1) { int k1 = rand.nextInt(16) + 8; int l = 128; int i1 = rand.nextInt(16) + 8; worldgenvines.generate(worldIn, rand, pos.add(k1, 128, i1)); } for (int i1 = 0; i1 < 7; ++i1) { int j1 = rand.nextInt(16) + 8; int k1 = rand.nextInt(16) + 8; int l1 = rand.nextInt(worldIn.getHeight(pos.add(j1, 0, k1)).getY() + 32); DOUBLE_PLANT_GENERATOR.generate(worldIn, rand, pos.add(j1, l1, k1)); } } if(this.plantsscore>6) { for (int i1 = 0; i1 < 7; ++i1) { int j1 = rand.nextInt(16) + 8; int k1 = rand.nextInt(16) + 8; int l1 = rand.nextInt(worldIn.getHeight(pos.add(j1, 0, k1)).getY() + 32); DOUBLE_PLANT_GENERATOR.generate(worldIn, rand, pos.add(j1, l1, k1)); } } } protected void addDoublePlants(World p_185378_1_, Random p_185378_2_, BlockPos p_185378_3_, int p_185378_4_) { for (int i = 0; i < p_185378_4_; ++i) { int j = p_185378_2_.nextInt(3); if (j == 0) { DOUBLE_PLANT_GENERATOR.setPlantType(BlockDoublePlant.EnumPlantType.SYRINGA); } else if (j == 1) { DOUBLE_PLANT_GENERATOR.setPlantType(BlockDoublePlant.EnumPlantType.ROSE); } else if (j == 2) { DOUBLE_PLANT_GENERATOR.setPlantType(BlockDoublePlant.EnumPlantType.PAEONIA); } for (int k = 0; k < 5; ++k) { int l = p_185378_2_.nextInt(16) + 8; int i1 = p_185378_2_.nextInt(16) + 8; int j1 = p_185378_2_.nextInt(p_185378_1_.getHeight(p_185378_3_.add(l, 0, i1)).getY() + 32); if (DOUBLE_PLANT_GENERATOR.generate(p_185378_1_, p_185378_2_, new BlockPos(p_185378_3_.getX() + l, j1, p_185378_3_.getZ() + i1))) { break; } } } } public WorldGenAbstractTree genBigTreeChance(Random rand) { return (WorldGenAbstractTree)(rand.nextInt(10) == 0 ? BIG_TREE_FEATURE : TREE_FEATURE); } } This is the BiomeProviderNew class (This might be the cause of the problem, but I don't think so) package com.amurdza.mymod.biomes; import java.lang.reflect.Field; import com.google.common.collect.Lists; import net.minecraft.crash.CrashReport; import net.minecraft.crash.CrashReportCategory; import net.minecraft.init.Biomes; import net.minecraft.util.ReportedException; import net.minecraft.util.math.BlockPos; import net.minecraft.world.WorldType; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.BiomeCache; import net.minecraft.world.biome.BiomeProvider; import net.minecraft.world.gen.ChunkGeneratorSettings; import net.minecraft.world.gen.layer.*; import net.minecraft.world.storage.WorldInfo; public class BiomeProviderNew extends BiomeProvider{ protected Field settingssetter; protected Field genBiomessetter; protected Field biomeIndexLayersetter; protected Field parentgetter; protected Field cachegetter; protected BiomeProviderNew() throws NoSuchFieldException, SecurityException { super(); settingssetter=BiomeProvider.class.getDeclaredField("settings"); genBiomessetter=BiomeProvider.class.getDeclaredField("genBiomes"); biomeIndexLayersetter=BiomeProvider.class.getDeclaredField("biomeIndexLayer"); parentgetter=BiomeProvider.class.getDeclaredField("biomeIndexLayer"); cachegetter=BiomeProvider.class.getDeclaredField("biomeCache"); settingssetter.setAccessible(true); genBiomessetter.setAccessible(true); biomeIndexLayersetter.setAccessible(true); parentgetter.setAccessible(true); cachegetter.setAccessible(true); } public Biome getBiome(BlockPos pos, Biome defaultBiome) { try { return ((BiomeCache)cachegetter.get(this)).getBiome(pos.getX(), pos.getZ(), defaultBiome); } catch (IllegalArgumentException | IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("biome not found!"); return BiomesNew.OCEAN; } } public BiomeProviderNew(WorldInfo info) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException { this(info.getSeed(), info.getTerrainType(), info.getGeneratorOptions()); } private BiomeProviderNew(long seed, WorldType worldTypeIn, String options) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException { this(); if (worldTypeIn == WorldType.CUSTOMIZED && !options.isEmpty()) { settingssetter.set(this,ChunkGeneratorSettings.Factory.jsonToFactory(options).build()); } GenLayer[] agenlayer = this.initializeGenerators(seed, worldTypeIn, (ChunkGeneratorSettings) settingssetter.get(this)); agenlayer = getModdedBiomeGenerators(worldTypeIn, seed, agenlayer); genBiomessetter.set(this,agenlayer[0]); biomeIndexLayersetter.set(this,agenlayer[1]); } public Biome[] getBiomesForGeneration(Biome[] biomes, int x, int z, int width, int height) { IntCache.resetIntCache(); if (biomes == null || biomes.length < width * height) { biomes = new Biome[width * height]; } int[] aint = null; try { aint = ((GenLayer)genBiomessetter.get(this)).getInts(x, z, width, height); } catch (IllegalArgumentException | IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { for (int i = 0; i < width * height; ++i) { biomes = Biome.getBiome(aint, Biomes.DEFAULT); } return biomes; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.makeCrashReport(throwable, "Invalid Biome id"); CrashReportCategory crashreportcategory = crashreport.makeCategory("RawBiomeBlock"); crashreportcategory.addCrashSection("biomes[] size", Integer.valueOf(biomes.length)); crashreportcategory.addCrashSection("x", Integer.valueOf(x)); crashreportcategory.addCrashSection("z", Integer.valueOf(z)); crashreportcategory.addCrashSection("w", Integer.valueOf(width)); crashreportcategory.addCrashSection("h", Integer.valueOf(height)); throw new ReportedException(crashreport); } } public GenLayer[] initializeGenerators(long seed, WorldType p_180781_2_, ChunkGeneratorSettings p_180781_3_) { GenLayer genlayer = new GenLayerIsland(1L); genlayer = new GenLayerFuzzyZoom(2000L, genlayer); GenLayer genlayeraddisland = new GenLayerAddIsland(1L, genlayer); GenLayer genlayerzoom = new GenLayerZoom(2001L, genlayeraddisland); GenLayer genlayeraddisland1 = new GenLayerAddIsland(2L, genlayerzoom); genlayeraddisland1 = new GenLayerAddIsland(50L, genlayeraddisland1); genlayeraddisland1 = new GenLayerAddIsland(70L, genlayeraddisland1); GenLayer genlayerremovetoomuchocean = new GenLayerRemoveTooMuchOcean(2L, genlayeraddisland1); GenLayer genlayeraddsnow = new GenLayerAddSnow(2L, genlayerremovetoomuchocean); GenLayer genlayeraddisland2 = new GenLayerAddIsland(3L, genlayeraddsnow); GenLayer genlayeredge = new GenLayerEdge(2L, genlayeraddisland2, GenLayerEdge.Mode.COOL_WARM); genlayeredge = new GenLayerEdge(2L, genlayeredge, GenLayerEdge.Mode.HEAT_ICE); genlayeredge = new GenLayerEdge(3L, genlayeredge, GenLayerEdge.Mode.SPECIAL); GenLayer genlayerzoom1 = new GenLayerZoom(2002L, genlayeredge); genlayerzoom1 = new GenLayerZoom(2003L, genlayerzoom1); GenLayer genlayeraddisland3 = new GenLayerAddIsland(4L, genlayerzoom1); GenLayer genlayeraddmushroomisland = new GenLayerAddMushroomIsland(5L, genlayeraddisland3); GenLayer genlayerdeepocean = new GenLayerDeepOcean(4L, genlayeraddmushroomisland); GenLayer genlayer4 = GenLayerZoom.magnify(1000L, genlayerdeepocean, 0); int i = 4; int j = i; if (p_180781_3_ != null) { i = p_180781_3_.biomeSize; j = p_180781_3_.riverSize; } if (p_180781_2_ == WorldType.LARGE_BIOMES) { i = 6; } i = getModdedBiomeSize(p_180781_2_, i); GenLayer lvt_7_1_ = GenLayerZoom.magnify(1000L, genlayer4, 0); GenLayer genlayerriverinit = new GenLayerRiverInit(100L, lvt_7_1_); GenLayer genlayerbiomeedge = this.getBiomeLayer(seed, genlayer4, p_180781_3_, p_180781_2_); GenLayer lvt_9_1_ = GenLayerZoom.magnify(1000L, genlayerriverinit, 2); GenLayer genlayerhills = new GenLayerHills(1000L, genlayerbiomeedge, lvt_9_1_); GenLayer genlayer5 = GenLayerZoom.magnify(1000L, genlayerriverinit, 2); genlayer5 = GenLayerZoom.magnify(1000L, genlayer5, j); GenLayer genlayerriver = new GenLayerRiver(1L, genlayer5); GenLayer genlayersmooth = new GenLayerSmooth(1000L, genlayerriver); genlayerhills = new GenLayerRareBiome(1001L, genlayerhills); for (int k = 0; k < i; ++k) { genlayerhills = new GenLayerZoom((long)(1000 + k), genlayerhills); if (k == 0) { genlayerhills = new GenLayerAddIsland(3L, genlayerhills); } if (k == 1 || i == 1) { genlayerhills = new GenLayerShore(1000L, genlayerhills); } } GenLayer genlayersmooth1 = new GenLayerSmooth(1000L, genlayerhills); GenLayer genlayerrivermix = new GenLayerRiverMix(100L, genlayersmooth1, genlayersmooth); GenLayer genlayer3 = new GenLayerVoronoiZoom(10L, genlayerrivermix); genlayerrivermix.initWorldGenSeed(seed); genlayer3.initWorldGenSeed(seed); return new GenLayer[] {genlayerrivermix, genlayer3, genlayerrivermix}; } public GenLayer getBiomeLayer(long seed, GenLayer parentLayer, ChunkGeneratorSettings chunkSettings, WorldType worldType) { net.minecraft.world.gen.layer.GenLayer ret= new GenLayerBiomeNew(200L, parentLayer, worldType, chunkSettings); ret = net.minecraft.world.gen.layer.GenLayerZoom.magnify(1000L, ret, 2); ret = new net.minecraft.world.gen.layer.GenLayerBiomeEdge(1000L, ret); return ret; } public static int getModdedBiomeSize(WorldType worldType, int original) { net.minecraftforge.event.terraingen.WorldTypeEvent.BiomeSize event = new net.minecraftforge.event.terraingen.WorldTypeEvent.BiomeSize(worldType, original); net.minecraftforge.common.MinecraftForge.TERRAIN_GEN_BUS.post(event); return event.getNewSize(); } } This is GenLayerBiomeNew (I don't think that this is the cause of the problem) package com.amurdza.mymod.biomes; import net.minecraft.init.Biomes; import net.minecraft.world.WorldType; import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.ChunkGeneratorSettings; import net.minecraft.world.gen.layer.GenLayer; import net.minecraft.world.gen.layer.GenLayerBiome; import net.minecraft.world.gen.layer.IntCache; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.common.BiomeManager.BiomeType; public class GenLayerBiomeNew extends GenLayerBiome { @SuppressWarnings("unchecked") private java.util.List<net.minecraftforge.common.BiomeManager.BiomeEntry>[] biomes1 = new java.util.ArrayList[net.minecraftforge.common.BiomeManager.BiomeType.values().length]; private final ChunkGeneratorSettings settings1; public GenLayerBiomeNew(long p_i45560_1_, GenLayer p_i45560_3_, WorldType p_i45560_4_, ChunkGeneratorSettings p_i45560_5_) { super(p_i45560_1_, p_i45560_3_, p_i45560_4_, p_i45560_5_); this.parent = p_i45560_3_; for (net.minecraftforge.common.BiomeManager.BiomeType type : net.minecraftforge.common.BiomeManager.BiomeType.values()) { com.google.common.collect.ImmutableList<net.minecraftforge.common.BiomeManager.BiomeEntry> biomesToAdd = net.minecraftforge.common.BiomeManager.getBiomes(type); int idx = type.ordinal(); if (biomes1[idx] == null) biomes1[idx] = new java.util.ArrayList<net.minecraftforge.common.BiomeManager.BiomeEntry>(); if (biomesToAdd != null) biomes1[idx].addAll(biomesToAdd); } int desertIdx = net.minecraftforge.common.BiomeManager.BiomeType.DESERT.ordinal(); biomes1[desertIdx].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(Biomes.DESERT, 30)); biomes1[desertIdx].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(Biomes.SAVANNA, 20)); biomes1[desertIdx].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(Biomes.PLAINS, 10)); if (p_i45560_4_ == WorldType.DEFAULT_1_1) { biomes1[desertIdx].clear(); biomes1[desertIdx].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(Biomes.DESERT, 10)); biomes1[desertIdx].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(Biomes.FOREST, 10)); biomes1[desertIdx].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(Biomes.EXTREME_HILLS, 10)); biomes1[desertIdx].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(Biomes.SWAMPLAND, 10)); biomes1[desertIdx].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(Biomes.PLAINS, 10)); biomes1[desertIdx].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(Biomes.TAIGA, 10)); this.settings1 = null; } else { this.settings1 = p_i45560_5_; } int desertnum=BiomeManager.BiomeType.DESERT.ordinal(); int coolnum=BiomeManager.BiomeType.COOL.ordinal(); int warmnum=BiomeManager.BiomeType.WARM.ordinal(); int icynum=BiomeManager.BiomeType.ICY.ordinal(); biomes1[desertnum].clear(); biomes1[warmnum].clear(); biomes1[icynum].clear(); biomes1[coolnum].clear(); biomes1[desertnum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.DESERT, 40)); biomes1[desertnum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.SAVANNA, 120)); biomes1[desertnum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.PLAINS, 20)); biomes1[desertnum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.SWAMPLAND, 70)); biomes1[icynum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.COLD_TAIGA, 30)); biomes1[icynum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.ICE_PLAINS, 30)); biomes1[icynum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.TAIGA, 40)); biomes1[icynum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.EXTREME_HILLS, 60)); biomes1[icynum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.PLAINS, 80)); biomes1[icynum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.BIRCH_FOREST, 10)); biomes1[warmnum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.JUNGLE, 250)); biomes1[coolnum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.FOREST, 100)); biomes1[coolnum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.SWAMPLAND, 30)); biomes1[coolnum].add(new net.minecraftforge.common.BiomeManager.BiomeEntry(BiomesNew.ROOFED_FOREST, 120)); } /** * Returns a list of integer values generated by this layer. These may be interpreted as temperatures, rainfall * amounts, or Biome ID's based on the particular GenLayer subclass. */ public int[] getInts(int areaX, int areaY, int areaWidth, int areaHeight) { int[] aint = this.parent.getInts(areaX, areaY, areaWidth, areaHeight); int[] aint1 = IntCache.getIntCache(areaWidth * areaHeight); for (int i = 0; i < areaHeight; ++i) { for (int j = 0; j < areaWidth; ++j) { this.initChunkSeed((long)(j + areaX), (long)(i + areaY)); int k = aint[j + i * areaWidth]; int l = (k & 3840) >> 8; k = k & -3841; if (this.settings1 != null && this.settings1.fixedBiome >= 0) { aint1[j + i * areaWidth] = this.settings1.fixedBiome; } else if (isBiomeOceanic(k)) { aint1[j + i * areaWidth] = k; } else if (k == Biome.getIdForBiome(Biomes.MUSHROOM_ISLAND)) { aint1[j + i * areaWidth] = k; } else if (k == 1) { if (l > 0) { if (this.nextInt(3) == 0) { aint1[j + i * areaWidth] = Biome.getIdForBiome(BiomesNew.MESA_CLEAR_ROCK); } else { aint1[j + i * areaWidth] = Biome.getIdForBiome(BiomesNew.MESA_ROCK); } } else { aint1[j + i * areaWidth] = Biome.getIdForBiome(getWeightedBiomeEntry(net.minecraftforge.common.BiomeManager.BiomeType.DESERT).biome); } } else if (k == 2) { if (l > 0) { aint1[j + i * areaWidth] = Biome.getIdForBiome(BiomesNew.JUNGLE); } else { aint1[j + i * areaWidth] = Biome.getIdForBiome(getWeightedBiomeEntry(net.minecraftforge.common.BiomeManager.BiomeType.WARM).biome); } } else if (k == 3) { if (l > 0) { aint1[j + i * areaWidth] = Biome.getIdForBiome(BiomesNew.MUSHROOM_ISLAND); } else { aint1[j + i * areaWidth] = Biome.getIdForBiome(getWeightedBiomeEntry(net.minecraftforge.common.BiomeManager.BiomeType.COOL).biome); } } else if (k == 4) { if (l > 0) { aint1[j + i * areaWidth] = Biome.getIdForBiome(BiomesNew.REDWOOD_TAIGA); } else { aint1[j + i * areaWidth] = Biome.getIdForBiome(getWeightedBiomeEntry(net.minecraftforge.common.BiomeManager.BiomeType.ICY).biome); } } else { aint1[j + i * areaWidth] = Biome.getIdForBiome(Biomes.MUSHROOM_ISLAND); } } } return aint1; } protected net.minecraftforge.common.BiomeManager.BiomeEntry getWeightedBiomeEntry(net.minecraftforge.common.BiomeManager.BiomeType type) { java.util.List<net.minecraftforge.common.BiomeManager.BiomeEntry> biomeList = biomes1[type.ordinal()]; int totalWeight = net.minecraft.util.WeightedRandom.getTotalWeight(biomeList); int weight = net.minecraftforge.common.BiomeManager.isTypeListModded(type)?nextInt(totalWeight):nextInt(totalWeight / 10) * 10; return (net.minecraftforge.common.BiomeManager.BiomeEntry)net.minecraft.util.WeightedRandom.getRandomItem(biomeList, weight); } } Biome Registry Handler (I don't think this is the source of the problem, I did not recently change it) package com.amurdza.mymod.biomes; import net.minecraft.world.biome.Biome; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.registries.IForgeRegistry; @EventBusSubscriber public class BiomeRegistryHandler { @SubscribeEvent public static void onBiomeRegister(RegistryEvent.Register<Biome> event) { Object[] biomelist = BiomesNew.biomemap.values().toArray(); for(int k=0;k<BiomesNew.biomemap.size();k++) { event.getRegistry().register((Biome)biomelist[k]); } } } Biome registerer (I don't think this is the problem I did not recently change it) package com.amurdza.mymod.biomes; import net.minecraft.world.biome.Biome; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.fml.common.registry.ForgeRegistries; public class BiomeRegisterer { public static void registerBiomes() { Object[] biomelist = BiomesNew.biomemap.values().toArray(); for(int k=0;k<BiomesNew.biomemap.size();k++) { BiomeManager.addSpawnBiome((Biome)biomelist[k]); } } } Custom Biome Provider (I strongly believe the issue is not related to this class because I don't remember recently changing it) package com.amurdza.mymod.biomes; import java.lang.reflect.Field; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.client.network.NetHandlerPlayClient; import net.minecraft.profiler.Profiler; import net.minecraft.server.MinecraftServer; import net.minecraft.world.EnumDifficulty; import net.minecraft.world.World; import net.minecraft.world.WorldProvider; import net.minecraft.world.WorldServer; import net.minecraft.world.WorldServerMulti; import net.minecraft.world.biome.BiomeProvider; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.storage.ISaveHandler; import net.minecraft.world.storage.WorldInfo; import net.minecraftforge.event.world.ChunkDataEvent; import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.ForgeRegistries; public class CustomBiomeProvider { @SubscribeEvent public void OnDimensionLoad(WorldEvent event) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException { World oldworld = event.getWorld(); WorldProvider oldworldprovider=event.getWorld().provider; Field biomeprovidersetter=WorldProvider.class.getDeclaredField("biomeProvider"); biomeprovidersetter.setAccessible(true); BiomeProviderNew newbiomeprovider = new BiomeProviderNew(event.getWorld().getWorldInfo()); biomeprovidersetter.set(oldworldprovider,(BiomeProvider)newbiomeprovider); } }
  23. I registered all of the biomes and changed the BiomeProvider getBiomesForGeneration and now it works!!! Thank you so so so much!! I have been working on this for weeks!! I really appreciate your help Jabelar and Animefan8888!! If I post my mod online I will attach Jabelar's tutorial on biomes and Animefan G.'s youtube channel and I will give you credit for your role in it. I am not completely sure I will post it outline (I was originally intended for personal use and for my family if they could learn minecraft, but I might make it public.
  24. Dear Animefan8888, This makes a lot of sense! But how to I give my custom biomes an ID? The methods I am aware of are ForgeRegistries.BIOMES.registerBiome(mybiome), BiomeManager.addBiome, BiomeManager.addSpawnBiome, and BiomeDictionary.addType. None of these take an ID as an input. I'm sure there is such a method though. How do I set or determine the id of my custom biomes? Thanks, Andrew Murdza
×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.