Remap classes for inheritance (#204)
This commit is contained in:
parent
9319dbc00f
commit
8f071289b0
|
@ -362,7 +362,10 @@ public class ClassLoaderRemapper extends LenientJarRemapper {
|
||||||
|
|
||||||
private String getSuper(final String typeName) {
|
private String getSuper(final String typeName) {
|
||||||
ClassNode node = GlobalClassRepo.INSTANCE.findClass(typeName);
|
ClassNode node = GlobalClassRepo.INSTANCE.findClass(typeName);
|
||||||
if (node == null) return "java/lang/Object";
|
if (node == null) {
|
||||||
|
LOGGER.warn("Failed to find class {}", typeName);
|
||||||
|
return "java/lang/Object";
|
||||||
|
}
|
||||||
return node.superName;
|
return node.superName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,9 @@ package io.izzel.arclight.common.mod.util.remapper;
|
||||||
|
|
||||||
import net.md_5.specialsource.repo.ClassRepo;
|
import net.md_5.specialsource.repo.ClassRepo;
|
||||||
import org.objectweb.asm.ClassReader;
|
import org.objectweb.asm.ClassReader;
|
||||||
|
import org.objectweb.asm.ClassVisitor;
|
||||||
|
import org.objectweb.asm.commons.ClassRemapper;
|
||||||
|
import org.objectweb.asm.commons.Remapper;
|
||||||
import org.objectweb.asm.tree.ClassNode;
|
import org.objectweb.asm.tree.ClassNode;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -29,7 +32,18 @@ public class ClassLoaderRepo implements ClassRepo {
|
||||||
try (InputStream inputStream = connection.getInputStream()) {
|
try (InputStream inputStream = connection.getInputStream()) {
|
||||||
ClassReader reader = new ClassReader(inputStream);
|
ClassReader reader = new ClassReader(inputStream);
|
||||||
ClassNode classNode = new ClassNode();
|
ClassNode classNode = new ClassNode();
|
||||||
reader.accept(classNode, ClassReader.SKIP_CODE);
|
ClassVisitor cv;
|
||||||
|
if (classLoader instanceof RemappingClassLoader) {
|
||||||
|
cv = new ClassRemapper(classNode, new Remapper() {
|
||||||
|
@Override
|
||||||
|
public String map(String internalName) {
|
||||||
|
return ((RemappingClassLoader) classLoader).getRemapper().map(internalName);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
cv = classNode;
|
||||||
|
}
|
||||||
|
reader.accept(cv, ClassReader.SKIP_CODE);
|
||||||
return classNode;
|
return classNode;
|
||||||
}
|
}
|
||||||
} catch (IOException ignored) {
|
} catch (IOException ignored) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user