Minecraft crashes when populating a chunk which has empty columns ("void columns"), i.e. colums with just air blocks, no bedrock, such as can for instance be generated by creating a Superflat world with preset
2;0;1;decoration
I have attached the crash report. I don't have access to the Minecraft source code, but using the Minecraft Coder Pack for Minecraft 1.7.2 I've traced it to the following code in BiomeDecorator.java (method func_150513_a(BiomeGenBase), lines 160-166):
for(var3 = 0; var3 < this.grassPerChunk; ++var3) {
var4 = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
var6 = this.randomGenerator.nextInt(this.currentWorld.getHeightValue(var4, var5) * 2);
WorldGenerator var10 = p_150513_1_.getRandomWorldGenForGrass(this.randomGenerator);
var10.generate(this.currentWorld, this.randomGenerator, var4, var6, var5);
}
It takes the height at a particular x,z coordinate and feeds the result (times two) to Random.nextInt(int). Unfortunately that method throws an exception when passed a value of zero.
One way to fix this would be to change those lines to something like:
for(var3 = 0; var3 < this.grassPerChunk; ++var3) {
var4 = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
int height = this.currentWorld.getHeightValue(var4, var5);
if (height > 0) {
var6 = this.randomGenerator.nextInt(height * 2);
WorldGenerator var10 = p_150513_1_.getRandomWorldGenForGrass(this.randomGenerator);
var10.generate(this.currentWorld, this.randomGenerator, var4, var6, var5);
}
}
The same would have to be done for the other loops in that method.
Linked issues
is duplicated by 10
Attachments
Comments 44
Thanks for the tip. I tested it, and it also happens with default biomes. I'll attach another crash report.
To reproduce, unzip this map (created with WorldPainter) to the saves folder and try to load it in Minecraft. It will hang, but the log will show the exception.
Thank you so much Mojang! I am glad this bug was fixed,, now the map that it made in 1.6, people can download and use 1.8.
Unfortunately it seems that the bug has only been fixed for Superflat mode.
Is there any chance of getting it fixed for all world types, to fix the use case where people want Minecraft to populate the world with trees, etc. but want it to contain void as well?
I can provide a test map if desired.