Skip to content

Conversation

Viola-Siemens
Copy link

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

Add mixinextras to compile & runtime
@Viola-Siemens Viola-Siemens changed the title Fix: org.spongepowered.asm.mixin.injection.throwables.InjectionError: LVT in net/minecraft/world/entity/npc/VillagerTrades$EmeraldsForVillagerTypeItem::m_213663_(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/util/RandomSource;)Lnet/minecraft/world/item/trading/MerchantOffer; has incompatible changes at opcode 34 in callback fabric-object-builder-v1.mixins.json:TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin from mod fabric_object_builder_api_v1->@Inject::failOnNullItem(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/util/RandomSource;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;Lnet/minecraft/world/item/ItemStack;)V. Fix: org.spongepowered.asm.mixin.injection.throwables.InjectionError: LVT in net/minecraft/world/entity/npc/VillagerTrades$EmeraldsForVillagerTypeItem::m_213663_ Apr 19, 2025
@Viola-Siemens
Copy link
Author

Viola-Siemens commented Apr 19, 2025

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

@pietro-lopes
Copy link

Second this

@Tidy-Bear
Copy link

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) ~[?:?]

@pietro-lopes
Copy link

pietro-lopes commented May 30, 2025

@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

@Viola-Siemens
Copy link
Author

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

@Su5eD Su5eD changed the title Fix: org.spongepowered.asm.mixin.injection.throwables.InjectionError: LVT in net/minecraft/world/entity/npc/VillagerTrades$EmeraldsForVillagerTypeItem::m_213663_ Fix for #198 May 31, 2025
@Su5eD
Copy link
Member

Su5eD commented May 31, 2025

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

@pietro-lopes
Copy link

Cancellable is valid, but you might need newer mixin extras

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

@Viola-Siemens
Copy link
Author

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

@Viola-Siemens Viola-Siemens changed the title Fix for #198 Fix for #196 Jun 1, 2025
@Viola-Siemens
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants