Snapshot 5 - problem with biome 161
KeepOnDigging opened this issue · 27 comments
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!
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.
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.
Still crashing in snapshot-4.
I'll do some more testing on a different computer etc and see if I can narrow it down.
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.
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.
I have built the current master, and this issue hasn't been fixed with the addition of RealisticBiomePresenceTester.java.
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.
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?
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!
@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.
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;
}
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.
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.
Hrmm. It already DOES seem suppressed (actually just not there). This has been coming up with CC installed?
Fixed in 68135e3 - thanks @KeepOnDigging
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
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
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.
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.
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.
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.