mojira.dev
MC-46082

Crashes when populating a chunk with empty (void) columns

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

Attachments

Comments 44

I can provide a test map if desired.

You are using large biomes! Say it in the description!

Thanks for the tip. I tested it, and it also happens with default biomes. I'll attach another crash report.

Reproduction steps?

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.

34 more comments

1.8 is already prereleased, but 1.8-pre2 is expected today.

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?

Can you post a preset which includes empty columns? (or some other way to reproduce)

Pepijn Schmitz

migrated

Confirmed

Minecraft 1.7.4, Minecraft 1.7.5, Minecraft 1.7.9, Minecraft 14w21b, Minecraft 14w25b, ..., Minecraft 14w29a, Minecraft 14w29b, Minecraft 14w30a, Minecraft 14w30b, Minecraft 14w33c

Minecraft 1.8-pre2

Retrieved