CC: Tweaked

CC: Tweaked

57M Downloads

Mixin Conflict related to ItemStackComponetizationFixMixin

Closed this issue ยท 1 comments

commented

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 Mixin:
https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/java/com/cobblemon/mod/common/mixin/ItemStackComponentizationFixMixin.java?ref_type=heads

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
commented

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.