@@ -17,20 +17,46 @@ public static void add() {
1717 ((List <String >) Launch .blackboard .get ("TweakClasses" )).add (ModPatcherTweaker2 .class .getName ());
1818 }
1919
20+ @ SuppressWarnings ("unchecked" )
2021 private static void inject () {
2122 LaunchClassLoaderUtil .addTransformer (ModPatcherTransformer .getInstance ());
23+
24+ // Mixin 0.7
2225 try {
2326 Class <?> mixinEnvironmentClass = Class .forName ("org.spongepowered.asm.mixin.MixinEnvironment" , false , ModPatcherTweaker .class .getClassLoader ());
24- Field f = mixinEnvironmentClass .getDeclaredField ("excludeTransformers" );
25- f .setAccessible (true );
26- @ SuppressWarnings ("unchecked" )
27- Set <String > vals = (Set <String >) f .get (null );
28- vals .add (ModPatcherTransformer .class .getName ());
29- } catch (ClassNotFoundException ignored ) {
27+
28+ // org.spongepowered.asm.mixin.MixinEnvironment.excludeTransformers
29+ Field excludeTransformersField = mixinEnvironmentClass .getDeclaredField ("excludeTransformers" );
30+ excludeTransformersField .setAccessible (true );
31+
32+ Set <String > values = (Set <String >) excludeTransformersField .get (null );
33+ values .add (ModPatcherTransformer .class .getName ());
34+ } catch (ClassNotFoundException ex ) {
35+ // TODO Silence this once confirmed working?
36+ PatcherLog .trace ("Failed to find mixin environment, normal for non-spongepowered" , ex );
37+ return ;
38+ } catch (NoSuchFieldException ex ) {
39+ // no-op
40+ } catch (Exception ex ) {
41+ PatcherLog .warn ("Failed to add mixin transformer exclusion for our transformer" , ex );
42+ return ;
43+ }
44+
45+ // Mixin 0.8
46+ try {
47+ Class <?> mixinServiceLaunchWrapperClass = Class .forName ("org.spongepowered.asm.service.mojang.MixinServiceLaunchWrapper" , false , ModPatcherTweaker .class .getClassLoader ());
48+
49+ // org.spongepowered.asm.service.mojang.MixinServiceLaunchWrapper.excludeTransformers
50+ Field excludeTransformersField = mixinServiceLaunchWrapperClass .getDeclaredField ("excludeTransformers" );
51+ excludeTransformersField .setAccessible (true );
52+
53+ Set <String > values = (Set <String >) excludeTransformersField .get (null );
54+ values .add (ModPatcherTransformer .class .getName ());
55+ } catch (ClassNotFoundException ex ) {
3056 // TODO Silence this once confirmed working?
31- PatcherLog .trace ("Failed to find mixin environment, normal for non-spongepowered" , ignored );
32- } catch (NoSuchFieldException | IllegalAccessException e ) {
33- PatcherLog .warn ("Failed to add mixin transformer exclusion for our transformer" , e );
57+ PatcherLog .trace ("Failed to find mixin environment, normal for non-spongepowered" , ex );
58+ } catch (Exception ex ) {
59+ PatcherLog .warn ("Failed to add mixin transformer exclusion for our transformer" , ex );
3460 }
3561 }
3662
0 commit comments