From 7e29f7654411f0a17ebbcc2c3f6a7dfe93bff39e Mon Sep 17 00:00:00 2001 From: blablubbabc Date: Fri, 11 Jun 2021 14:00:18 +1000 Subject: [PATCH] SPIGOT-6502: Loading a class from a library of another plugin resulted in a ClassCastException. --- src/main/java/org/bukkit/plugin/java/PluginClassLoader.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java index 6843e324..b0a347ab 100644 --- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java +++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java @@ -113,9 +113,11 @@ final class PluginClassLoader extends URLClassLoader { } if (checkGlobal) { + // This ignores the libraries of other plugins, unless they are transitive dependencies. Class result = loader.getClassByName(name, resolve, description); - if (result != null) { + // If the class was loaded from a library instead of a PluginClassLoader, we can assume that its associated plugin is a transitive dependency and can therefore skip this check. + if (result != null && result.getClassLoader() instanceof PluginClassLoader) { PluginDescriptionFile provider = ((PluginClassLoader) result.getClassLoader()).description; if (provider != description