Realistic Terrain Generation

Realistic Terrain Generation

3M Downloads

Crash during world exploration and or generation

SoulBrig opened this issue ยท 15 comments

commented

.50 build crashes during world exploration with "no realistic version of biome 146". I was able to duplicate the issue with only RTG and Twilight Forest mods in use. With the default Twilight Forest biome ids (someplace in the lower 50's) everything seemed to work fine. Once I adjusted the biome ID's up around 145-150 (where my modpack unfortunately has them assigned) I would encounter an immediate crash on world generation. This can be duplicated using "streams2" as the seed without the quotes.

See crash log here: [http://paste.ee/p/GAnfy]

commented

Post the configs for all biome altering mods, plus RTG.

Also, if you have BoP, try and see if you get this with desert rivers.

commented

Sure no prob. Here is a dropbox link to my configs: https://www.dropbox.com/s/qh74pf68y86owap/config.zip?dl=0

Only mods in use:
RTG-1.7.10-0.5.0.jar
twilightforest-1.7.10-2.3.7.jar

commented

@SoulBrig Yes, if you could zip up your config folder and post it here via DropBox or similar, I'll try to reproduce the crash and hopefully figure out what's going on.

commented

Correct, this was with the vanilla generator.

I didn't know much about those mechanics, but I do know that minecraft uses ID+128 for the sub-biomes, so I assumed the problem was something like that, and I've always been nervous about assigning biomes to that range and would avoid it as much as possible.

I guess people just have to learn to avoid those IDs when using the vanilla generator.

also, now B:"Use EB's rare biome code (Rare biomes have to be registered with EB to work)" makes more sense.

commented

I also reproduced this, just now.
In addition, after reassigning the affected biome (I:biome.id.DarkForest=146 -> 168), the game then crashed on biome 150 (I:biome.id.Thornlands). After reassigning 150 to 169 the game stopped crashing and I was able to generate spawn. I flew around for a while generating chunks without issue.
Next, I used all of the original biome IDs but shuffled them around. First try crashed on biome 146 again. Reassigned that biome to ID 168 and crashed again on biome 150.

So the issue seems to be with biomes that RTG doesn't do anything with and those specific biome IDs. (are there more?)

Edit: to test this theory further, I removed Twilight Forest and put in Thaumcraft. I set I:biome_eldritch=150 (another biome that RTG doesn't touch) and sure enough, the game crashed citing biome 150. Changing the ID to 168 prevents the crash.

commented

This is without CC, correct? If so, the problem is the mutated biomes. The vanilla generator occasionally replaces biomes with their mutated version, which it ALWAYS considers the biome with biomeID+128, if it's there. So 150 is automatically mutated 22 (Jungle Hills) and will occasionally show up there as long as you're using the vanilla generator.

With the vanilla generator, you can't use any biome ID from 129 to 167 (39+128) for a biome unless you can have that biome show up as the mutated form of the appropriate vanilla biome. Some of the crashes will get very rare if you're looking at rare biomes but they'll still happen.

This won't happen with CC, which replaces that very clunky mutated biome choice, and I'm guessing won't happen with BiomeTweaker either. EB has an option to fix it.

commented

If that's what's going on with these 'no realistic version of biome X' crashes, I'd like to see if we can display a helpful crash message to the user (similar to the way Forge tells you that you're missing a required mod) to prevent as many of these crash reports as possible.

So the idea would be to catch the exception as we're doing now, but instead of immediately throwing a RuntimeException, we'd 'exit' to a splash screen that shows a helpful message, maybe something like:

"RTG could not find a realistic version of biome X. Try avoiding biome IDs 129 to 167, as these are reserved for vanilla's mutated biomes."

We could even display a different message if the biome ID is outside of that range, etc.

So... two questions...

  1. What other conditions would trigger this crash? I know biome ID conflicts of the 'mutated' variety is one condition, and unsupported biomes is another... are there any others?
  2. Does anyone know how to 'exit' to that splash screen that Forge exits to when you're missing a required mod? [EDIT: I asked this question on the Forge forums, and it looks like we'd have to create our own GUI screen, as implemented in Forge's GuiModsMissing.]
commented

I was going to suggest something like this, but only an informational message in places where people would be downloading RTG (curse/MCF/github releases page), but an in-game message would be most helpful to people that run into this problem, and would probably reduce the frequency of bug reports that nothing can be done about (IDs 129-167).

A place to start to see how other's have implemented such GUI screens would be BoP's info screen:
(I believe this only triggers when starting a new world and the /saves/ directory is empty.)

As for your questions:

  1. The only other condition that I know of was a bug in CC that @Zeno410 has already fixed.
  2. ...
  3. Profit.
commented

I couldn't figure out how to do a "crash splash" in CC because the crashes happen on the server thread. I tried putting up some screens and the system just hung.

commented

Hmm, if it turns out not to be possible to do a crash splash, maybe a BOP-esque splash screen with some FAQ-type factoids (including the mutated biome ID range) might be a decent compromise.

commented

BoP style is doable because we can make the check in advance (vanilla generator + x Realistic biome + x+128 non-realistic biome). Just a matter of making the check on the client thread, I suspect. I'm sure there's a way to do interthread communication for a crash too, I just don't know it.

commented

After having this issue myself and not understanding why this mod only has this mutate issue out of the many other biome/world gen mods I think the BoP idea would be bad. It would be much more preferable to get a work around but from reading here that doesn't look like an option. What I personally would recommend is just a strait crash with a list of 'broken' ID's or on world load a message in chat. IIRC Twilight Forest has an ingame message when biomes conflict and that has been extremely successful.

commented

At the bottom of the stack there's not generally a good way to fix it. Fiddling around in the middle of a GenLayer stack can be done, but it's a pain to write, and you'd probably have to write something separate for each biome layout system. It would be doable to replace the vanilla GenLayerHills with one that understands not to place an M biome without a realistic biome.

There's nothing you can do in the GenLayer stack to solve a biome ID conflict. You could probably have RTG look at available biomes at startup and force any conflicted IDs to a Realistic one.

I'm planning to write a collision detector for CC although not right away.

commented

@Zeno410 Before I start working on this, is there any kind of a 'workaround' we could implement? I'm not sure how GenLayers work, but... would it somehow be possible, for example, to write something like a GenLayerMissingBiomeRemover that removes the missing biomes from generation before they have an opportunity to be placed? Or is too late at that point?

Assuming it is possible to have some kind of workaround, what would the disadvantages be from our side of things?

commented

Biome patching in 0.6.2 serves as a workaround for this, although we still might do some sort of diagnostics check on startup.