Skip to content

Commit ae8ce82

Browse files
committed
fix: fix resource isolate
1 parent dab9f8d commit ae8ce82

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

java21/src/main/java/org/leavesmc/leavesclip/Leavesclip.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,21 +59,21 @@ public static void main(final String[] args) {
5959
final URL[] classpathUrls = Arrays.copyOf(setupClasspathUrls, setupClasspathUrls.length + MixinJarResolver.jarUrls.length);
6060
System.arraycopy(MixinJarResolver.jarUrls, 0, classpathUrls, setupClasspathUrls.length, MixinJarResolver.jarUrls.length);
6161

62-
final ClassLoader parentClassLoader = Leavesclip.class.getClassLoader(); // remove .getParent(), hope no side-effect
62+
final ClassLoader parentClassLoader = Leavesclip.class.getClassLoader();
6363
MixinServiceKnot.classLoader = Leavesclip.class.getClassLoader();
6464

6565
MixinBootstrap.init();
6666
MixinEnvironment.getDefaultEnvironment().setSide(MixinEnvironment.Side.SERVER);
6767

6868
classLoader = new MixinURLClassLoader(classpathUrls, parentClassLoader);
6969
ConditionChecker.setClassLoader(classLoader);
70-
MixinServiceKnot.classLoader = classLoader;
7170
Mixins.addConfiguration("mixin-extras.init.mixins.json");
71+
MixinServiceKnot.classLoader = classLoader;
7272
MixinJarResolver.mixinConfigs.forEach(Mixins::addConfiguration);
7373
decorateMixinConfigWithPluginId();
7474
AccessWidenerManager.initAccessWidener(classLoader);
7575
} else {
76-
classLoader = new URLClassLoader(setupClasspathUrls);
76+
classLoader = new URLClassLoader(setupClasspathUrls, Leavesclip.class.getClassLoader().getParent());
7777
}
7878

7979
final String mainClassName = findMainClass();

java21/src/main/java/org/leavesmc/leavesclip/mixin/MixinURLClassLoader.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package org.leavesmc.leavesclip.mixin;
22

33
import org.jetbrains.annotations.NotNull;
4+
import org.jetbrains.annotations.Nullable;
45
import org.spongepowered.asm.mixin.MixinEnvironment;
56
import org.spongepowered.asm.mixin.transformer.IMixinTransformer;
67

78
import java.io.InputStream;
89
import java.net.URL;
910
import java.net.URLClassLoader;
11+
import java.util.Objects;
1012

1113
public class MixinURLClassLoader extends URLClassLoader {
1214
private final IMixinTransformer transformer;
@@ -20,6 +22,16 @@ public MixinURLClassLoader(URL[] urls, ClassLoader parent) {
2022
this.transformer = (IMixinTransformer) active;
2123
}
2224

25+
@Override
26+
public @Nullable URL getResource(String name) {
27+
Objects.requireNonNull(name);
28+
if (name.endsWith(".class")) {
29+
return super.getResource(name);
30+
} else {
31+
return findResource(name);
32+
}
33+
}
34+
2335
@Override
2436
protected Class<?> findClass(@NotNull String name) throws ClassNotFoundException {
2537
String path = name.replace('.', '/') + ".class";

0 commit comments

Comments
 (0)