Repurposed Structures log spam

While being in the nether my logs are spammed full of this warning message: [23:35:10] [DH-World Gen Thread[0]/WARN]: Repurposed Structures: Detected a mod with a broken basalt columns configuredfeature that is trying to place blocks outside the 3x3 safe chunk area for features. Find the broken mod and report to them to fix the placement of their basalt columns feature. I reduced my mod list down to this on 1.20.2: - Distant Horizons - Fabric API - MidnightLib - Repurposed Structures I had this happen on the Iris build as well. I found a potential solution to just set the log file on read only or somehow stop Minecraft from logging. But I would prefer to still be able to use the logs.
35 Replies
MithicSpirit
MithicSpirit9mo ago
Sounds like the issue is that Repurposed Structures is doing feature generation incorrectly or something idrk. Maybe you can try reporting it to them as well?
Ommelette
OmmeletteOP9mo ago
Yes I was planning to if I didn't get much from here. But I asked it here because it only happens when DH is active.
MayBike
MayBike9mo ago
no, it means RS detects other world gen mods with a broken generation probably do a binary search on world gen mods, but with RS installed to check which one trips that error /binary
YAGPDB.xyz
YAGPDB.xyz9mo ago
Try a binary search and figure out which mod is causing it. So disable half of the mods, see if issue is still there, if yes disable half again etc etc until you find the mod that's causing the issue.
Tenor
Ommelette
OmmeletteOP9mo ago
Distant Horizons Fabric API MidnightLib Repurposed Structures This is the full mod list. Maybe it's just RS but it seems to only happen when both DH and RS are installed I tried without DH tping to a basalt biome and upping the render distance to 32 and it didn't happen Maybe it missed the structure I could try again With DH it happens after a few seconds in the nether
MayBike
MayBike9mo ago
weird unless RS detects some shortcuts DH made for world gen tasks and freaks out cuz DH has to use MC vanilla world gen code to gen LoDs
Ommelette
OmmeletteOP9mo ago
That seems to be possible. At the start I tried using a python script to figure out what mod was causing it by just reading every file for basalt columns and variations but I didn't find anything. I'm pretty sure basalt columns are a vanilla structure. I could try using the script to see if I can find the file that's generating the warning but I think it's probably compiled so it probably wouldn't work
MayBike
MayBike9mo ago
if RS got github page, perhaps edit source
Ommelette
OmmeletteOP9mo ago
ohh good idea
MayBike
MayBike9mo ago
yung's better dungeon just fixed the similar error, you could look there then see with RS
Ommelette
OmmeletteOP9mo ago
I'll look into it and report back! thank you!
MithicSpirit
MithicSpirit9mo ago
oh wait yeah I'm blind I thought that was DH error message for some reason ohhh I see. it's RS complaining in a DH thread.
Ommelette
OmmeletteOP9mo ago
I've been talking to the RS Dev: "The only way my logging happens is if the basalt feature is being generated for a chunk BEFORE structure starts are generated for a chunk which should be impossible. Unless the placedfeature’s start point is being placed outside the currently generating center chunk for the generation stages Idk if this helps anything According to the dev the fix from yungs just stops the logging but not the issue?
Ommelette
OmmeletteOP9mo ago
It's not just RS. Yungs generates the exact same warning for some reason https://github.com/YUNG-GANG/YUNGs-Better-Dungeons/issues/62.
GitHub
Issues · YUNG-GANG/YUNGs-Better-Dungeons
Minecraft mod that adds actual dungeons to the game - Issues · YUNG-GANG/YUNGs-Better-Dungeons
Ommelette
OmmeletteOP9mo ago
Could it be that the worldgen code checks the generated chunks to see if the structure starts are generated but since they are only generated in lod it trips? RS Dev: I am going to the chunk itself and asking the chunk it’s chunkstatus If the chunk says it’s status is before structure start, I print out the log message
TelepathicGrunt
TelepathicGrunt9mo ago
Geesus Christ, the faq validation is the worst I have ever seen my god Anyway, I’m the dev of repurposed structures Minecraft worldgen is done in a specific way that no features should generating in chunks BEFORE the chunk passes the structure start phase This means this should never be able to be triggered https://github.com/TelepathicGrunt/RepurposedStructures/blob/8c0e38008be4ed2984a151437bb3928741bb6cfd/common/src/main/java/com/telepathicgrunt/repurposedstructures/mixins/features/NoBasaltColumnsInStructuresMixin.java#L37 To the dev of distant horizon, how exactly does that mod work. Did you put something out a week or more ago that is somehow generating features in chunks without promoting the chunk status of the chunk? If so, why? That shouldn’t be possible and greatly concerning to me.
That Guy
That Guy9mo ago
@James Seibel (GMT-6)
BackSun
BackSun9mo ago
I’m not the one who built that part of the world generator but structure start should be done long before features. https://gitlab.com/jeseibel/distant-horizons/-/blob/Data_Source_Rewrite/common/src/main/java/com/seibel/distanthorizons/common/wrappers/worldGeneration/BatchGenerationEnvironment.java#L620 Unless something got goofed up where the chunk’s state isn’t being set after said step (which is possible).
GitLab
common/src/main/java/com/seibel/distanthorizons/common/wrappers/wor...
This is a mod that adds a Level Of Detail (LOD) system to Minecraft. This implementation renders simplified chunks outside of the normal render distance allowing for an...
TelepathicGrunt
TelepathicGrunt9mo ago
That seems to be what is happening. Chunk is not updating to the new status. I adjusted my logging to print out the chunk status, the placefeature, and the stacktrace
No description
TelepathicGrunt
TelepathicGrunt9mo ago
The logging code
TelepathicGrunt
TelepathicGrunt9mo ago
No description
TelepathicGrunt
TelepathicGrunt9mo ago
@Hencoat (Renowned Author) pulling you here so you dont need to check other discords for updates
Hencoat
Hencoat9mo ago
Thanks @TelepathicGrunt, appreciate you being so proactive about this! I should probably ping the Cataclysm dev as well since his mod is doing the same thing
TelepathicGrunt
TelepathicGrunt9mo ago
The bug is Distant Horizon is generating the chunks through their stages but the chunk's chunkstatus is not being updated as it does so. The logging worked as it was pointing out a possible bug/issue
BackSun
BackSun9mo ago
I just checked each stage of DH's world gen and we are updating each chunk's status. Unless ProtoChunk.setStatus is the wrong method or there's some other conflicting issue I'm unaware of.
No description
TelepathicGrunt
TelepathicGrunt9mo ago
Is the chunk you're updating, the same chunk from LevelAccessor when given the same chunk pos like same instance
BackSun
BackSun9mo ago
Wait… what levelaccessor is that? Is that the actual MC level or is that whatever the world generator has access to?
TelepathicGrunt
TelepathicGrunt9mo ago
it's the levelaccess that is passed to the placedfeature's generate methods In this case, it should be DhLitWorldGenRegion region
BackSun
BackSun9mo ago
Hmm. Then those chunks should be updated with the DH world gen. Unless you’re trying to access chunks outside of DH’s range (I don’t remember what happens then, we either return null or an empty chunk). Where are the chunks you’re pulling relative to the generating chunk?
TelepathicGrunt
TelepathicGrunt9mo ago
I inject at head of canPlaceAt to detect when the basalt feature is about to be in bounds of my structure to cancel its generation. https://github.com/TelepathicGrunt/RepurposedStructures/blob/8c0e38008be4ed2984a151437bb3928741bb6cfd/common/src/main/java/com/telepathicgrunt/repurposedstructures/mixins/features/NoBasaltColumnsInStructuresMixin.java#L31 Vanilla's basalt feature does count on every layer which has a 0-15 spread built-in https://github.com/misode/mcmeta/blob/d24ffa5d56a7859f960914f256fb1694b8e8dbaa/data/minecraft/worldgen/placed_feature/large_basalt_columns.json#L5 And the basalt feature itself has a 2 to 3 spread https://github.com/misode/mcmeta/blob/d24ffa5d56a7859f960914f256fb1694b8e8dbaa/data/minecraft/worldgen/configured_feature/large_basalt_columns.json#L9 So technically the canPlaceAt can be given a position up to 2 to 3 blocks outside the currently generating chunk. In vanilla worldgen, this is ok as the surrounding 8 touching chunks (3x3 chunk area centered on generating chunk) are all at or past the CARVERS chunkstatus iirc. Vanilla has to do that because stuff like trees or ores or anything bigger than 1 block wide ends up bleeding into side chunks due to the 0-15 block x/z randomization most placed features have can put them right on the edge of the currently generating chunk. I could just not log anymore to stop the spam. But I don't know what the future consequences could be of ignoring that the surrounding chunks could be in the wrong chunk status as lots of features and mods could be making assumptions about those side chunks that Empty status could possibly break.
BackSun
BackSun9mo ago
Well DH already breaks a couple large assumptions that world gen mods make (feel free to correct me on these my knowledge is from 1.16): - single threaded execution - the existence of adjacent chunks in the level (since the world gen area DH uses is 4x4 chunks) Since DH doesn’t save anything to MC’s region files I’m not worried about accurate world gen (it just needs to be “good enough”), speed is generally more important. So if we have weird world gen that isn’t an issue in my book. That being said; I could look into returning empty chunks with the expected generation step for anything outside of DH’s generated section (4x4 chunks). That might help with your specific issue.
TelepathicGrunt
TelepathicGrunt9mo ago
The reason I had the chunkstatus check originally was because Terralith or some other worldgen datapack mod was using basalt features. But messed up the placement modifiers so the basalt feature was trying to generate outside the 3x3 chunk area. Which causes my structureManager.getStructureAt call to crash (or was it a deadlock? Can't remember) So I got irritated and added the chunkstatus check with logging to track down the problem mods/datapacks which worked and got them fixed. So ideally if you return chunkstatuses that matches the center chunk, it should prevent issues with people who may not have the chunkstatus check but are calling structureManager.getStructureAt
BackSun
BackSun9mo ago
Fair enough. I’ll see what I can do. #progress-update
TelepathicGrunt
TelepathicGrunt9mo ago
I'll remove the logging on my end too since there hasn't been a basalt issue since that one time that drove me nuts.
BackSun
BackSun9mo ago
I took a look at returning empty chunks with the current world gen status and that looks like it's likely to cause a lot more issues than solve. If you want to keep your state check then I'd recommend using getChunk(int chunkX, int chunkZ, @NotNull ChunkStatus chunkStatus, boolean returnNullIfChunkDoesntHaveStatus) and setting returnNullIfChunkDoesntHaveStatus to true and adding a null check. That way you can differentiate a missing (un-generated) chunk vs a malformed chunk.
Want results from more Discord servers?
Add your server