From 9182acbe7935408592659387e47eb9bf79533f8d Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 26 Apr 2025 18:02:39 +0800 Subject: [PATCH] Update BukkitReflectionUtils.java --- .../bukkit/util/BukkitReflectionUtils.java | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/BukkitReflectionUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/BukkitReflectionUtils.java index 7d8a0cbe3..ff477fd13 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/BukkitReflectionUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/BukkitReflectionUtils.java @@ -7,6 +7,7 @@ import org.bukkit.Bukkit; import java.lang.reflect.Method; import java.util.List; import java.util.Objects; +import java.util.function.Function; public final class BukkitReflectionUtils { private static final String PREFIX_MC = "net.minecraft."; @@ -70,22 +71,40 @@ public final class BukkitReflectionUtils { } public static Class findReobfOrMojmapClass(String reobf, String mojmap) { - if (VersionHelper.isMojmap()) return ReflectionUtils.getClazz(mojmap); - else return ReflectionUtils.getClazz(reobf); + return findReobfOrMojmapClass(reobf, mojmap, BukkitReflectionUtils::assembleMCClass); + } + + public static Class findReobfOrMojmapClass(String reobf, String mojmap, Function classDecorator) { + if (VersionHelper.isMojmap()) return ReflectionUtils.getClazz(classDecorator.apply(reobf)); + else return ReflectionUtils.getClazz(classDecorator.apply(mojmap)); } public static Class findReobfOrMojmapClass(List reobf, String mojmap) { - if (VersionHelper.isMojmap()) return ReflectionUtils.getClazz(mojmap); - else return ReflectionUtils.getClazz(reobf.toArray(new String[0])); + return findReobfOrMojmapClass(reobf, mojmap, BukkitReflectionUtils::assembleMCClass); + } + + public static Class findReobfOrMojmapClass(List reobf, String mojmap, Function classDecorator) { + if (VersionHelper.isMojmap()) return ReflectionUtils.getClazz(classDecorator.apply(mojmap)); + else return ReflectionUtils.getClazz(reobf.stream().map(classDecorator).toList().toArray(new String[0])); } public static Class findReobfOrMojmapClass(String reobf, List mojmap) { - if (VersionHelper.isMojmap()) return ReflectionUtils.getClazz(mojmap.toArray(new String[0])); - else return ReflectionUtils.getClazz(reobf); + return findReobfOrMojmapClass(reobf, mojmap, BukkitReflectionUtils::assembleMCClass); + } + + public static Class findReobfOrMojmapClass(String reobf, List mojmap, Function classDecorator) { + if (VersionHelper.isMojmap()) return ReflectionUtils.getClazz(mojmap.stream().map(classDecorator).toList().toArray(new String[0])); + else return ReflectionUtils.getClazz(classDecorator.apply(reobf)); } public static Class findReobfOrMojmapClass(List reobf, List mojmap) { - if (VersionHelper.isMojmap()) return ReflectionUtils.getClazz(mojmap.toArray(new String[0])); - else return ReflectionUtils.getClazz(reobf.toArray(new String[0])); + return findReobfOrMojmapClass(reobf, mojmap, BukkitReflectionUtils::assembleMCClass); + } + + public static Class findReobfOrMojmapClass(List reobf, List mojmap, Function classDecorator) { + String[] classes = VersionHelper.isMojmap() + ? mojmap.stream().map(classDecorator).toList().toArray(new String[0]) + : reobf.stream().map(classDecorator).toList().toArray(new String[0]); + return ReflectionUtils.getClazz(classes); } }