From 5c58877273799b2e18cd854c082a7a4623210345 Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Sun, 10 Jan 2021 16:13:23 +0800 Subject: [PATCH] Fix remapper crash on obfuscated plugins (#108) --- .../util/remapper/ClassLoaderRemapper.java | 4 ++-- .../mod/util/remapper/LenientJarRemapper.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/LenientJarRemapper.java diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/ClassLoaderRemapper.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/ClassLoaderRemapper.java index 19bdb9a1..089fb114 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/ClassLoaderRemapper.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/ClassLoaderRemapper.java @@ -34,7 +34,7 @@ import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; -public class ClassLoaderRemapper extends JarRemapper { +public class ClassLoaderRemapper extends LenientJarRemapper { private static final Logger LOGGER = LogManager.getLogger("Arclight"); private static final String PREFIX = "net/minecraft/"; @@ -51,7 +51,7 @@ public class ClassLoaderRemapper extends JarRemapper { this.jarMapping.setInheritanceMap(ArclightRemapper.INSTANCE.inheritanceMap); this.jarMapping.setFallbackInheritanceProvider(GlobalClassRepo.inheritanceProvider()); this.toBukkitMapping.setFallbackInheritanceProvider(GlobalClassRepo.inheritanceProvider()); - this.toBukkitRemapper = new JarRemapper(this.toBukkitMapping); + this.toBukkitRemapper = new LenientJarRemapper(this.toBukkitMapping); this.generatedHandler = generateReflectionHandler(); GlobalClassRepo.INSTANCE.addRepo(new ClassLoaderRepo(this.classLoader)); } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/LenientJarRemapper.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/LenientJarRemapper.java new file mode 100644 index 00000000..82c2f7f8 --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/LenientJarRemapper.java @@ -0,0 +1,20 @@ +package io.izzel.arclight.common.mod.util.remapper; + +import net.md_5.specialsource.JarMapping; +import net.md_5.specialsource.JarRemapper; + +public class LenientJarRemapper extends JarRemapper { + + public LenientJarRemapper(JarMapping jarMapping) { + super(jarMapping); + } + + @Override + public String mapSignature(String signature, boolean typeSignature) { + try { + return super.mapSignature(signature, typeSignature); + } catch (Exception e) { + return signature; + } + } +}