Underground Biomes

Underground Biomes

4M Downloads

At least 20 stone variations needed to initiate world generation

Sethgno opened this issue ยท 4 comments

commented

tested on fresh instance with UBC 1.3.14

on generating a new world, game will crash under certain unknown conditions.
all crash states have been achieved after setting a number of "Generate x stone" to 'false' in the cfg file.

below i have posted a cfg state that will successfully generate a world without crashing.
however, setting soapstone to 'false' in this example will then cause world generation to fail with the below error log.

undergroundbiomes.cfg (doesnt crash)
https://pastebin.com/8n71vwWs

error log (after 'soapstone = false', and potentially others)
https://pastebin.com/bKLYjbi0

at first i thought it would crash after a certain number of the generate settings were set to 'false', but after more testing it appears kind of random depending on the other cfg settings (e.g. create buttons, replace features, etc.), but the common factor is that it always crashes after reaching a threshold of 'false' generator settings.
also interestingly enough the crash log is like 10x longer without other mods present

commented

Disabling variations of stairs, buttons or such will cause recipes to be invalid with a noticeable log spam during boot. It saves you a few block ids but exposes yourself to a forge limitation regarding recipes, not much can be done to reduce this spam.

As for the specific crash, it's this log:

[05:05:35] [Server thread/INFO] [undergroundbiomes]: [UBConfig] Loading configuration
[05:05:35] [Server thread/ERROR] [FML]: Exception caught during firing event net.minecraftforge.event.world.WorldEvent$Load@36aad8dd:
java.lang.ArrayIndexOutOfBoundsException: 20
	at exterminatorjeff.undergroundbiomes.world.UBBiomesSet.<init>(UBBiomesSet.java:76) ~[UBBiomesSet.class:?]
	at exterminatorjeff.undergroundbiomes.world.WorldGenManager.<init>(WorldGenManager.java:44) ~[WorldGenManager.class:?]
	at exterminatorjeff.undergroundbiomes.core.DimensionManager.lambda$refreshManagers$0(DimensionManager.java:66) ~[DimensionManager.class:?]
	at java.util.ArrayList.forEach(Unknown Source) ~[?:1.8.0_171]
	at exterminatorjeff.undergroundbiomes.core.DimensionManager.refreshManagers(DimensionManager.java:65) ~[DimensionManager.class:?]
	at exterminatorjeff.undergroundbiomes.core.CommonProxy.onServerLoad(CommonProxy.java:195) ~[CommonProxy.class:?]
	at exterminatorjeff.undergroundbiomes.core.DimensionManager.onWorldLoad(DimensionManager.java:74) ~[DimensionManager.class:?]
	at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_19_DimensionManager_onWorldLoad_Load.invoke(.dynamic) ~[?:?]
	at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
	at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182) [EventBus.class:?]
	at net.minecraft.server.integrated.IntegratedServer.func_71247_a(IntegratedServer.java:132) [chd.class:?]
	at net.minecraft.server.integrated.IntegratedServer.func_71197_b(IntegratedServer.java:156) [chd.class:?]
	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:486) [MinecraftServer.class:?]
	at java.lang.Thread.run(Unknown Source) [?:1.8.0_171]

Long story short, you need to keep at least 20 different stone variations for world generation to work. Even if you only remove a couple of them, there's some side effects in the world generation.
You're better off making a resource pack to rename and retexture the stone variations you don't want.

commented

would it be possible to add an option to completely disable all generation and all recipes at once, before theyre created, so as to allow for third party generation instead? or would that require rewriting the recipes also / result in the same

commented

Vanilla resources packs already allows to override recipes, and the mod's configuration already allow to filter per dimension, so...

commented

oh i thought the dimension filter would also cause it to crash but looks like it works, k thx