Skip to content

Commit

Permalink
Stop clearing fields/methods on mixin classes
Browse files Browse the repository at this point in the history
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
  • Loading branch information
embeddedt committed Mar 29, 2024
1 parent 66abdcd commit ddffe93
Showing 1 changed file with 1 addition and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -54,15 +53,13 @@ private static void disableLoggers() throws ReflectiveOperationException {

private static void doClear() {
Map<String, ClassInfo> classInfoCache;
Field mixinField, stateField, classNodeField, methodsField, fieldsField;
Field mixinField, stateField, classNodeField;
Class<?> stateClz;
try {
disableLoggers();
Field field = accessible(ClassInfo.class.getDeclaredField("cache"));
classInfoCache = (Map<String, ClassInfo>) 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"));
Expand All @@ -87,9 +84,6 @@ private static void doClear() {
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();
}
Expand Down

0 comments on commit ddffe93

Please sign in to comment.