Chocolate Quest Repoured

Chocolate Quest Repoured

2M Downloads

Dungeons not spawning in OTG worlds.

slidedrum opened this issue · 16 comments

commented

Describe the bug
When using OTG no dungeons generate. Open Terrain Generator tested with version v8.3 of OTG, CQR A4 and A5 with Biome Bundle as the OTG preset. No crashing nor noticeable stutter or other oddities. Things still spawn in the nether, probably because it is not an OTG dimension. I have tried adding a bunch of biomes and biome types to my config file, Airships.properties and cqrepoured.cfg The other .properties files are only modified in the same way as airship (dim/chance/biomes) if you want to see the rest, I can upload them.

To Reproduce
Steps to reproduce the behavior:

  1. install OTG and CQR
  2. Create an OTG world.
  3. Look for dungeons.

Expected behavior
I would expect dungeons to spawn as they do in other world types. Other dungeon mods do spawn correctly with OTG, this is the first mod I have had problems with.

Screenshots
Here's two screenshots with the seed "SlideDrum" at x:-460,y:212,z:757 and render distance set to 64
Modded with other mods, showing that it works in most cases: https://imgur.com/4OK67H7
Isolated with only OTG+BiomeBundle+CQR: https://imgur.com/x9bHPeC

Versions
Chocolate Quest Repoured: A4 and A5 tested
OTG: 8.3
BiomeBundle: 6.1
Forge:14.23.5.2847
Minecraft:1.12.2

Other
Crash report: None
Log file: latest.log from the isolated test
Singleplayer/Multiplayer: Tested single player, but expected to be the same
Other mods (that are necessary to produce the bug): OTG.
Other mods (that are also installed): BiomeBundle + Optifine + many others, but tested and reproduced while isolated

Thank you for your time :)

commented

there is any fix for this?

commented

This has been fixed 2 years ago, it no longer is an issue unless you use a super old cq or otg version

commented

Issue seems to be how OTG handles biomes or how we spawn structures (though we do use BiomeDict too), cause the wall works

commented

Ok first: You can try using "ALL" for the biomes, that allows the dungeon to spawn in absolutely every biome. Have you tried using CQR with a different OTG "preset"?
I'll try reproducing the bug once i find time.

commented

OK, i was able to reproduce it. Problem seems to be how OTG generates its worlds.

Problem seems to be OTG, cause it seems to have its own world management which makes it incompatible with other structure mods. Are there any other mods that spawn structures that work with OTG?

commented

Issue is OTG.

As Meldex told me: "The problem with otg is that they register/unregister the biomes when joining/exiting a world"
And that breaks things. We wont fix this, sorry

commented

Thank you for looking into it. I am dissapointed to hear that you're not going to fix it. Every other mod I've tried has had little to no issues spawning structures in OTG world's. As you can see in the screenshot there are plenty of structures from other mods. I will talk to the OTG devs and see if there is anything I can do.

commented

When i was testing i noticed that OTG uses own biomes like openterraingenerator:overworld_plains, sadly you cant dump those as they are registered and unregistered in world load and leave as it seems.

We could try to rewrite our system to not use the biome instances but rather to use resourcelocations

commented

Fix would be: OTG registering their biomes properly on game load, then it would work

commented

OK, just made some changes to the world populator, i'll test it now if it works with OTG

commented

Should be fixed in CQR v 1.1.2A

commented

Tested it, didnt work.

Summarize: Problem is on OTG side, not ours.

commented

Hey, thanks for coming here!

If you have time, You could check if what we do with spawning conflicts with OTG (thing i made only theoretically fixes the incompatibility, havent tested it yet.)

Relevant classes:
DungeonRegistry
WorldDungeonGenerator

Both are located in com.teamcqr.chocolatequestrepoured.structuregen

To summarize: dungeons are stored in maps with the biome resource locations as keys in one map and in another map where the BiomeDictionary.Type is used as key. When spawning a dungeon, we check if the position is ok, then if the dimension is ok and then, if we actually have a dungeon for that biome (or biome type, both things are thrown together in a Set that is given to the WorldGenerator), then we spawn the structure.

commented

Hey guys, OTG dev here, thanks for putting in the effort to support OTG! If you have any questions, give me a holler.

commented

Took a quick look, if I understand it correclty, that looks like it should work. You're correct that OTG registers/unregisters biomes on world load/unload, this is because every OTG world uses its own biomes and users can create/delete OTG worlds/dimensions during runtime. For other mods, this means that if you're querying all registered biomes at app start and caching them, you wouldn't see the OTG biomes. If you query the world/registry for biomes by resourcelocation/coordinates during world generation, you should find the OTG biomes fine though. Querying biomes by resourcelocation (instead of id) has been the recommended approach for a while btw, so can't go wrong there.

commented

Thank you for your help.

I‘ll test the changes once i get time.
If it still doesn’t work I‘ll let you know