ForgifiedFabricAPI icon indicating copy to clipboard operation
ForgifiedFabricAPI copied to clipboard

Fix for #196

Open Viola-Siemens opened this issue 9 months ago • 9 comments

When using forge >= 47.3.26, the local capturing strategy always fails and crash the game. Inspired by Fabric API, I proposed a strategy using ModifyExpressionValue to ensure the mixin is always working.

latest.log

Related issue: #196

Viola-Siemens avatar Apr 19 '25 17:04 Viola-Siemens

The crash is never reproducible after using ~~this mod file~~this mod file.

Viola-Siemens avatar Apr 19 '25 17:04 Viola-Siemens

Second this

pietro-lopes avatar May 16 '25 03:05 pietro-lopes

The fix crashed the game when joining the game.

Mods installed:

  • Forge 47.4.0
  • Connector-1.0.0-beta.46+1.20.1.jar
  • ConnectorExtras-1.11.2+1.20.1.jar
  • fabric-api-0.92.2+1.11.12+1.20.1-hf.jar (your fix)
[2025-05-30 23:59:51.089] [Server thread/FATAL] [mixin/]: Mixin apply for mod fabric_object_builder_api_v1 failed fabric-object-builder-v1.mixins.json:TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin from mod fabric_object_builder_api_v1 -> net.minecraft.world.entity.npc.VillagerTrades$EmeraldsForVillagerTypeItem: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException @ModifyExpressionValue expression value modifier method net/minecraft/world/entity/npc/VillagerTrades$EmeraldsForVillagerTypeItem::failOnNullItem from fabric-object-builder-v1.mixins.json:TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin from mod fabric_object_builder_api_v1 has an invalid signature. Found unexpected argument type org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable at index 1, expected net.minecraft.world.entity.Entity. Handler signature: (Ljava/lang/Object;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;)Ljava/lang/Object; Expected signature: (Ljava/lang/Object;Lnet/minecraft/world/entity/Entity;Lnet/minecraft/util/RandomSource;)Ljava/lang/Object; [INJECT Applicator Phase -> fabric-object-builder-v1.mixins.json:TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin from mod fabric_object_builder_api_v1 -> Apply Injections ->  -> Inject -> fabric-object-builder-v1.mixins.json:TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin from mod fabric_object_builder_api_v1->@ModifyExpressionValue::failOnNullItem(Ljava/lang/Object;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;)Ljava/lang/Object;]
org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: @ModifyExpressionValue expression value modifier method net/minecraft/world/entity/npc/VillagerTrades$EmeraldsForVillagerTypeItem::failOnNullItem from fabric-object-builder-v1.mixins.json:TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin from mod fabric_object_builder_api_v1 has an invalid signature. Found unexpected argument type org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable at index 1, expected net.minecraft.world.entity.Entity. Handler signature: (Ljava/lang/Object;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;)Ljava/lang/Object; Expected signature: (Ljava/lang/Object;Lnet/minecraft/world/entity/Entity;Lnet/minecraft/util/RandomSource;)Ljava/lang/Object; [INJECT Applicator Phase -> fabric-object-builder-v1.mixins.json:TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin from mod fabric_object_builder_api_v1 -> Apply Injections ->  -> Inject -> fabric-object-builder-v1.mixins.json:TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin from mod fabric_object_builder_api_v1->@ModifyExpressionValue::failOnNullItem(Ljava/lang/Object;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;)Ljava/lang/Object;]
	at org.spongepowered.asm.mixin.injection.code.Injector.validateParams(Injector.java:598) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at com.llamalad7.mixinextras.injector.ModifyExpressionValueInjector.invokeHandler(ModifyExpressionValueInjector.java:72) ~[MixinExtras-0.3.5.jar%23257!/:?]
	at com.llamalad7.mixinextras.injector.ModifyExpressionValueInjector.injectValueModifier(ModifyExpressionValueInjector.java:63) ~[MixinExtras-0.3.5.jar%23257!/:?]
	at com.llamalad7.mixinextras.injector.ModifyExpressionValueInjector.inject(ModifyExpressionValueInjector.java:42) ~[MixinExtras-0.3.5.jar%23257!/:?]
	at org.spongepowered.asm.mixin.injection.code.Injector.inject(Injector.java:276) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.inject(InjectionInfo.java:445) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at org.spongepowered.asm.mixin.transformer.MixinTargetContext.applyInjections(MixinTargetContext.java:1377) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyInjections(MixinApplicatorStandard.java:1062) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:402) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:327) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:421) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:403) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:250) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at org.spongepowered.asm.service.modlauncher.MixinTransformationHandler.processClass(MixinTransformationHandler.java:131) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at org.spongepowered.asm.launch.MixinLaunchPluginLegacy.processClass(MixinLaunchPluginLegacy.java:131) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
	at cpw.mods.modlauncher.serviceapi.ILaunchPluginService.processClassWithFlags(ILaunchPluginService.java:156) ~[modlauncher-10.0.9.jar:10.0.9+10.0.9+main.dcd20f30]
	at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88) ~[modlauncher-10.0.9.jar:?]
	at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120) ~[modlauncher-10.0.9.jar:?]
	at cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50) ~[modlauncher-10.0.9.jar:?]
	at cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:113) ~[securejarhandler-2.1.10.jar:?]
	at cpw.mods.cl.ModuleClassLoader.lambda$findClass$15(ModuleClassLoader.java:219) ~[securejarhandler-2.1.10.jar:?]
	at cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:229) ~[securejarhandler-2.1.10.jar:?]
	at cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:219) ~[securejarhandler-2.1.10.jar:?]
	at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:135) ~[securejarhandler-2.1.10.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
	at net.minecraft.world.entity.npc.VillagerTrades.m_35632_(VillagerTrades.java:65) ~[client-1.20.1-20230612.114412-srg.jar%23166!/:?]
	at net.minecraft.Util.m_137469_(Util.java:359) ~[client-1.20.1-20230612.114412-srg.jar%23166!/:?]
	at net.minecraft.world.entity.npc.VillagerTrades.<clinit>(VillagerTrades.java:63) ~[client-1.20.1-20230612.114412-srg.jar%23166!/:?]
	at net.minecraftforge.common.VillagerTradingManager.<clinit>(VillagerTradingManager.java:32) ~[forge-1.20.1-47.4.0-universal.jar%23171!/:?]
	at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:260) ~[eventbus-6.0.5.jar%2387!/:?]
	at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:252) ~[eventbus-6.0.5.jar%2387!/:?]
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:315) ~[eventbus-6.0.5.jar%2387!/:?]
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:296) ~[eventbus-6.0.5.jar%2387!/:?]
	at net.minecraftforge.server.ServerLifecycleHooks.handleServerAboutToStart(ServerLifecycleHooks.java:98) ~[forge-1.20.1-47.4.0-universal.jar%23171!/:?]
	at net.minecraft.client.server.IntegratedServer.m_7038_(IntegratedServer.java:62) ~[client-1.20.1-20230612.114412-srg.jar%23166!/:?]
	at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:634) ~[client-1.20.1-20230612.114412-srg.jar%23166!/:?]
	at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[client-1.20.1-20230612.114412-srg.jar%23166!/:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]

Tidy-Bear avatar May 30 '25 16:05 Tidy-Bear

@Tidy-Bear at runtime you might need mixin-extras 0.4.1, I think @Viola-Siemens didn't jarjar it

yeah, you are using MixinExtras-0.3.5.jar

pietro-lopes avatar May 30 '25 17:05 pietro-lopes

im not quite sure how to jarinjar mixinextras 0.4.1. i tried the official method in their repo but end up making the workflow fail

Viola-Siemens avatar May 31 '25 02:05 Viola-Siemens

Dunno how Fabric managed that signature working but I'm pretty sure MEV is supposed to be typed as described here:

https://github.com/LlamaLad7/MixinExtras/wiki/ModifyExpressionValue

Su5eD avatar May 31 '25 18:05 Su5eD

Cancellable is valid, but you might need newer mixin extras

https://github.com/LlamaLad7/MixinExtras/wiki/Cancellable#example

pietro-lopes avatar May 31 '25 21:05 pietro-lopes

Yes and now newer mixinextras is embedded in my newer build.

Viola-Siemens avatar Jun 01 '25 02:06 Viola-Siemens

Newer jar: https://github.com/Viola-Siemens/ForgifiedFabricAPI-forked/releases/download/0.92.2%2B1.11.12%2B1.20.1-fix2/fabric-api-0.92.2+1.11.12+1.20.1.jar

Mixinextras 0.4.1 is embedded into this file.

Viola-Siemens avatar Jun 01 '25 03:06 Viola-Siemens