[Experimental Feature Issue] Crashing when trying to load Indev Style World.
Closed this issue ยท 34 comments
I am getting this crash whenever I try to load up an Indev-Style world with the experimental chunk saving feature turned on:
crash-2024-11-29_13.26.23-server.txt
Let me know if anything else is needed.
Could you also attach the generator settings used for the world generation? And how much memory is allocated to your Minecraft instance?
The crash message indicates Minecraft ran out of memory, which could happen with either large Indev worlds (the entire world is generated at once) or the chunk saving feature (or both) enabled. I've tested with 8gb of memory allocated, but in your case, with a large set of mods you may need more.
EDIT: Does the crash still happen with the same generator settings but the chunk saving feature turned off?
EDIT 2: In any case, I will look into optimizing memory usage for Indev worlds.
How can I attach the generator settings?
The memory allocated is 12GB.
For edit 1, I haven't tried yet. I can try now, which will take a while to load.
You can grab the preset text, which are the generator settings, from the Customize World Presets screen.
Not sure what your memory usage is like for your modpack without Modern Beta, but 12GB should be enough, so that's definitely problematic. I'll work on optimizing memory usage.
I am trying to generate a 1024x1024x256 world [largest size supported] as kind of a stress test.
It's also set to Normal and Inland for Worldgen.
I figured that I'd test out the max settings since people might automatically do the same.
[It's also a stress test of features in my modpack, and just how useful my systems are on limited maps.]
Update 1: Loaded into my modpack. Trying to launch the save seems to take a long time, still sitting at "Loading World".
If it just fails to load, I'll see about trying a 512x512x256 world with the Save Feature turned back on.
When generating an Indev level, you can look at the console to see the current generation step. The order you should see for a non-floating level should be:
- Raising
- Eroding
- Soiling
- Growing
- Carving
- Melting
- Watering
- Planting
- Assembling (the level saving step happens here)
If you're using the vanilla launcher, it's Settings -> Open output log when Minecraft: Java Edition starts
If you're using MultiMC/Prism launcher, then Edit -> Minecraft log
I see. I'll have to crash my game and relaunch it, which will take a while.
It'll be around a half hour. [Working on fixing that load time, but figuring out how has been tricky.]
Edit 1: My world finally loaded up, out of the blue, but the client appears to be severely low on memory.
I'll still have to crash it anyway because it's not responding...
Edit 2: This output log reminds me of the old FTB Launcher and how it would open it by default.
Thanks for taking the time to test the world generation. If you don't mind answering one more question; what are your hardware specs? Thanks.
You're welcome.
My Hardware Specifications are:
CPU: AMD Ryzen 9 5900X
RAM: 32GB (12GB Allocated) DDR4
GPU: NVIDIA GeForce RTX 3060
Thank you. I've implemented a new level data structure that consumes significantly less memory at the cost of somewhat slower world generation times, not too noticeable unless you're generating floating Indev levels with the maximum dimensions. It will also let me bump up the max level width/length to 2048. Will be testing this for a bit and it should be out with the next update!
A few days I think. The next update was originally going to be a small bugfix one, but now it includes a few new things, including this update to Indev world generation, so I'll be taking my time to test.
Out of curiosity, when the option is off, does just the Overworld regenerate, or does every dimension regenerate?
Update 1: 512x512x256 seems to be playable.
Update 2: I think I just found another bug.
New Bug Found, Internal Server is stuck in an infinite loop when generating the Stronghold:
Limited World Dimensions are 512x512x256
[Here's the thread dump, I can send over the file, if needed.]
"Server thread" #335 prio=3 os_prio=-1 tid=0x0000000079e2c000 nid=0x1ecc runnable [0x000000004f47d000]
java.lang.Thread.State: RUNNABLE
at java.util.HashMap.hash(HashMap.java:338)
at java.util.HashMap.computeIfAbsent(HashMap.java:1090)
at net.minecraftforge.common.util.ModFixs.getFixes(ModFixs.java:49)
at net.minecraftforge.common.util.CompoundDataFixer$1.func_188251_a(CompoundDataFixer.java:69)
at net.minecraft.world.gen.structure.template.Template$2.func_188266_a(Template.java:467)
at net.minecraftforge.common.util.CompoundDataFixer$1.func_188251_a(CompoundDataFixer.java:76)
at net.minecraftforge.common.util.CompoundDataFixer.func_188257_a(CompoundDataFixer.java:89)
at net.minecraft.world.gen.structure.template.TemplateManager.func_186239_a(SourceFile:107)
at net.minecraft.world.gen.structure.template.TemplateManager.func_186236_a(SourceFile:89)
at net.minecraft.world.gen.structure.template.TemplateManager.func_189942_b(SourceFile:52)
at net.minecraft.world.gen.structure.template.TemplateManager.func_186237_a(SourceFile:37)
at com.example.structure.world.misc.ModStructureTemplate.loadTemplate(ModStructureTemplate.java:102)
at com.example.structure.world.misc.ModStructureTemplate.(ModStructureTemplate.java:49)
at com.example.structure.world.misc.ModStructureTemplate.(ModStructureTemplate.java:53)
at com.example.structure.world.stronghold.BetterStrongholdTemplate.(BetterStrongholdTemplate.java:42)
at com.example.structure.world.stronghold.BetterStronghold.addAdjustedPiece(BetterStronghold.java:231)
at com.example.structure.world.stronghold.BetterStronghold.generateHall(BetterStronghold.java:84)
at com.example.structure.world.stronghold.BetterStronghold.generateCross(BetterStronghold.java:61)
at com.example.structure.world.stronghold.BetterStronghold.startStronghold(BetterStronghold.java:43)
at com.example.structure.world.stronghold.MapGenBetterStronghold$Start.create(MapGenBetterStronghold.java:58)
at com.example.structure.world.stronghold.MapGenBetterStronghold$Start.(MapGenBetterStronghold.java:44)
at com.example.structure.world.stronghold.MapGenBetterStronghold.func_75049_b(MapGenBetterStronghold.java:32)
at net.minecraft.world.gen.structure.MapGenStructure.func_180701_a(MapGenStructure.java:40)
- locked <0x00000006870190f0> (a com.example.structure.world.stronghold.MapGenBetterStronghold)
at net.minecraft.world.gen.MapGenBase.func_186125_a(SourceFile:34)
at mod.bespectacled.modernbetaforge.api.world.chunk.ChunkSource.provideChunk(ChunkSource.java:195)
at mod.bespectacled.modernbetaforge.world.chunk.ModernBetaChunkGenerator.func_185932_a(ModernBetaChunkGenerator.java:43)
at net.minecraft.world.gen.ChunkProviderServer.func_186025_d(ChunkProviderServer.java:143)
at net.minecraft.server.management.PlayerChunkMapEntry.func_187268_a(PlayerChunkMapEntry.java:126)
at net.minecraft.server.management.PlayerChunkMap.func_72693_b(SourceFile:147)
at net.minecraft.world.WorldServer.func_72835_b(WorldServer.java:227)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:756)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668)
at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:185)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526)
at java.lang.Thread.run(Thread.java:745)
It looks like a weird interaction with another mod that modifies the stronghold structure, with:
'com.example.structure.world.stronghold.BetterStronghold'
Do you know what mod is doing this? Is it Yung's Better Strongholds?
Please copy and paste the generator settings here and provide the world seed.
To answer your previous question, any previously generated chunk is not regenerated, however with the 'Save Indev Level' option off, the entire Indev level will have to be regenerated to generate new chunks.
It looks like a weird interaction with another mod that modifies the stronghold structure, with:
'com.example.structure.world.stronghold.BetterStronghold'
Do you know what mod is doing this? Is it Yung's Better Strongholds?
Please copy and paste the generator settings here and provide the world seed.
It's probably Unseen's End Expansion, which has it's own version of Strongholds.
I disabled it, and I'll see if I can boot into the save.
I can try to download it and fiddle with it, but it looks closed source, so the issue would be difficult to fix.
I also found an issue with Roguelike Dungeons causing a hang.
"Server thread" #339 prio=3 os_prio=-1 tid=0x00000000797fe000 nid=0xa030 runnable [0x0000000055e4d000]
java.lang.Thread.State: RUNNABLE
at java.util.IdentityHashMap.get(IdentityHashMap.java:336)
at net.minecraftforge.registries.GameData$BlockCallbacks$1.get(GameData.java:387)
at net.minecraftforge.registries.GameData$BlockCallbacks$1.func_148747_b(GameData.java:382)
at net.minecraft.world.chunk.ChunkPrimer.handler$zzp000$jeid$setIntBlockState(SourceFile:529)
at net.minecraft.world.chunk.ChunkPrimer.func_177855_a(SourceFile:21)
at mod.bespectacled.modernbetaforge.world.chunk.source.IndevChunkSource.generateWorldBorder(IndevChunkSource.java:562)
at mod.bespectacled.modernbetaforge.world.chunk.source.IndevChunkSource.generateBorder(IndevChunkSource.java:122)
at mod.bespectacled.modernbetaforge.api.world.chunk.FiniteChunkSource.provideBaseChunk(FiniteChunkSource.java:91)
at mod.bespectacled.modernbetaforge.api.world.chunk.ChunkSource.lambda$new$0(ChunkSource.java:135)
at mod.bespectacled.modernbetaforge.api.world.chunk.ChunkSource$$Lambda$15568/2056035403.apply(Unknown Source)
at mod.bespectacled.modernbetaforge.util.chunk.ChunkCache.createChunk(ChunkCache.java:93)
at mod.bespectacled.modernbetaforge.util.chunk.ChunkCache.get(ChunkCache.java:71)
at mod.bespectacled.modernbetaforge.api.world.chunk.ChunkSource.getBiomes(ChunkSource.java:534)
at mod.bespectacled.modernbetaforge.world.biome.ModernBetaBiomeProvider.lambda$new$0(ModernBetaBiomeProvider.java:42)
at mod.bespectacled.modernbetaforge.world.biome.ModernBetaBiomeProvider$$Lambda$15561/480595574.apply(Unknown Source)
at mod.bespectacled.modernbetaforge.util.chunk.ChunkCache.createChunk(ChunkCache.java:93)
at mod.bespectacled.modernbetaforge.util.chunk.ChunkCache.get(ChunkCache.java:71)
at mod.bespectacled.modernbetaforge.world.biome.ModernBetaBiomeProvider.getBiome(ModernBetaBiomeProvider.java:182)
at mod.bespectacled.modernbetaforge.world.biome.ModernBetaBiomeProvider.func_76940_a(ModernBetaBiomeProvider.java:136)
at net.minecraft.world.gen.structure.StructureOceanMonument.func_75047_a(SourceFile:86)
at net.minecraft.world.gen.structure.MapGenStructure.func_191069_a(MapGenStructure.java:275)
at net.minecraft.world.gen.structure.StructureOceanMonument.func_180706_b(SourceFile:102)
at ivorius.reccomplex.world.gen.feature.structure.MapGenStructureHook.func_180706_b(MapGenStructureHook.java:115)
at ivorius.reccomplex.events.handlers.RCTerrainGenEventHandler$1.func_180706_b(RCTerrainGenEventHandler.java:155)
at mod.bespectacled.modernbetaforge.api.world.chunk.ChunkSource.getNearestStructurePos(ChunkSource.java:477)
at mod.bespectacled.modernbetaforge.world.chunk.ModernBetaChunkGenerator.func_180513_a(ModernBetaChunkGenerator.java:69)
at net.minecraft.world.gen.ChunkProviderServer.func_180513_a(ChunkProviderServer.java:305)
at com.github.fnar.minecraft.WorldEditor1_12.findNearestStructure(WorldEditor1_12.java:318)
at greymerk.roguelike.dungeon.Dungeon.hasStructureTooCloseBy(Dungeon.java:193)
at greymerk.roguelike.dungeon.Dungeon.lambda$canGenerateDungeonHere$4(Dungeon.java:177)
at greymerk.roguelike.dungeon.Dungeon$$Lambda$17330/1595774941.test(Unknown Source)
at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
at java.util.HashMap$KeySpliterator.tryAdvance(HashMap.java:1561)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:529)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:516)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:449)
at greymerk.roguelike.dungeon.Dungeon.canGenerateDungeonHere(Dungeon.java:179)
at greymerk.roguelike.dungeon.Dungeon$$Lambda$17329/1847669960.test(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
at java.util.stream.IntPipeline$4$1.accept(IntPipeline.java:250)
at java.util.stream.Streams$RangeIntSpliterator.tryAdvance(Streams.java:89)
at java.util.stream.IntPipeline.forEachWithCancel(IntPipeline.java:162)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:529)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:516)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at greymerk.roguelike.dungeon.Dungeon.selectLocation(Dungeon.java:160)
at greymerk.roguelike.dungeon.Dungeon.generateInChunkIfPossible(Dungeon.java:70)
at com.github.fnar.roguelike.worldgen.DungeonGenerator1_12.lambda$generate$0(DungeonGenerator1_12.java:22)
at com.github.fnar.roguelike.worldgen.DungeonGenerator1_12$$Lambda$16721/1563023778.run(Unknown Source)
at com.github.fnar.util.SafeRunnable.run(SafeRunnable.java:23)
at com.github.fnar.util.SafeRunnable.run(SafeRunnable.java:11)
at com.github.fnar.roguelike.worldgen.DungeonGenerator1_12.generate(DungeonGenerator1_12.java:20)
at net.minecraftforge.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:167)
at net.minecraft.world.chunk.Chunk.func_186034_a(Chunk.java:1020)
at net.minecraft.world.chunk.Chunk.func_186030_a(Chunk.java:985)
at net.minecraft.world.gen.ChunkProviderServer.func_186025_d(ChunkProviderServer.java:157)
at net.minecraft.server.management.PlayerChunkMapEntry.func_187268_a(PlayerChunkMapEntry.java:126)
at net.minecraft.server.management.PlayerChunkMap.func_72693_b(SourceFile:147)
at net.minecraft.world.WorldServer.func_72835_b(WorldServer.java:227)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:756)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668)
at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:185)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526)
at java.lang.Thread.run(Thread.java:745)
I am kind of curious if it's possible to set the priority of the Stronghold generation?
If it could be set to generate last, after other mods have had their fun with the worldgen, maybe it could generate and overwrite what's in it's way? Sure it could look kind of goofy, but at least it would be playable, in theory.
I'm unable to replicate the issue with either End Expansion or Roguelike Dungeons, at least on a minimal mod set.
Please provide your generator settings and world seed, otherwise I won't be able to fix the issue.
I am trying to generate a 512x512x256 world.
It's also set to Normal and Inland for Worldgen.
Seed is 1181315202766558901
Note: I am using Roguelike Dungeons FNAR Edition, not the original.
I'm using your settings and seed and I'm still unable to reproduce the issue. Are you also using the single biome source with the Indev Normal biome? Or a different biome generator?
I'm investigating Fnar's Roguelike Dungeon, but I'm already seeing many reports of significant generation times/lag over in their repo, so it may just how their mod is coded.
I'm using your settings and seed and I'm still unable to reproduce the issue. Are you also using the single biome source with the Indev Normal biome? Or a different biome generator?
I'm investigating Fnar's Roguelike Dungeon, but I'm already seeing many reports of significant generation times/lag over in their repo, so it may just how their mod is coded.
I am using Beta Biome generation, not Single Biome Source with Indev Normal. [There's so many biomes that trying this may be very difficult, but I'll give it a shot.]
Edit: I couldn't find Indev Normal in my biome slider, so I did Indev Paradise.
Edit2: Internal Server seems to have survived, and the game is playable.
Okay, I've hit the issue that other users of Fnar's Roguelike Dungeon mod have described, where after loading into a world, the mod immediately tries to generate a dungeon nearby, with a message like:
[Server thread/INFO] [roguelike]: Trying to spawn dungeon at chunkX 0 and chunkZ 0...
Except generating just that one dungeon takes around 4-5 minutes on my machine, with the world being non-interactive during that time. I am using the Release Biome Source with biome size of 2 so I can get a dense variety of biomes and structures. This is not an issue exclusive to the Indev terrain generator either, I was able to get the same worldgen lag with Beta generation. So if I had to guess, this is a mod issue. I am unable to reproduce the same issue with the original Roguelike Dungeons. I'm also running the End Expansion at the same time, and the modified Strongholds aren't giving me any problems either.
EDIT: As an additional note, I'm seeing that the original Roguelike Dungeons does not want to generate structures for sea levels greater than or equal to 128 (so level heights of 160 or greater for Indev worlds). There may be a height cap for generating the structures.
I've made multiple Indev worlds for testing at this point, still have not been able to reproduce the issue with the End Expansion's strongholds.
I am curious, how does the new update for Modern Beta effect existing worlds?
[Checking if there's anything I should test immediately, since I made a backup of all my saves.]
For existing worlds, nothing should happen. I did find and mostly fix a bug related to the Indev level generator's liquid flooding algorithm, so new worlds will generate slightly differently.
Oop, I should add that for Indev worlds nothing will happen if you have the 'Save Indev levels' option enabled, since the level will have been previously generated, saved to a file, and then used to generate new chunks.
If not, then for new chunks, the generation will be slightly different.