From 216b061172a9d5846741e3f2aa2ae0693993ba6f Mon Sep 17 00:00:00 2001 From: wizjany Date: Sun, 6 Mar 2022 08:59:44 -0500 Subject: [PATCH] Fix class source validator on spigot. --- .../worldguard/bukkit/util/ClassSourceValidator.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/ClassSourceValidator.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/ClassSourceValidator.java index a9454c47..e0d32255 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/ClassSourceValidator.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/ClassSourceValidator.java @@ -47,14 +47,17 @@ public class ClassSourceValidator { private static final String SEPARATOR_LINE = Strings.repeat("*", 46); private static final Method loadClass; + private static Class pluginClassLoaderClass; static { Method tmp; try { - tmp = PluginClassLoader.class.getDeclaredMethod("loadClass0", + pluginClassLoaderClass = Class.forName("org.bukkit.plugin.java.PluginClassLoader", false, + Bukkit.class.getClassLoader()); + tmp = pluginClassLoaderClass.getDeclaredMethod("loadClass0", String.class, boolean.class, boolean.class, boolean.class); tmp.setAccessible(true); - } catch (NoSuchMethodException e) { + } catch (NoSuchMethodException | ClassNotFoundException e) { tmp = null; } loadClass = tmp; @@ -95,7 +98,7 @@ public class ClassSourceValidator { continue; } ClassLoader targetLoader = target.getClass().getClassLoader(); - if (!(targetLoader instanceof PluginClassLoader)) { + if (!(pluginClassLoaderClass.isAssignableFrom(targetLoader.getClass()))) { continue; } for (Class testClass : classes) {