Incompatibility between FabricCarpet 1.4.25 and Carpet-TIS?
Heitzenberg opened this issue ยท 12 comments
I get the following error while starting up the server:
[17:52:52] [main/WARN]: @ModifyConstant conflict. Skipping carpet.mixins.json:StructureBlockBlockEntity_limitsMixin->@ModifyConstant::positiveLimit(I)I with priority 1000, already redirected by carpet-tis-addition.mixins.json:rule.structureBlockLimit.StructureBlockBlockEntityMixin->@ModifyConstant::structureBlockLimitPositive(I)I with priority 1000
[17:52:52] [main/WARN]: @ModifyConstant conflict. Skipping carpet.mixins.json:StructureBlockBlockEntity_limitsMixin->@ModifyConstant::positiveLimit(I)I with priority 1000, already redirected by carpet-tis-addition.mixins.json:rule.structureBlockLimit.StructureBlockBlockEntityMixin->@ModifyConstant::structureBlockLimitPositive(I)I with priority 1000
[17:52:52] [main/WARN]: @ModifyConstant conflict. Skipping carpet.mixins.json:StructureBlockBlockEntity_limitsMixin->@ModifyConstant::positiveLimit(I)I with priority 1000, already redirected by carpet-tis-addition.mixins.json:rule.structureBlockLimit.StructureBlockBlockEntityMixin->@ModifyConstant::structureBlockLimitPositive(I)I with priority 1000
[17:52:52] [main/WARN]: @ModifyConstant conflict. Skipping carpet.mixins.json:StructureBlockBlockEntity_limitsMixin->@ModifyConstant::positiveLimit(I)I with priority 1000, already redirected by carpet-tis-addition.mixins.json:rule.structureBlockLimit.StructureBlockBlockEntityMixin->@ModifyConstant::structureBlockLimitPositive(I)I with priority 1000
[17:52:52] [main/WARN]: @ModifyConstant conflict. Skipping carpet.mixins.json:StructureBlockBlockEntity_limitsMixin->@ModifyConstant::positiveLimit(I)I with priority 1000, already redirected by carpet-tis-addition.mixins.json:rule.structureBlockLimit.StructureBlockBlockEntityMixin->@ModifyConstant::structureBlockLimitPositive(I)I with priority 1000
[17:52:52] [main/WARN]: @ModifyConstant conflict. Skipping carpet.mixins.json:StructureBlockBlockEntity_limitsMixin->@ModifyConstant::positiveLimit(I)I with priority 1000, already redirected by carpet-tis-addition.mixins.json:rule.structureBlockLimit.StructureBlockBlockEntityMixin->@ModifyConstant::structureBlockLimitPositive(I)I with priority 1000
[17:52:52] [main/WARN]: @ModifyConstant conflict. Skipping carpet.mixins.json:StructureBlockBlockEntity_limitsMixin->@ModifyConstant::negativeLimit(I)I with priority 1000, already redirected by carpet-tis-addition.mixins.json:rule.structureBlockLimit.StructureBlockBlockEntityMixin->@ModifyConstant::structureBlockLimitNegative(I)I with priority 1000
[17:52:52] [main/WARN]: @ModifyConstant conflict. Skipping carpet.mixins.json:StructureBlockBlockEntity_limitsMixin->@ModifyConstant::negativeLimit(I)I with priority 1000, already redirected by carpet-tis-addition.mixins.json:rule.structureBlockLimit.StructureBlockBlockEntityMixin->@ModifyConstant::structureBlockLimitNegative(I)I with priority 1000
[17:52:52] [main/WARN]: @ModifyConstant conflict. Skipping carpet.mixins.json:StructureBlockBlockEntity_limitsMixin->@ModifyConstant::negativeLimit(I)I with priority 1000, already redirected by carpet-tis-addition.mixins.json:rule.structureBlockLimit.StructureBlockBlockEntityMixin->@ModifyConstant::structureBlockLimitNegative(I)I with priority 1000
Exception in thread "main" java.lang.RuntimeException: Failed to setup Fabric server environment!
at net.fabricmc.loader.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:52)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: An exception occurred when launching the server!
at net.fabricmc.loader.launch.server.FabricServerLauncher.setup(FabricServerLauncher.java:108)
at net.fabricmc.loader.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:50)
Caused by: java.lang.RuntimeException: An exception occurred when launching the server!
at net.fabricmc.loader.launch.server.FabricServerLauncher.launch(FabricServerLauncher.java:64)
at net.fabricmc.loader.launch.server.FabricServerLauncher.setup(FabricServerLauncher.java:106)
... 1 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.fabricmc.loader.launch.server.FabricServerLauncher.launch(FabricServerLauncher.java:62)
... 2 more
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:228)
at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:139)
at net.fabricmc.loader.launch.knot.KnotServer.main(KnotServer.java:27)
... 7 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:226)
... 9 more
Caused by: org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:208)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:178)
at org.spongepowered.asm.mixin.transformer.FabricMixinTransformerProxy.transformClassBytes(FabricMixinTransformerProxy.java:23)
at net.fabricmc.loader.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:157)
at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:150)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at net.minecraft.class_2246.(class_2246.java:835)
at net.minecraft.class_3523.(class_3523.java:13)
at net.minecraft.class_5471.(class_5471.java:11)
at net.minecraft.class_5458.method_30573(class_5458.java:44)
at net.minecraft.class_5458.method_30566(class_5458.java:75)
at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
at net.minecraft.class_5458.(class_5458.java:74)
at net.minecraft.class_2378.(class_2378.java:237)
at net.minecraft.class_2966.method_12851(class_2966.java:42)
at net.minecraft.server.Main.main(Main.java:87)
... 14 more
Caused by: org.spongepowered.asm.mixin.injection.throwables.InjectionError: Critical injection failure: Constant modifier method positiveLimit(I)I in carpet.mixins.json:StructureBlockBlockEntity_limitsMixin failed injection check, (0/1) succeeded. Scanned 1 target(s). Using refmap fabric-carpet-refmap.json
at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.postInject(InjectionInfo.java:408)
at org.spongepowered.asm.mixin.transformer.MixinTargetContext.applyInjections(MixinTargetContext.java:1291)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyInjections(MixinApplicatorStandard.java:1042)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:395)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:320)
at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:345)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:569)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:351)
... 30 more
Luckily the rule seems to have the same name on both, so if one is forced to remove it, there should be a seamless transition (supposing they do the same).
The issue may be caused on CarpetTIS side, can you please do the following?
- Post the full game logs and/or crash report here (Pastebin or Gist).
- Try posting a similar issue at TISUnion/Carpet-TIS-Addition if applicable.
I posted about this on the Carpet-TIS github. Unfortunately, there's no crash report, and the only line I can find in the logs is this: [17:52:52] [main/WARN]: @ModifyConstant conflict. Skipping carpet.mixins.json:StructureBlockBlockEntity_limitsMixin->@ModifyConstant::negativeLimit(I)I with priority 1000, already redirected by carpet-tis-addition.mixins.json:rule.structureBlockLimit.StructureBlockBlockEntityMixin->@ModifyConstant::structureBlockLimitNegative(I)I with priority 1000
(The text in my report above was shown in the console, but not written to a file..?)
Oh, it seems they already had a rule that did basically the same as the new one in 1.4.25, so they conflict with each other.
Issue on other end: TISUnion/Carpet-TIS-Addition#14
there should be a seamless transition
Sadly it isn't i think, since the implemetation of fabric carpet use extra int field in the structure packet to store the override value, while tis addon simplely override the vanilla byte fields in the packet. the protocol between these 2 mods are in-compatible
I would suggest fabric carpet to do also override the 6 byte fields in the vanilla structure packet so the protocol will be backwards compatibility for tis addon, or i will do it myself
Despite of the rule conflict, I'm afraid if the size change of the structure packet might somehow cause further in-compatibility
Other mods or other external tools might rely on the vanilla packet size or vanilla structure packet structure. The injection for extra int fields writing in UpdateStructureBlockC2SPacketMixin
is always working, so the packet is always notvanilla. It might break things
Back to the mod conflict thing, I will remove the structureBlockLimit
rule in Carpet TIS Addition side, but the further incompatibilities as I mentioned above still need to be solved
Despite of the rule conflict, I'm afraid if the size change of the structure packet might somehow cause further in-compatibility
Other mods or other external tools might rely on the vanilla packet size or vanilla structure packet structure. The injection for extra int fields writing in
UpdateStructureBlockC2SPacketMixin
is always working, so the packet is always notvanilla. It might break things
Aargh just found my comment about that in the PR was ignored, why didn't I check after! (#664 (comment))
Although I don't think it's really likely to break future versions since it's at tail
anyway it would probably break with an older server sending the packet with extra data to a newer client that expects a different payload, and yeah mods would just break.
Despite of the rule conflict, I'm afraid if the size change of the structure packet might somehow cause further in-compatibility
Other mods or other external tools might rely on the vanilla packet size or vanilla structure packet structure. The injection for extra int fields writing in
UpdateStructureBlockC2SPacketMixin
is always working, so the packet is always notvanilla. It might break things
No needs to test other mod compatibility, it is already incompatible with vanilla server lol
See #712
@Heitzenberg @gnembon Is it okay if you close this now that the issue is fixed?