From 2e1a3720cf32acfe212c19e7e7cbcffda1362a3f Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot 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. By: blablubbabc --- .../main/java/org/bukkit/plugin/java/PluginClassLoader.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/paper-api/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/paper-api/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java index 6843e3243..b0a347ab4 100644 --- a/paper-api/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java +++ b/paper-api/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