Carpet

Carpet

2M Downloads

Incompatibility between FabricCarpet 1.4.25 and Carpet-TIS?

Heitzenberg opened this issue ยท 12 comments

commented

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

commented

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).

commented

The issue may be caused on CarpetTIS side, can you please do the following?

  1. Post the full game logs and/or crash report here (Pastebin or Gist).
  2. Try posting a similar issue at TISUnion/Carpet-TIS-Addition if applicable.
commented

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..?)

commented

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.

commented
commented

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

commented

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

commented

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

commented

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.

commented

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

commented

Fixed on TIS side.

commented

@Heitzenberg @gnembon Is it okay if you close this now that the issue is fixed?