[placeholder] Large Dungeon’s Block Protection Causing Worldgen Crashes
Nonsanity opened this issue · 8 comments
[I will be updating this issue report later today with multiple crash logs. Until then, consider it an incomplete placeholder report.]
I was getting server crashes during world gen and, while the crash reports didn’t point directly at any particular mod, they did seem to suggest that the block protection on the large dungeons may be part of the problem. I was getting the crashes both while walking around and while using OpenTerrainGen’s “/otg pregen” command.
To test this, I set the minimum distance from spawn setting for the large dungeons to 10000 chunks, erased the world, and started the pregen again. There were no crashes. I erased the world file again, set the value back to zero, and ran the pregen once more. There were many crashes.
When I get home, there should be quite a few of these crash reports available. I’ll attach some or all (depending on how repetitive they are) to this issue report.
My guess is that some of the other mods that add world gen elements after the dungeons are spawned are trying to place blocks, expecting them to be there, then crashing when they aren’t. I thought this when I saw an attempt to get the wood type of a plank fail because it was actually querying an air block.
[Please hold for crash logs...]
Here are the last six crashes that only happened when "hugeDungeon_mindis" was set to 0.
Deleteing the world file, setting "hugeDungeon_mindis" to 10000, and generating terrain with the same seed results in no crashes at all. Only when the huge dungeons are being spawned do the crashes happen.
Is it possible to make the dungeon core blocks only activate when a player comes within range? That way they won't be active during terrain gen. Just an idea.
crash-2018-07-18_09.50.54-server.txt
crash-2018-07-18_08.58.06-server.txt
crash-2018-07-18_07.35.37-server.txt
crash-2018-07-18_02.59.44-server.txt
crash-2018-07-18_01.27.46-server.txt
crash-2018-07-17_22.47.55-server.txt
Here's where I think a FP huge dungeon and a roguelike dungeon clashed, trashed, and crashed. As you can see, the FP dungeon was partially overwritten by the RLD dungeon.
As I understand it, when a larger-than-one-chunk structure is spawned, it will load surrounding chunks it needs to spread into. This causes cascading world gen if not done properly. I can't tell from the log if RLD mod follows good practices to minimize that. But since the FP entry structure is cut off at the chunk border, this may be the issue. (Not much of it was left underground when the RLD was through. No core block, for sure.)
What happens if a FP huge dungeon is spawned in with its core block active and protecting, then another mod slams in its own structures and replaces the core block? Will the protection effect end gracefully? Just a thought.
The core block has nothing to do with the protection, it is only an option for deactivating it (at first there was no way to deactivate the protection of the dungeons). From the crashes I can only tell OTG (OPen terrain generator) is doing something wrong / is instable. I know the Pregen Tool from Speiger is stable and useable for large amounts of chunks.
From the pictue it looks like if another mod just deletes the block I set in the other chunk or regenerates the whole chunks and thus breaking the large dungeon. As OTG changes completly how worldgen works I guess they just ignore blocks placed outside the current chunks and thus breaking the world gen.
When I get the time, I'll try making a pack with only Roguelike Dungeons and Futurepack, crank up the frequency of both to spawn, and walk around till I find two close together. That should clarify if OTG is the cause or just the carrier of the crash.
What is in your opinion better: only generate the Enztance of the dungeon and:
- generate the rest of the dungeon when entering.
- teleport the player into another dimension where the dungeon is generated.
The first variant will just overwrite already placed blocks, wish is bad if you got a base nearby. The second variant will create an almost unused dimension.
The separate dimension has been done by other mods, and it seems to have worked well. Because of that, when I first saw the above-ground teleporters, I thought they were already going to a different dimension.
One advantage would be that it would make block protection much simpler since it could be completely chunk-based without interfering with anything else. Also, you'd have full control over the spawning parameters there, for when you want to add wandering robot sentries or something like that. :)
I'd suggest either filling in the space around the rooms with an unbreakable block (maybe the builders hid their bases deep in the bedrock), or keeping it a void and using a starry skybox to suggest you've beamed up to a space station. Personally, I like the burried-in-bedrock idea. I don't think that's been done before.
Thankfully, an unused dimension shouldn't hurt performance, so long as it unloads chunks cleanly when players leave.
They have now their own dimension: 26.3.306