From c24aff8a53e97fe929adcfbc73fc9236d9dcc9bb Mon Sep 17 00:00:00 2001 From: Jonathing Date: Mon, 23 Dec 2024 17:44:43 -0500 Subject: [PATCH] Skip Vanilla classes for the `CapabilityTokenSubclass` transformer (#10223) Skip Vanilla classes for the CapabilityTokenSubclass transformer Cherry-pick a few optimizations from HEAD Co-authored-by: Paint_Ninja --- .../common/asm/CapabilityTokenSubclass.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/fmlloader/src/main/java/net/minecraftforge/fml/common/asm/CapabilityTokenSubclass.java b/fmlloader/src/main/java/net/minecraftforge/fml/common/asm/CapabilityTokenSubclass.java index 7ed6bfbe5d..59906a5e83 100644 --- a/fmlloader/src/main/java/net/minecraftforge/fml/common/asm/CapabilityTokenSubclass.java +++ b/fmlloader/src/main/java/net/minecraftforge/fml/common/asm/CapabilityTokenSubclass.java @@ -36,9 +36,9 @@ import cpw.mods.modlauncher.serviceapi.ILaunchPluginService; */ public class CapabilityTokenSubclass implements ILaunchPluginService { - private final String FUNC_NAME = "getType"; - private final String FUNC_DESC = "()Ljava/lang/String;"; - private final String CAP_INJECT = "net/minecraftforge/common/capabilities/CapabilityToken"; //Don't directly reference this to prevent class loading. + private static final String FUNC_NAME = "getType"; + private static final String FUNC_DESC = "()Ljava/lang/String;"; + private static final String CAP_INJECT = "net/minecraftforge/common/capabilities/CapabilityToken"; //Don't directly reference this to prevent class loading. @Override public String name() { @@ -51,7 +51,14 @@ public class CapabilityTokenSubclass implements ILaunchPluginService { @Override public EnumSet handlesClass(Type classType, boolean isEmpty) { - return isEmpty ? NAY : YAY; + if (isEmpty) + return NAY; + + String internalName = classType.getInternalName(); + if (internalName.startsWith("net/minecraft/") || internalName.startsWith("com/mojang/")) + return NAY; + + return YAY; } @Override @@ -75,7 +82,7 @@ public class CapabilityTokenSubclass implements ILaunchPluginService { SignatureReader reader = new SignatureReader(classNode.signature); // Having a node version of this would probably be useful. reader.accept(new SignatureVisitor(Opcodes.ASM9) { - Deque stack = new ArrayDeque<>(); + final Deque stack = new ArrayDeque<>(); @Override public void visitClassType(final String name) @@ -113,7 +120,7 @@ public class CapabilityTokenSubclass implements ILaunchPluginService { } } - private static class Holder { + private static final class Holder { String value; }