mojira.dev
MC-213583

Crash upon importing world generation settings with over 256 layers

The bug

Upon importing world generation settings that include over 256 layers, the game crashes. I've attached the settings file that I used when experiencing the issue, as well as the full crash report.

Note that the world height can be any valid height, and that there must be at least 257 layers included.

How to reproduce

  1. Select Singleplayer → Create New World → More World Options... → Import Settings

  2. Import the

[media]
  1. file
    ❌ Game crashes

Stack trace

21w03a: [^crash-2021-02-01_16.05.04-client.txt]

Description: mouseClicked event handler

java.lang.ArrayIndexOutOfBoundsException: 256
	at ctz.h(SourceFile:236)
	at ctz.<init>(SourceFile:99)
	at com.mojang.datafixers.util.Function6.lambda$null$4(Function6.java:18)
	at com.mojang.serialization.DataResult$Instance.ap3(DataResult.java:337)
	at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$5.decode(RecordCodecBuilder.java:321)
	at com.mojang.serialization.codecs.RecordCodecBuilder$2.decode(RecordCodecBuilder.java:107)
	at com.mojang.serialization.MapDecoder.lambda$compressedDecode$0(MapDecoder.java:52)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
	at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
	at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52)
	at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91)
	at com.mojang.serialization.Decoder$1.decode(Decoder.java:49)
	at com.mojang.serialization.Codec$2.decode(Codec.java:71)
	at com.mojang.serialization.Codec$1.decode(Codec.java:45)
	at com.mojang.serialization.Decoder.parse(Decoder.java:18)
	at com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29)
	at com.mojang.serialization.MapCodec$1.decode(MapCodec.java:34)
	at com.mojang.serialization.MapDecoder$4.decode(MapDecoder.java:94)
	at com.mojang.serialization.MapCodec$1.decode(MapCodec.java:34)
	at com.mojang.serialization.codecs.KeyDispatchCodec.lambda$null$1(KeyDispatchCodec.java:67)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
	at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
	at com.mojang.serialization.codecs.KeyDispatchCodec.lambda$decode$2(KeyDispatchCodec.java:58)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
	at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
	at com.mojang.serialization.codecs.KeyDispatchCodec.decode(KeyDispatchCodec.java:56)
	at com.mojang.serialization.MapDecoder.lambda$compressedDecode$0(MapDecoder.java:52)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
	at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
	at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52)
	at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91)
	at com.mojang.serialization.Decoder.parse(Decoder.java:18)
	at com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29)
	at com.mojang.serialization.MapCodec$1.decode(MapCodec.java:34)
	at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$3.decode(RecordCodecBuilder.java:249)
	at com.mojang.serialization.codecs.RecordCodecBuilder$2.decode(RecordCodecBuilder.java:107)
	at com.mojang.serialization.MapDecoder.lambda$compressedDecode$0(MapDecoder.java:52)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
	at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
	at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52)
	at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91)
	at com.mojang.serialization.Decoder.parse(Decoder.java:18)
	at com.mojang.serialization.codecs.BaseMapCodec.lambda$decode$2(BaseMapCodec.java:31)
	at java.util.stream.ReduceOps$1ReducingSink.accept(ReduceOps.java:80)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.Iterator.forEachRemaining(Iterator.java:116)
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.reduce(ReferencePipeline.java:484)
	at com.mojang.serialization.codecs.BaseMapCodec.decode(BaseMapCodec.java:27)
	at com.mojang.serialization.codecs.UnboundedMapCodec.lambda$decode$0(UnboundedMapCodec.java:38)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
	at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
	at com.mojang.serialization.codecs.UnboundedMapCodec.decode(UnboundedMapCodec.java:38)
	at com.mojang.serialization.Decoder$2.decode(Decoder.java:63)
	at com.mojang.serialization.Codec$2.decode(Codec.java:71)
	at vv.decode(SourceFile:33)
	at com.mojang.serialization.Decoder$2.decode(Decoder.java:63)
	at com.mojang.serialization.Codec$2.decode(Codec.java:71)
	at com.mojang.serialization.Decoder.parse(Decoder.java:18)
	at com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29)
	at com.mojang.serialization.MapCodec$1.decode(MapCodec.java:34)
	at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$5.decode(RecordCodecBuilder.java:324)
	at com.mojang.serialization.codecs.RecordCodecBuilder$2.decode(RecordCodecBuilder.java:107)
	at com.mojang.serialization.MapDecoder.lambda$compressedDecode$0(MapDecoder.java:52)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
	at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
	at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52)
	at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91)
	at com.mojang.serialization.Decoder$1.decode(Decoder.java:49)
	at com.mojang.serialization.Codec$2.decode(Codec.java:71)
	at com.mojang.serialization.Decoder.parse(Decoder.java:18)
	at dye.a(SourceFile:171)
	at dra.b(SourceFile:33)
	at dqu.a(SourceFile:16)
	at dqy.a(SourceFile:153)
	at dry.a(SourceFile:27)
	at dpr.b(SourceFile:92)
	at duk.a(SourceFile:451)
	at dpr.a(SourceFile:92)
	at dpr.c(SourceFile:162)
	at aow.execute(SourceFile:94)
	at dpr.b(SourceFile:162)
	at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:36)
	at org.lwjgl.system.JNI.invokeV(Native Method)
	at org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3129)
	at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(SourceFile:140)
	at dpq.e(SourceFile:1076)
	at dpq.e(SourceFile:688)
	at net.minecraft.client.main.Main.main(SourceFile:215)

Linked issues

Attachments

Comments 1

This might be the same cause issue as MC-68124, that issue was fixed by removing the ability to input > 256 in the in game layer preset menu instead of the underlying issue which is that the flat world generator was never made to be able to generate above 256. which is possible in the latest snapshots.

[Mod] markderickson

(Unassigned)

Confirmed

Very Important

Crash

21w03a, 21w05a, 21w05b, 21w06a, 21w07a, 21w08b, 21w10a

21w11a

Retrieved