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) {