-
-
Notifications
You must be signed in to change notification settings - Fork 44
/
ClassloaderPool.java
44 lines (37 loc) · 1.1 KB
/
ClassloaderPool.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package javassist;
import net.minecraft.launchwrapper.LaunchClassLoader;
public class ClassloaderPool extends ClassPool {
@Override
protected void cacheCtClass(String className, CtClass c, boolean dynamic) {
super.cacheCtClass(className, c, dynamic);
}
@Override
public CtClass getCached(String className) {
return super.getCached(className);
}
@Override
protected synchronized CtClass get0(String className, boolean useCache) throws NotFoundException {
CtClass clazz;
if (useCache) {
clazz = getCached(className);
if (clazz != null) {
return clazz;
}
}
clazz = createCtClass(className, useCache);
if (clazz != null) {
// clazz.getName() != classname if classname is "[L<name>;".
if (useCache) {
cacheCtClass(clazz.getName(), clazz, false);
}
}
return clazz;
}
@Override
protected CtClass createCtClass(String className, boolean useCache) {
if (LaunchClassLoader.instance.excluded(className)) {
return super.createCtClass(className, useCache);
}
return LaunchClassLoader.instance.getSrgBytes(className);
}
}