[Bug] Crash when upgrading worlds that have had any unrecognised keys / Using pass-through codec causes game to crash during datafixing
Sollace opened this issue ยท 2 comments
The way I encountered this was by creating a world on 1.20.1 with immersive portals, and then when updating to 1.21.1 I had to remove immersive portals due to incompatibilities. There was a key left over by the mod in the world though that causes the game to crash when running datafixes to upgrade the world.
New worlds created on the new version are not affected as they don't go through datafixing.
I initially thought this might be a mojang issue, but during tracing the cause I eventually tracked down Codec#20 as the anonymous class for Codec.PASSTHROUGH. Looking for references to that, I stumbled upon this mixing here
/**
* Make the DSL.taggedChoiceLazy to ignore mod custom generator types and not cause deserialization failure.
* The Codec.PASSTHROUGH will not make Dynamic to be deserialized and serialized to Dynamic.
* This will avoid deserialization failure from DFU when upgrading level.dat that contains mod custom generator types.
*/
@Inject(
method = "getMapCodec", at = @At("HEAD"), cancellable = true, remap = false
)
private void onGetCodec(K k, CallbackInfoReturnable<DataResult<? extends Codec<?>>> cir) {
if (failSoft) {
if (!types.containsKey(k)) {
LOGGER.warn("Not recognizing key {}. Using pass-through codec. {}", k, this);
cir.setReturnValue(DataResult.success(Codec.PASSTHROUGH));
}
}
}
I see the logged warning from my crashlog here, and looking at the target method in TaggedChoice.TaggedChoiceType:
private DataResult<? extends MapCodec<?>> getMapCodec(final K key) {
return Optional.ofNullable(types.get(key))
.map(type -> DataResult.success(MapCodec.assumeMapUnsafe(type.codec())))
.orElseGet(() -> DataResult.error(() -> "Unsupported key: " + key));
}
I believe this method should be returning a MapCodec<T>, so the corrected mixin should read like this:
/**
* Make the DSL.taggedChoiceLazy to ignore mod custom generator types and not cause deserialization failure.
* The Codec.PASSTHROUGH will not make Dynamic to be deserialized and serialized to Dynamic.
* This will avoid deserialization failure from DFU when upgrading level.dat that contains mod custom generator types.
*/
@Inject(
method = "getMapCodec", at = @At("HEAD"), cancellable = true, remap = false
)
private void onGetCodec(K k, CallbackInfoReturnable<DataResult<? extends MapCodec<?>>> cir) {
if (failSoft) {
if (!types.containsKey(k)) {
LOGGER.warn("Not recognizing key {}. Using pass-through codec. {}", k, this);
cir.setReturnValue(DataResult.success(MapCodec.assumeMapUnsafe(Codec.PASSTHROUGH)));
}
}
}
Crash log: https://mclo.gs/0IR1CNN
The Important part
[00:17:41] [Render thread/WARN]: Not recognizing key immersive_portals:normal_skyland_generator. Using pass-through codec. TaggedChoiceType[type, minecraft:flat -> ((Tag["settings", ((Tag["biome", NamedType["biome", NamespacedString]] | EmptyPart), ((Tag["layers", List[((Tag["block", NamedType["block_name", NamespacedString]] | EmptyPart), EmptyPartPassthrough)]] | EmptyPart), EmptyPartPassthrough))] | EmptyPart), EmptyPartPassthrough),
minecraft:noise -> ((Tag["biome_source", TaggedChoiceType[type, minecraft:checkerboard -> (Tag["biomes", List[NamedType["biome", NamespacedString]]], EmptyPartPassthrough),
minecraft:the_end -> EmptyPartPassthrough,
minecraft:fixed -> (Tag["biome", NamedType["biome", NamespacedString]], EmptyPartPassthrough),
minecraft:multi_noise -> ((Tag["preset", NamedType["multi_noise_biome_source_parameter_list", NamespacedString]], EmptyPartPassthrough) | List[(Tag["biome", NamedType["biome", NamespacedString]], EmptyPartPassthrough)])]
] | EmptyPart), ((Tag["settings", (String | ((Tag["default_block", NamedType["block_name", NamespacedString]] | EmptyPart), ((Tag["default_fluid", NamedType["block_name", NamespacedString]] | EmptyPart), EmptyPartPassthrough)))] | EmptyPart), EmptyPartPassthrough)),
minecraft:debug -> EmptyPartPassthrough]
[00:17:42] [Render thread/ERROR]: Reported exception thrown!
net.minecraft.class_148: mouseClicked event handler
at knot/net.minecraft.class_437.method_25412(class_437.java:436) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_312.method_1601(class_312.java:107) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_312.method_22686(class_312.java:196) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_1255.execute(class_1255.java:108) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_312.method_22684(class_312.java:196) ~[client-intermediary.jar:?]
at knot/org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43) ~[lwjgl-glfw-3.3.3.jar:?]
at knot/org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.3.3.jar:?]
at knot/org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3509) ~[lwjgl-glfw-3.3.3.jar:?]
at knot/com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(RenderSystem.java:184) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_310.method_1523(class_310.java:1310) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_310.method_1514(class_310.java:882) [client-intermediary.jar:?]
at knot/net.minecraft.client.main.Main.main(Main.java:256) [client-intermediary.jar:?]
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480) [fabric-loader-0.16.14.jar:?]
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) [fabric-loader-0.16.14.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) [fabric-loader-0.16.14.jar:?]
at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:105) [NewLaunch.jar:?]
at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129) [NewLaunch.jar:?]
at org.prismlauncher.EntryPoint.main(EntryPoint.java:70) [NewLaunch.jar:?]
Caused by: java.lang.ClassCastException: class com.mojang.serialization.Codec$20 cannot be cast to class com.mojang.serialization.MapCodec (com.mojang.serialization.Codec$20 and com.mojang.serialization.MapCodec are in unnamed module of loader 'knot' @731f8236)
at knot/com.mojang.serialization.DataResult$Success.map(DataResult.java:175) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.datafixers.types.templates.TaggedChoice$TaggedChoiceType.lambda$buildCodec$2(TaggedChoice.java:205) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.KeyDispatchCodec.lambda$decode$4(KeyDispatchCodec.java:46) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.flatMap(DataResult.java:201) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.KeyDispatchCodec.decode(KeyDispatchCodec.java:45) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.lambda$compressedDecode$1(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.flatMap(DataResult.java:201) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:158) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Decoder.parse(Decoder.java:18) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapCodec$2.decode(MapCodec.java:77) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.lambda$compressedDecode$1(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.flatMap(DataResult.java:201) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:158) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.PairCodec.decode(PairCodec.java:23) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Decoder.parse(Decoder.java:18) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.CompoundListCodec.lambda$decode$2(CompoundListCodec.java:38) ~[datafixerupper-8.0.16.jar:?]
at knot/net.minecraft.class_2509.method_29153(class_2509.java:211) ~[client-intermediary.jar:?]
at knot/com.mojang.serialization.codecs.CompoundListCodec.lambda$decode$4(CompoundListCodec.java:36) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.flatMap(DataResult.java:201) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.CompoundListCodec.decode(CompoundListCodec.java:30) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.PairCodec.decode(PairCodec.java:23) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Decoder.parse(Decoder.java:18) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapCodec$2.decode(MapCodec.java:77) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.lambda$compressedDecode$1(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.flatMap(DataResult.java:201) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:158) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.PairCodec.decode(PairCodec.java:23) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.datafixers.types.templates.Named$NamedType$1.decode(Named.java:118) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.datafixers.types.Type.readAndWrite(Type.java:158) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.datafixers.DataFixerUpper.update(DataFixerUpper.java:78) ~[datafixerupper-8.0.16.jar:?]
at knot/net.minecraft.class_4284.method_48129(class_4284.java:75) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_4284.method_48128(class_4284.java:79) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_32.method_59826(class_32.java:231) ~[client-intermediary.jar:?]
at knot/com.mojang.serialization.Dynamic.lambda$update$14(Dynamic.java:143) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DynamicOps.lambda$update$27(DynamicOps.java:221) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.map(DataResult.java:175) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DynamicOps.update(DynamicOps.java:221) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Dynamic.lambda$update$15(Dynamic.java:143) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Dynamic.map(Dynamic.java:38) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Dynamic.update(Dynamic.java:143) ~[datafixerupper-8.0.16.jar:?]
at knot/net.minecraft.class_32.method_54528(class_32.java:230) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_32$class_5143.method_27013(class_32.java:444) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_32$class_5143.method_54545(class_32.java:435) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_7196.method_57782(class_7196.java:251) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_7196.method_57784(class_7196.java:243) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_528$class_4272.method_20164(class_528.java:434) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_528$class_4272.method_25402(class_528.java:411) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_350.method_25402(class_350.java:315) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_4069.method_25402(class_4069.java:38) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_312.method_1611(class_312.java:107) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_437.method_25412(class_437.java:431) ~[client-intermediary.jar:?]
... 17 more
---- Minecraft Crash Report ----
// This doesn't make any sense!
I have a similar issue with my mod whenever I try to update worlds prior to 25w35a.
Yep. This is exactly the same bug.
I have a similar issue with my mod whenever I try to update worlds prior to 25w35a.
[13:25:59] [Render thread/WARN] (TaggedChoiceType_DimDataFix) Not recognizing key minecraft:hub. Using pass-through codec. TaggedChoiceType[type, minecraft:flat -> ((Tag["settings", ((Tag["biome", NamedType["biome", NamespacedString]] | EmptyPart), ((Tag["layers", List[((Tag["block", NamedType["block_name", NamespacedString]] | EmptyPart), EmptyPartPassthrough)]] | EmptyPart), EmptyPartPassthrough))] | EmptyPart), EmptyPartPassthrough),
minecraft:noise -> ((Tag["biome_source", TaggedChoiceType[type, minecraft:checkerboard -> (Tag["biomes", List[NamedType["biome", NamespacedString]]], EmptyPartPassthrough),
minecraft:the_end -> EmptyPartPassthrough,
minecraft:fixed -> (Tag["biome", NamedType["biome", NamespacedString]], EmptyPartPassthrough),
minecraft:multi_noise -> ((Tag["preset", NamedType["multi_noise_biome_source_parameter_list", NamespacedString]], EmptyPartPassthrough) | List[(Tag["biome", NamedType["biome", NamespacedString]], EmptyPartPassthrough)])]
] | EmptyPart), ((Tag["settings", (String | ((Tag["default_block", NamedType["block_name", NamespacedString]] | EmptyPart), ((Tag["default_fluid", NamedType["block_name", NamespacedString]] | EmptyPart), EmptyPartPassthrough)))] | EmptyPart), EmptyPartPassthrough)),
minecraft:debug -> EmptyPartPassthrough]
[13:25:59] [Render thread/ERROR] (Minecraft) Reported exception thrown!
net.minecraft.ReportedException: mouseClicked event handler
at knot/net.minecraft.client.MouseHandler.onPress(MouseHandler.java:141) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.MouseHandler.method_22686(MouseHandler.java:238) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:110) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.MouseHandler.method_22684(MouseHandler.java:238) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43) ~[lwjgl-glfw-3.3.3.jar:?]
at knot/org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.3.3.jar:?]
at knot/org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3509) ~[lwjgl-glfw-3.3.3.jar:?]
at knot/com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(RenderSystem.java:169) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.Minecraft.runTick(Minecraft.java:1381) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.Minecraft.run(Minecraft.java:947) [minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.main.Main.main(Main.java:250) [minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:506) [fabric-loader-0.17.2.jar:?]
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:72) [fabric-loader-0.17.2.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) [fabric-loader-0.17.2.jar:?]
at net.fabricmc.devlaunchinjector.Main.main(Main.java:86) [dev-launch-injector-0.2.1+build.8.jar:?]
Caused by: java.lang.ClassCastException: class com.mojang.serialization.Codec$20 cannot be cast to class com.mojang.serialization.MapCodec (com.mojang.serialization.Codec$20 and com.mojang.serialization.MapCodec are in unnamed module of loader 'knot' @7791a895)
at knot/com.mojang.serialization.DataResult$Success.map(DataResult.java:175) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.datafixers.types.templates.TaggedChoice$TaggedChoiceType.lambda$buildCodec$2(TaggedChoice.java:205) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.KeyDispatchCodec.lambda$decode$4(KeyDispatchCodec.java:46) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.flatMap(DataResult.java:201) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.KeyDispatchCodec.decode(KeyDispatchCodec.java:45) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.lambda$compressedDecode$1(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.flatMap(DataResult.java:201) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:158) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Decoder.parse(Decoder.java:18) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapCodec$2.decode(MapCodec.java:77) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.lambda$compressedDecode$1(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.flatMap(DataResult.java:201) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:158) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.PairCodec.decode(PairCodec.java:23) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Decoder.parse(Decoder.java:18) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.CompoundListCodec.lambda$decode$2(CompoundListCodec.java:38) ~[datafixerupper-8.0.16.jar:?]
at knot/net.minecraft.nbt.NbtOps.method_29153(NbtOps.java:208) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/com.mojang.serialization.codecs.CompoundListCodec.lambda$decode$4(CompoundListCodec.java:36) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.flatMap(DataResult.java:201) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.CompoundListCodec.decode(CompoundListCodec.java:30) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.PairCodec.decode(PairCodec.java:23) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Decoder.parse(Decoder.java:18) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapCodec$2.decode(MapCodec.java:77) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.lambda$compressedDecode$1(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.flatMap(DataResult.java:201) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:158) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.codecs.PairCodec.decode(PairCodec.java:23) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.datafixers.types.templates.Named$NamedType$1.decode(Named.java:118) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.datafixers.types.Type.readAndWrite(Type.java:158) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.datafixers.DataFixerUpper.update(DataFixerUpper.java:78) ~[datafixerupper-8.0.16.jar:?]
at knot/net.minecraft.util.datafix.DataFixTypes.update(DataFixTypes.java:76) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.util.datafix.DataFixTypes.updateToCurrentVersion(DataFixTypes.java:80) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.world.level.storage.LevelStorageSource.method_59826(LevelStorageSource.java:231) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/com.mojang.serialization.Dynamic.lambda$update$14(Dynamic.java:143) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DynamicOps.lambda$update$27(DynamicOps.java:221) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DataResult$Success.map(DataResult.java:175) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.DynamicOps.update(DynamicOps.java:221) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Dynamic.lambda$update$15(Dynamic.java:143) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Dynamic.map(Dynamic.java:38) ~[datafixerupper-8.0.16.jar:?]
at knot/com.mojang.serialization.Dynamic.update(Dynamic.java:143) ~[datafixerupper-8.0.16.jar:?]
at knot/net.minecraft.world.level.storage.LevelStorageSource.readLevelDataTagFixed(LevelStorageSource.java:230) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.world.level.storage.LevelStorageSource$LevelStorageAccess.getDataTag(LevelStorageSource.java:444) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.world.level.storage.LevelStorageSource$LevelStorageAccess.getDataTag(LevelStorageSource.java:435) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.gui.screens.worldselection.WorldOpenFlows.openWorldLoadLevelData(WorldOpenFlows.java:253) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.gui.screens.worldselection.WorldOpenFlows.openWorld(WorldOpenFlows.java:245) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.grupa_tkd.exotelcraft.client.gui.screens.bedrock.worldselection.BedrockWorldSelectionList$WorldListEntry.joinWorld(BedrockWorldSelectionList.java:498) ~[main/:?]
at knot/net.grupa_tkd.exotelcraft.client.gui.screens.bedrock.worldselection.BedrockWorldSelectionList$WorldListEntry.mouseClicked(BedrockWorldSelectionList.java:467) ~[main/:?]
at knot/net.minecraft.client.gui.components.events.ContainerEventHandler.mouseClicked(ContainerEventHandler.java:43) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.gui.components.AbstractContainerWidget.mouseClicked(AbstractContainerWidget.java:57) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.gui.components.events.ContainerEventHandler.mouseClicked(ContainerEventHandler.java:43) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.MouseHandler.mixinextras$bridge$mouseClicked$39(MouseHandler.java) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.MouseHandler.wrapOperation$zdk000$fabric-screen-api-v1$invokeMouseClickedEvents(MouseHandler.java:545) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
at knot/net.minecraft.client.MouseHandler.onPress(MouseHandler.java:130) ~[minecraft-merged-87121b9cf0-25w35a-loom.mappings.25w35a.layered+hash.2198-v2.jar:?]
... 14 more
---- Minecraft Crash Report ----
// Shall we play a game?