mojira.dev
MC-194350

Some feature configurations don't load in a datapack (java.lang.IllegalArgumentException: value already present: clh@77f95e19)

The Bug

Features that are defined in a certain way cause the datapack to be unable to be applied.

In case the faulty feature is wrapped into for example another feature of type minecraft:decorated, you won't actually see any errors, as the inner feature seems to default to no_op in that case.
If and only if the outer feature errors, you actually see the error.

Some vanilla files from this dump are affected as well: https://twitter.com/slicedlime/status/1280893773296422912

This is the exception, that shows up:

java.lang.IllegalArgumentException: value already present: clh@77f95e19
	at com.google.common.collect.HashBiMap.put(HashBiMap.java:287)
	at com.google.common.collect.HashBiMap.put(HashBiMap.java:262)
	at gh.a(SourceFile:64)
	at gh.a(SourceFile:75)
	at yb.b(SourceFile:66)
	at yb$$Lambda$3899/603200739.apply(Unknown Source)
	at com.mojang.datafixers.util.Pair.mapFirst(Pair.java:64)
	at yb.a(SourceFile:65)
	at yb$$Lambda$3898/1042558830.apply(Unknown Source)
	at com.mojang.datafixers.util.Either$Left.mapBoth(Either.java:33)
	at com.mojang.serialization.DataResult.map(DataResult.java:110)
	at yb.a(SourceFile:65)
	at ya.decode(SourceFile:36)
	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:248)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.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.codecs.KeyDispatchCodec$$Lambda$3844/965811562.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.codecs.KeyDispatchCodec$$Lambda$3843/709506664.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.MapCodec$3.decode(MapCodec.java:186)
	at com.mojang.serialization.MapDecoder.lambda$compressedDecode$0(MapDecoder.java:52)
	at com.mojang.serialization.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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 yb.a(SourceFile:161)
	at yb.a(SourceFile:139)
	at yb.a(SourceFile:74)
	at ya.decode(SourceFile:36)
	at com.mojang.serialization.codecs.ListCodec.lambda$null$2(ListCodec.java:46)
	at com.mojang.serialization.codecs.ListCodec$$Lambda$2996/136037594.accept(Unknown Source)
	at com.mojang.serialization.JsonOps.lambda$getList$7(JsonOps.java:292)
	at com.mojang.serialization.JsonOps$$Lambda$3872/198941055.accept(Unknown Source)
	at com.mojang.serialization.codecs.ListCodec.lambda$decode$4(ListCodec.java:45)
	at com.mojang.serialization.codecs.ListCodec$$Lambda$2995/1792087378.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.ListCodec.decode(ListCodec.java:39)
	at com.mojang.serialization.Decoder$3.decode(Decoder.java:77)
	at com.mojang.serialization.Codec$2.decode(Codec.java:71)
	at com.mojang.serialization.codecs.ListCodec.lambda$null$2(ListCodec.java:46)
	at com.mojang.serialization.codecs.ListCodec$$Lambda$2996/136037594.accept(Unknown Source)
	at com.mojang.serialization.JsonOps.lambda$getList$7(JsonOps.java:292)
	at com.mojang.serialization.JsonOps$$Lambda$3872/198941055.accept(Unknown Source)
	at com.mojang.serialization.codecs.ListCodec.lambda$decode$4(ListCodec.java:45)
	at com.mojang.serialization.codecs.ListCodec$$Lambda$2995/1792087378.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.ListCodec.decode(ListCodec.java:39)
	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$7.decode(RecordCodecBuilder.java:409)
	at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$7.decode(RecordCodecBuilder.java:405)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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 yb.a(SourceFile:161)
	at yb.a(SourceFile:139)
	at yb.a(SourceFile:74)
	at ya.decode(SourceFile:36)
	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.MapCodec$2.decode(MapCodec.java:63)
	at com.mojang.serialization.codecs.KeyDispatchCodec.lambda$null$1(KeyDispatchCodec.java:67)
	at com.mojang.serialization.codecs.KeyDispatchCodec$$Lambda$3844/965811562.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.codecs.KeyDispatchCodec$$Lambda$3843/709506664.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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$5.decode(RecordCodecBuilder.java:323)
	at com.mojang.serialization.codecs.RecordCodecBuilder$2.decode(RecordCodecBuilder.java:107)
	at com.mojang.serialization.codecs.KeyDispatchCodec.lambda$null$1(KeyDispatchCodec.java:67)
	at com.mojang.serialization.codecs.KeyDispatchCodec$$Lambda$3844/965811562.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.codecs.KeyDispatchCodec$$Lambda$3843/709506664.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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 com.mojang.serialization.codecs.BaseMapCodec$$Lambda$3836/1071236571.apply(Unknown Source)
	at java.util.stream.ReduceOps$1ReducingSink.accept(ReduceOps.java:80)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
	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.codecs.UnboundedMapCodec$$Lambda$3834/849241856.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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 xz.decode(SourceFile:34)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.decode(Decoder.java:22)
	at com.mojang.serialization.Decoder.parse(Decoder.java:26)
	at dar.a(SourceFile:115)
	at dar.a(SourceFile:206)
	at dar$$Lambda$3828/715497518.apply(Unknown Source)
	at dar.a(SourceFile:169)
	at dar.a(SourceFile:57)
	at dar$a.a(SourceFile:323)
	at dmk.a(SourceFile:1683)
	at dmk$$Lambda$3144/1074078310.apply(Unknown Source)
	at dmk.a(SourceFile:1906)
	at dmk.a(SourceFile:1753)
	at dmk.a(SourceFile:1697)
	at duq$a.e(SourceFile:411)
	at duq$a.a(SourceFile:321)
	at duq$a.a(SourceFile:258)
	at dnr.a(SourceFile:331)
	at dor.a(SourceFile:27)
	at dml.b(SourceFile:92)
	at dml$$Lambda$2888/1388124035.run(Unknown Source)
	at drd.a(SourceFile:431)
	at dml.a(SourceFile:92)
	at dml.c(SourceFile:162)
	at dml$$Lambda$2887/66554485.run(Unknown Source)
	at aqp.execute(SourceFile:94)
	at dml.b(SourceFile:162)
	at dml$$Lambda$2238/1027992087.invoke(Unknown Source)
	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:3174)
	at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(SourceFile:127)
	at dmk.e(SourceFile:1043)
	at dmk.e(SourceFile:653)
	at net.minecraft.client.main.Main.main(SourceFile:215)
java.lang.IllegalArgumentException: value already present: clh@77f95e19
	at com.google.common.collect.HashBiMap.put(HashBiMap.java:287)
	at com.google.common.collect.HashBiMap.put(HashBiMap.java:262)
	at gh.a(SourceFile:64)
	at gh.a(SourceFile:75)
	at yb.b(SourceFile:66)
	at yb$$Lambda$3899/603200739.apply(Unknown Source)
	at com.mojang.datafixers.util.Pair.mapFirst(Pair.java:64)
	at yb.a(SourceFile:65)
	at yb$$Lambda$3898/1042558830.apply(Unknown Source)
	at com.mojang.datafixers.util.Either$Left.mapBoth(Either.java:33)
	at com.mojang.serialization.DataResult.map(DataResult.java:110)
	at yb.a(SourceFile:65)
	at ya.decode(SourceFile:36)
	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:248)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.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.codecs.KeyDispatchCodec$$Lambda$3844/965811562.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.codecs.KeyDispatchCodec$$Lambda$3843/709506664.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.MapCodec$3.decode(MapCodec.java:186)
	at com.mojang.serialization.MapDecoder.lambda$compressedDecode$0(MapDecoder.java:52)
	at com.mojang.serialization.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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 yb.a(SourceFile:161)
	at yb.a(SourceFile:139)
	at yb.a(SourceFile:74)
	at ya.decode(SourceFile:36)
	at com.mojang.serialization.codecs.ListCodec.lambda$null$2(ListCodec.java:46)
	at com.mojang.serialization.codecs.ListCodec$$Lambda$2996/136037594.accept(Unknown Source)
	at com.mojang.serialization.JsonOps.lambda$getList$7(JsonOps.java:292)
	at com.mojang.serialization.JsonOps$$Lambda$3872/198941055.accept(Unknown Source)
	at com.mojang.serialization.codecs.ListCodec.lambda$decode$4(ListCodec.java:45)
	at com.mojang.serialization.codecs.ListCodec$$Lambda$2995/1792087378.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.ListCodec.decode(ListCodec.java:39)
	at com.mojang.serialization.Decoder$3.decode(Decoder.java:77)
	at com.mojang.serialization.Codec$2.decode(Codec.java:71)
	at com.mojang.serialization.codecs.ListCodec.lambda$null$2(ListCodec.java:46)
	at com.mojang.serialization.codecs.ListCodec$$Lambda$2996/136037594.accept(Unknown Source)
	at com.mojang.serialization.JsonOps.lambda$getList$7(JsonOps.java:292)
	at com.mojang.serialization.JsonOps$$Lambda$3872/198941055.accept(Unknown Source)
	at com.mojang.serialization.codecs.ListCodec.lambda$decode$4(ListCodec.java:45)
	at com.mojang.serialization.codecs.ListCodec$$Lambda$2995/1792087378.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.ListCodec.decode(ListCodec.java:39)
	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$7.decode(RecordCodecBuilder.java:409)
	at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$7.decode(RecordCodecBuilder.java:405)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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 yb.a(SourceFile:161)
	at yb.a(SourceFile:139)
	at yb.a(SourceFile:74)
	at ya.decode(SourceFile:36)
	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.MapCodec$2.decode(MapCodec.java:63)
	at com.mojang.serialization.codecs.KeyDispatchCodec.lambda$null$1(KeyDispatchCodec.java:67)
	at com.mojang.serialization.codecs.KeyDispatchCodec$$Lambda$3844/965811562.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.codecs.KeyDispatchCodec$$Lambda$3843/709506664.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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$5.decode(RecordCodecBuilder.java:323)
	at com.mojang.serialization.codecs.RecordCodecBuilder$2.decode(RecordCodecBuilder.java:107)
	at com.mojang.serialization.codecs.KeyDispatchCodec.lambda$null$1(KeyDispatchCodec.java:67)
	at com.mojang.serialization.codecs.KeyDispatchCodec$$Lambda$3844/965811562.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.codecs.KeyDispatchCodec$$Lambda$3843/709506664.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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 com.mojang.serialization.codecs.BaseMapCodec$$Lambda$3836/1071236571.apply(Unknown Source)
	at java.util.stream.ReduceOps$1ReducingSink.accept(ReduceOps.java:80)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
	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.codecs.UnboundedMapCodec$$Lambda$3834/849241856.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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 xz.decode(SourceFile:34)
	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.MapDecoder$$Lambda$2993/543433178.apply(Unknown Source)
	at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
	at com.mojang.serialization.DataResult$$Lambda$632/2136614370.apply(Unknown Source)
	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.decode(Decoder.java:22)
	at com.mojang.serialization.Decoder.parse(Decoder.java:26)
	at dar.a(SourceFile:115)
	at dar.a(SourceFile:206)
	at dar$$Lambda$3828/715497518.apply(Unknown Source)
	at dar.a(SourceFile:169)
	at dar.a(SourceFile:57)
	at dar$a.a(SourceFile:323)
	at dmk.a(SourceFile:1683)
	at dmk$$Lambda$3144/1074078310.apply(Unknown Source)
	at dmk.a(SourceFile:1906)
	at dmk.a(SourceFile:1753)
	at dmk.a(SourceFile:1697)
	at duq$a.e(SourceFile:411)
	at duq$a.a(SourceFile:321)
	at duq$a.a(SourceFile:258)
	at dnr.a(SourceFile:331)
	at dor.a(SourceFile:27)
	at dml.b(SourceFile:92)
	at dml$$Lambda$2888/1388124035.run(Unknown Source)
	at drd.a(SourceFile:431)
	at dml.a(SourceFile:92)
	at dml.c(SourceFile:162)
	at dml$$Lambda$2887/66554485.run(Unknown Source)
	at aqp.execute(SourceFile:94)
	at dml.b(SourceFile:162)
	at dml$$Lambda$2238/1027992087.invoke(Unknown Source)
	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:3174)
	at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(SourceFile:127)
	at dmk.e(SourceFile:1043)
	at dmk.e(SourceFile:653)
	at net.minecraft.client.main.Main.main(SourceFile:215)

How to Reproduce

I am not sure about the exact conditions. One example seems to be when a minecraft:random_selector is nested into a minecraft:decorated feature.

For testing I attached a datapack with a minimal custom biome that still reproduces this bug.

  1. click "create new world"

  2. In the world creation screen, click "Data Packs"

  3. Drag

[media]
  1. onto the screen that you just opened opened.

  2. Enable the pack by clicking the arrow, moving it to the "Selected" column

  3. Go back to the world creation screen
    → ❌ The game freezes on "Validating selected data packs", and the exception posted above appears in the log.

Analyses

Responsible is the buggy:crash_trees feature which is defined as follows:

{
	"name": "minecraft:decorated",
	"config": {
		"decorator": {
			"name": "minecraft:decorated",
			"config": {
				"outer": {
					"name": "minecraft:square",
					"config": {}
				},
				"inner": {
					"name": "minecraft:heightmap",
					"config": {}
				}
			}
		},
		"feature": {
			"name": "minecraft:random_selector",
			"config": {
				"default": "minecraft:oak",
				"features": [
					{
						"feature": "minecraft:fancy_oak",
						"chance": 0.1
					}
				]
			}
		}
	}
}
{
	"name": "minecraft:decorated",
	"config": {
		"decorator": {
			"name": "minecraft:decorated",
			"config": {
				"outer": {
					"name": "minecraft:square",
					"config": {}
				},
				"inner": {
					"name": "minecraft:heightmap",
					"config": {}
				}
			}
		},
		"feature": {
			"name": "minecraft:random_selector",
			"config": {
				"default": "minecraft:oak",
				"features": [
					{
						"feature": "minecraft:fancy_oak",
						"chance": 0.1
					}
				]
			}
		}
	}
}

If the decorator is ommited, the random_selector feature works as expected:

{
	"name": "minecraft:random_selector",
	"config": {
		"default": "minecraft:oak",
		"features": [
			{
				"feature": "minecraft:fancy_oak",
				"chance": 0.1
			}
		]
	}
}
{
	"name": "minecraft:random_selector",
	"config": {
		"default": "minecraft:oak",
		"features": [
			{
				"feature": "minecraft:fancy_oak",
				"chance": 0.1
			}
		]
	}
}

The outer decorated feature works as expected too, when using a different inner feature:

{
	"name": "minecraft:decorated",
	"config": {
		"decorator": {
			"name": "minecraft:decorated",
			"config": {
				"outer": {
					"name": "minecraft:square",
					"config": {}
				},
				"inner": {
					"name": "minecraft:heightmap",
					"config": {}
				}
			}
		},
		"feature": "minecraft:oak"
	}
}
{
	"name": "minecraft:decorated",
	"config": {
		"decorator": {
			"name": "minecraft:decorated",
			"config": {
				"outer": {
					"name": "minecraft:square",
					"config": {}
				},
				"inner": {
					"name": "minecraft:heightmap",
					"config": {}
				}
			}
		},
		"feature": "minecraft:oak"
	}
}

The combination of the two, however, does not work for some reason.

Linked issues

Attachments

Comments 3

Using a debugger I was able to verify the duplicate object is a ConfiguredFeature (yarn mapping, "clh") for the "no_op" feature, stored in the "kg". This is used as a default value. I have not discovered why the Ops returns a successful DataResult instead of an error.

Tested in 20w29a, still crashing for the same reason.

After a bit more investigating, I found this mostly seems to happen when using unnamed features. It looks like those are all stored at the same location in the BiMap causing this crash. This also appears to happen when any incorrect data is entered as then a default one is used (maybe no_op) also causing the same one to be present multiple times.

NeunEinser

slicedlime

Community Consensus

Low

Custom Worlds, World generation

20w28a, 20w29a

20w30a

Retrieved