Realistic Terrain Generation

Realistic Terrain Generation

3M Downloads

Snapshot 5 - problem with biome 161

KeepOnDigging opened this issue · 27 comments

commented

I am testing with snapshot-3.
Climate Control is not installed.
B:"RTG Biome Layout"=false
I have no extra biome mods installed.
I'm just using RTG to create a nicer-looking vanilla world.

I have tested this with only RTG installed, no other mods.

If I create a new realistic world with seed: 32567400, Minecraft crashes immediately.
I think it also crashes with any other seed when biome 161 is first encountered.

This may (or may not) be related to the incorrect name for biome 161 in Minecraft-1.7.10. This biome name is missing the "M" so the name is a duplicate of biome 160. Biome dump from NEI shows:

160,Mega Spruce Taiga,0.25,0.8,0.1,0.2,0.2,"DENSE, FOREST",net.minecraft.world.biome.BiomeGenTaiga
161,Mega Spruce Taiga,0.25,0.8,0.1,0.2,0.2,"DENSE, FOREST",net.minecraft.world.biome.BiomeGenTaiga

The relevant part of the crash log:

[16:21:03] [Server thread/ERROR]: Encountered an unexpected exception
net.minecraft.util.ReportedException: Exception generating new chunk
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:631) ~[MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:547) ~[MinecraftServer.class:?]
    at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:111) ~[bsx.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:427) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685) [?:?]
Caused by: java.lang.RuntimeException: problem with biome 161
    at rtg.world.biome.WorldChunkManagerRTG.func_76936_a(WorldChunkManagerRTG.java:103) ~[WorldChunkManagerRTG.class:?]
    at net.minecraft.world.biome.BiomeCache$Block.<init>(SourceFile:26) ~[ahz.class:?]
    at net.minecraft.world.biome.BiomeCache.func_76840_a(SourceFile:52) ~[ahy.class:?]
    at net.minecraft.world.biome.BiomeCache.func_76837_b(SourceFile:61) ~[ahy.class:?]
    at rtg.world.biome.WorldChunkManagerRTG.func_76935_a(WorldChunkManagerRTG.java:126) ~[WorldChunkManagerRTG.class:?]
    at rtg.world.biome.WorldChunkManagerRTG.getBiomeDataAt(WorldChunkManagerRTG.java:162) ~[WorldChunkManagerRTG.class:?]
    at rtg.world.gen.ChunkProviderRTG.getNewNoise(ChunkProviderRTG.java:289) ~[ChunkProviderRTG.class:?]
    at rtg.world.gen.ChunkProviderRTG.generateTerrain(ChunkProviderRTG.java:248) ~[ChunkProviderRTG.class:?]
    at rtg.world.gen.ChunkProviderRTG.func_73154_d(ChunkProviderRTG.java:172) ~[ChunkProviderRTG.class:?]
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:172) ~[ms.class:?]
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:131) ~[ms.class:?]
    at net.minecraft.world.gen.ChunkProviderServer.func_73158_c(ChunkProviderServer.java:101) ~[ms.class:?]
    at net.minecraft.world.gen.ChunkProviderServer.func_73154_d(ChunkProviderServer.java:199) ~[ms.class:?]
    at net.minecraft.world.World.func_72964_e(World.java:419) ~[ahb.class:?]
    at net.minecraft.world.WorldServer.func_147456_g(WorldServer.java:313) ~[mt.class:?]
    at net.minecraft.world.WorldServer.func_72835_b(WorldServer.java:183) ~[mt.class:?]
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:625) ~[MinecraftServer.class:?]

Happy to test further or upload full crash logs if required.

Thank you, and
KeepOnDigging!

commented

This should be fixed in the next snapshot, due for release tonight (GMT)

commented

Perhaps I'm doing some thing wrong, I'm not an experienced modder!

git pull
./gradlew clean
./gradlew build
copy the new jar into mods (just forge and rtg, no other mods at all)
Launch Minecraft
Create new world
Set seed: 32567400
world type: realistic
and crash.

The log is here:
http://pastebin.com/gAdgkBtG

Make sure you're using seed: 32567400. I mis-keyed the seed in my original post.

Thanks for the amazing support you're providing on this mod!!

KeepOnDigging.

commented

Yep, copied & pasted the seed using the latest master and it's spawning me in a Roofed Forest no problem.

I'm no gradle expert, but what I usually do is:

gradlew setupDecompWorkspace
gradlew eclipse
gradlew clean
gradlew build

Either way, I'm going to be publishing the next snapshot in a bit, so you can try that when it's ready.

commented

Should be fixed in snapshot 4. Let us know if not and we'll re-open.

commented

Still crashing in snapshot-4.
I'll do some more testing on a different computer etc and see if I can narrow it down.

commented

I see you're using MultiMC... if you want, you could export the MMC instance that's crashing, zip it up, and send me a Dropbox link and I'll see if I can get to the bottom of it.

commented

Here's a MultiMC instance:
http://www.keepondigging.com/RTG.zip

There is a save "New World".
Open it.
Walk forwards (north) and it will crash before you reach the trees.
Render distance is 12 chunks, as soon as it tries to generate/render the dodgy chunk it crashes.

This is the seed I was testing with (32567400) but it's not roofed forest.

I am running this in MultiMC with Forge 1558 (latest recommended).
But it crashes with 1448 as well.
It crashes in the Vanilla launcher (built in Java 1.8) too.

commented

I have built the current master, and this issue hasn't been fixed with the addition of RealisticBiomePresenceTester.java.

commented

Hmm, that's strange... I just tested that exact seed with the setup you listed in the OP and I loaded up the world fine.

commented

It wasn't the addition of RealisticBiomePresenceTester.java that should've fixed the issue - it was the addition of RealisticBiomeVanillaRedwoodTaigaHills.java, which is using the vanilla 161 biome as the seed.

Could you post the fml-client-latest.log if you get a sec?

commented

Yep, still crashing :(

I'm on it

commented

The cause of this problem is that Vanilla biome id 161 doesn't really exist due to a bug. See:
https://bugs.mojang.com/browse/MC-30527?focusedCommentId=136076&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-136076

The biomeID cannot be tweaked in RealisticBiomeVanillaRedwoodTaigaHills() because it's final.

So the most elegant fix I can see is an ugly check for this bug:

    public static RealisticBiomeBase getBiome(int id) {

        if (id == 161) {
            return arrRealisticBiomeIds[160];
        }
        return arrRealisticBiomeIds[id];
    }

I have hacked on the source and can confirm that this very ugly solution works…

KeepOnDigging!

commented

@Zeno410 What you reckon... do you think that fix would cause any problems with the biome layout system in other areas? Personally, I don't mind fixing one 'ugly' hack with another, as long as it's not going to negatively affect anything else down the line.

@KeepOnDigging If Zeno gives the thumbs up on this, do you want to submit a pull request so you can get credit for it? We can always add it on your behalf if you prefer, just let us know.

commented

I don't have CC installed. I'm only using RTG to improve the layout of Vanilla biomes.

Any code which iterates across Vanilla biomes isn't going to find anything special for biome 161 because (due to the minecraft bug) it's a copy of biome 160.

But Vanilla worlds still generate with biome 161 in them (hence this crash). The biome in the world is just generated as biome 160.

There will be a problem with my hack if Vanilla biomes are not being created at all, but another mod creates biome with id 161. It will be replaced with biome 160.

So instead… how about detecting the bug when arrRealisticBiomeIds is being populated:

    public RealisticBiomeBase(BiomeGenBase biome, BiomeGenBase river) {

        super(biome.biomeID);

        if (biome.biomeID == 160 && this instanceof rtg.world.biome.realistic.vanilla.RealisticBiomeVanillaRedwoodTaigaHills) {
            arrRealisticBiomeIds[161] = this;
        } else {
            arrRealisticBiomeIds[biome.biomeID] = this;
        }
commented

This approach I like. Basically, if vanilla dups biome 160 into 161 RTG should too. If some other mod overwrites 161 later RTG will probably overwrite as well.

commented

My reaction is not to use this fix because a biome mod might try to use 161 for something else and that would be a heck of a bug to fix. Can't we just put another biome into arrRealisticBiomeIds[], like Mega Taiga Hills itself?

If it's really not there, i'll suppress it in CC.

commented

Don't know what will happen with vanilla

commented

Hrmm. It already DOES seem suppressed (actually just not there). This has been coming up with CC installed?

commented

Fixed in 68135e3 - thanks @KeepOnDigging

commented

From Zeno...

OK, biome 161 is STILL not fixed, apparently. The problem is that the Realistic Biome is created with the biome it's "realisticking" as a parameter. And it gets the biome ID of that biome. Which should work, but because of the hacktacular way vanilla kludges around the 161 problem the biome in slot 161 actually has a DIFFERENT biome ID (160,I suppose). And so Redwood Taiga Hills gets biome 160 and boom.

The best fix might be to put a proper biome 161 into biome slot 161

commented

How can I reproduce the "boom"?

commented

EB in your mods folder, CC out

You probably have to turn "EB Volcano" on in your RTG EB config or else that will crash you first. I think Pink fixed the default in the program but that doesn't change existing files.

"Realistic" world type

Seed: 6094193030622223401

You should spawn in a "Pine Forest Archipelago"

TP to about -200, -215 - that was on my screen when it crashed

commented

It's not crashing for me.
NEI's Biome Dump with EB installed shows nothing out of the ordinary for biome 161. Like, it doesn't seem to have been over-ridden by EB or anything.

"And so Redwood Taiga Hills gets biome 160 and boom" shouldn't be a problem… as long it has a valid biome to extend it ought to work fine.

commented

You went there with no crash? Hmm. But it's not that EB made or overrun the biome, it's that 161 is an extremely rare biome and that seed, with EB running the biome layout, was the only one I could find with an accessible 161. EB's contribution is only that its GenLayer stack placed it.

commented

I spawned in a "Pine Forest Archipelago" so I assume this is the right seed. I flew around from -500,-500 out to 400,400 and no crash. I didn't see any Mega Taiga biomes. I also tried mapping the world with AdminCommandsToolbox/Journeymap and it didn't crash.

Mods folder contains:

1.7.10
CodeChickenCore-1.7.10-1.0.7.47-universal.jar
Enhanced Biomes 2.5 for MC 1.7.10.jar
fastcraft-1.21.jar
journeymap-1.7.10-5.1.3-unlimited.jar
NotEnoughItems-1.7.10-1.0.5.118-universal.jar
RTG-1.7.10-0.5.0-snapshot-5.jar
Waila-1.5.10_1.7.10.jar

(I installed Waila so I could check out all these amazing EB tree types as I was flying around!)

My EB config is default.
RTG config has B:"RTG Biome Layout"=false and all else default.

Maybe send me a zipped instance of your setup.

commented

Actually now I'd suspect it's because I'm using an older Forge (1448) and maybe Forge fixed the biome table. I'd just as soon close this again for now and reopen it if somebody else gets the problem. It won't bother me because I almost always use CC, which shouldn't be placing the biome anyway.

commented

Cool, closing again.