Mixin Conflict related to ItemStackComponetizationFixMixin
Closed this issue ยท 1 comments
Minecraft Version
1.21.x
Version
1.114.0
Details
There is a conflict that is occurring with an upcoming Cobblemon release (1.6 on mc version 1.21.1) that causes block updates to stop under certain conditions. The easiest way to start having issues is by leaving and rejoining a world. Based on the stack trace my assumption is the Cobblemon and CC mixins by the ItemStackComponetizationFixMixin files (both have the same name) conflict in a weird way.
I am one of the devs for Cobblemon, however mixins are not my strong suit and so it's possible this is an issue on Cobblemon's side. If that is the case please let me know and I will look into it.
Thank you for your time.
Cobblemon jar I used:
https://gitlab.com/cable-mc/cobblemon/-/jobs/8279005115/artifacts/raw/Cobblemon-fabric-1.6.0b8390+1.21.1-HEAD-c75c5e4.jar
Log Snippet:
[21:11:17] [Server thread/ERROR] (Minecraft) Failed to read chunk [17, 1]
java.util.concurrent.CompletionException: java.lang.IllegalArgumentException: Data fixer not registered for: computercraft:turtle_normal in block_entity
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?]
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) ~[?:?]
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:649) ~[?:?]
at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?]
at net.minecraft.util.thread.ProcessorMailbox.pollTask(ProcessorMailbox.java:91) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.util.thread.ProcessorMailbox.pollUntil(ProcessorMailbox.java:146) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.util.thread.ProcessorMailbox.run(ProcessorMailbox.java:102) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:162) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:23) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:864) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:173) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:136) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:846) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:840) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:145) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.server.MinecraftServer.managedBlock(MinecraftServer.java:810) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:815) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:702) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:281) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
Caused by: java.lang.IllegalArgumentException: Data fixer not registered for: computercraft:turtle_normal in block_entity
at com.mojang.datafixers.schemas.Schema.getChoiceType(Schema.java:109) ~[datafixerupper-8.0.16.jar:?]
at dan200.computercraft.shared.util.ComponentizationFixers.fixTurtleBlockEntity(ComponentizationFixers.java:154) ~[computercraft-1.114.0-64b5720b4b825f21.jar:?]
at dan200.computercraft.shared.util.ComponentizationFixers.makeBlockEntityRewrites(ComponentizationFixers.java:150) ~[computercraft-1.114.0-64b5720b4b825f21.jar:?]
at net.minecraft.util.datafix.fixes.ItemStackComponentizationFix.modifyReturnValue$zzd000$computercraft$wrapMakeRule(ItemStackComponentizationFix.java:780) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.util.datafix.fixes.ItemStackComponentizationFix.makeRule(ItemStackComponentizationFix.java:678) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at com.mojang.datafixers.DataFix.getRule(DataFix.java:119) ~[datafixerupper-8.0.16.jar:?]
at com.mojang.datafixers.DataFixerUpper.lambda$getRule$1(DataFixerUpper.java:124) ~[datafixerupper-8.0.16.jar:?]
at it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap.computeIfAbsent(Long2ObjectOpenHashMap.java:454) ~[fastutil-8.5.12.jar:?]
at it.unimi.dsi.fastutil.longs.Long2ObjectMaps$SynchronizedMap.computeIfAbsent(Long2ObjectMaps.java:466) ~[fastutil-8.5.12.jar:?]
at com.mojang.datafixers.DataFixerUpper.getRule(DataFixerUpper.java:116) ~[datafixerupper-8.0.16.jar:?]
at com.mojang.datafixers.DataFixerUpper.update(DataFixerUpper.java:78) ~[datafixerupper-8.0.16.jar:?]
at net.minecraft.util.datafix.DataFixTypes.update(DataFixTypes.java:75) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.util.datafix.DataFixTypes.update(DataFixTypes.java:83) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.world.level.chunk.storage.EntityStorage.modifyExpressionValue$zcb000$cobblemon$doEntityFix(EntityStorage.java:536) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at net.minecraft.world.level.chunk.storage.EntityStorage.method_31731(EntityStorage.java:73) ~[minecraft-merged-7a2f2bea21-1.21.1-loom.mappings.1_21_1.layered+hash.652182843-v2.jar:?]
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646) ~[?:?]
... 18 more
Cobblemon declares its own set of datafixer schemas and runs its own set of datafixer transformers. This means any mod that expects to be using a vanilla schema (which I think is a reasonable assumption) will not work.
I understand the motivation of what cobblemon is doing, but this feels like its to cause more pain than its worth. Separate mod datafixer is really something which needs support at the mod-loader level.