diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/PluginClassLoaderMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/PluginClassLoaderMixin.java index c9f79533..c0c66520 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/PluginClassLoaderMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/PluginClassLoaderMixin.java @@ -1,6 +1,7 @@ package io.izzel.arclight.common.mixin.bukkit; import com.google.common.io.ByteStreams; +import cpw.mods.modlauncher.EnumerationHelper; import io.izzel.arclight.common.bridge.bukkit.JavaPluginLoaderBridge; import io.izzel.arclight.common.mod.util.remapper.ArclightRemapper; import io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper; @@ -20,7 +21,9 @@ import java.net.URL; import java.net.URLClassLoader; import java.net.URLConnection; import java.security.CodeSource; +import java.util.Enumeration; import java.util.Map; +import java.util.Objects; import java.util.concurrent.Callable; import java.util.jar.Manifest; @@ -49,6 +52,40 @@ public class PluginClassLoaderMixin extends URLClassLoader implements RemappingC super(urls); } + /** + * @author IzzelAliz + * @reason + */ + @Overwrite + @Override + public URL getResource(String name) { + Objects.requireNonNull(name); + URL url = findResource(name); + if (url == null) { + if (getParent() != null) { + url = getParent().getResource(name); + } + } + return url; + } + + /** + * @author IzzelAliz + * @reason + */ + @Overwrite + @Override + public Enumeration getResources(String name) throws IOException { + Objects.requireNonNull(name); + @SuppressWarnings("unchecked") + Enumeration[] tmp = (Enumeration[]) new Enumeration[2]; + if (getParent()!= null) { + tmp[1] = getParent().getResources(name); + } + tmp[0] = findResources(name); + return EnumerationHelper.merge(tmp[0], tmp[1]); + } + /** * @author IzzelAliz * @reason