From ddffe93f1a6ee4d3c5423a83324d62cbc7551d76 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Fri, 29 Mar 2024 10:46:12 -0400 Subject: [PATCH] Stop clearing fields/methods on mixin classes This seems to break generating the needed bridge access$xxx methods for inner classes in mixins. Example mixin that breaks: https://github.com/Layers-of-Railways/Railway/blob/d5b3c910aceb7dadefa832aa85d79c55d49012e0/common/src/main/java/com/railwayteam/railways/mixin/client/MixinStationScreen.java --- .../org/embeddedt/modernfix/util/ClassInfoManager.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/util/ClassInfoManager.java b/common/src/main/java/org/embeddedt/modernfix/util/ClassInfoManager.java index 1daa97a8..a633d954 100644 --- a/common/src/main/java/org/embeddedt/modernfix/util/ClassInfoManager.java +++ b/common/src/main/java/org/embeddedt/modernfix/util/ClassInfoManager.java @@ -12,7 +12,6 @@ import org.spongepowered.asm.service.MixinServiceAbstract; import java.lang.reflect.Field; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Map; @@ -54,15 +53,13 @@ public class ClassInfoManager { private static void doClear() { Map classInfoCache; - Field mixinField, stateField, classNodeField, methodsField, fieldsField; + Field mixinField, stateField, classNodeField; Class stateClz; try { disableLoggers(); Field field = accessible(ClassInfo.class.getDeclaredField("cache")); classInfoCache = (Map) field.get(null); mixinField = accessible(ClassInfo.class.getDeclaredField("mixin")); - methodsField = accessible(ClassInfo.class.getDeclaredField("methods")); - fieldsField = accessible(ClassInfo.class.getDeclaredField("fields")); stateClz = Class.forName("org.spongepowered.asm.mixin.transformer.MixinInfo$State"); stateField = accessible(Class.forName("org.spongepowered.asm.mixin.transformer.MixinInfo").getDeclaredField("state")); classNodeField = accessible(stateClz.getDeclaredField("classNode")); @@ -87,9 +84,6 @@ public class ClassInfoManager { if (state != null) classNodeField.set(state, emptyNode); } - // clear fields, methods - ((Collection)methodsField.get(mixinClz)).clear(); - ((Collection)fieldsField.get(mixinClz)).clear(); } catch (ReflectiveOperationException | RuntimeException e) { e.printStackTrace(); }