diff --git a/src/main/java/com/falsepattern/falsetweaks/asm/CoreLoadingPlugin.java b/src/main/java/com/falsepattern/falsetweaks/asm/CoreLoadingPlugin.java index 45a0bcf..83c5b35 100644 --- a/src/main/java/com/falsepattern/falsetweaks/asm/CoreLoadingPlugin.java +++ b/src/main/java/com/falsepattern/falsetweaks/asm/CoreLoadingPlugin.java @@ -37,8 +37,7 @@ import org.spongepowered.asm.launch.GlobalProperties; import org.spongepowered.asm.service.mojang.MixinServiceLaunchWrapper; -import net.minecraft.launchwrapper.Launch; -import net.minecraft.launchwrapper.LaunchClassLoader; +import net.minecraft.launchwrapper.IClassTransformer; import java.util.List; import java.util.Map; @@ -77,12 +76,14 @@ private static void pleaseDontBreakMyThreadedRendering() { } catch (Throwable ignored) {} } + static IClassTransformer FIELD_HACK_TF; + @Override public String[] getASMTransformerClass() { - val mixinTweakClasses = GlobalProperties.>get(MixinServiceLaunchWrapper.BLACKBOARD_KEY_TWEAKCLASSES); if (mixinTweakClasses != null) { - mixinTweakClasses.add(Tags.ROOT_PKG + ".asm.MixinCompatHackTweaker"); + FIELD_HACK_TF = new FalseTweaksFieldHackTransformer(); + mixinTweakClasses.add(MixinCompatHackTweaker.class.getName()); } return new String[]{Tags.ROOT_PKG + ".asm.FalseTweaksTransformer"}; } diff --git a/src/main/java/com/falsepattern/falsetweaks/asm/MixinCompatHackTweaker.java b/src/main/java/com/falsepattern/falsetweaks/asm/MixinCompatHackTweaker.java index 1cc841c..6393bd6 100644 --- a/src/main/java/com/falsepattern/falsetweaks/asm/MixinCompatHackTweaker.java +++ b/src/main/java/com/falsepattern/falsetweaks/asm/MixinCompatHackTweaker.java @@ -23,8 +23,10 @@ package com.falsepattern.falsetweaks.asm; -import com.falsepattern.falsetweaks.Tags; +import lombok.SneakyThrows; +import lombok.val; +import net.minecraft.launchwrapper.IClassTransformer; import net.minecraft.launchwrapper.ITweaker; import net.minecraft.launchwrapper.Launch; import net.minecraft.launchwrapper.LaunchClassLoader; @@ -49,8 +51,12 @@ public String getLaunchTarget() { } @Override + @SneakyThrows public String[] getLaunchArguments() { - Launch.classLoader.registerTransformer(Tags.ROOT_PKG + ".asm.FalseTweaksFieldHackTransformer"); + val f = LaunchClassLoader.class.getDeclaredField("transformers"); + f.setAccessible(true); + val transformers = (List) f.get(Launch.classLoader); + transformers.add(CoreLoadingPlugin.FIELD_HACK_TF); return new String[0]; } }