diff --git a/src/main/java/zone/rong/mixinbooter/mixin/LoadControllerMixin.java b/src/main/java/zone/rong/mixinbooter/mixin/LoadControllerMixin.java index 02d7a2a..91b4058 100644 --- a/src/main/java/zone/rong/mixinbooter/mixin/LoadControllerMixin.java +++ b/src/main/java/zone/rong/mixinbooter/mixin/LoadControllerMixin.java @@ -12,10 +12,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.transformer.IMixinTransformer; import org.spongepowered.asm.mixin.transformer.Proxy; +import org.spongepowered.asm.service.MixinService; +import org.spongepowered.asm.service.mojang.MixinServiceLaunchWrapper; import zone.rong.mixinbooter.*; import zone.rong.mixinbooter.decorator.FMLContextQuery; import zone.rong.mixinbooter.fix.MixinFixer; +import java.lang.reflect.Field; import java.lang.reflect.Method; /** @@ -82,6 +85,11 @@ private void beforeConstructing(LoaderState state, Object[] eventData, CallbackI Mixins.addConfiguration(mixinConfig); } + // Rebuild delegated transformers + Field delegatedTransformersField = MixinServiceLaunchWrapper.class.getDeclaredField("delegatedTransformers"); + delegatedTransformersField.setAccessible(true); + delegatedTransformersField.set(MixinService.getService(), null); + IMixinProcessor processor = ((IMixinTransformer) Proxy.transformer).getProcessor(); Method selectMethod = processor.getClass().getDeclaredMethod("select", MixinEnvironment.class); selectMethod.setAccessible(true);