diff --git a/src/main/groovy/io/izzel/taboolib/gradle/RelocateJar.groovy b/src/main/groovy/io/izzel/taboolib/gradle/RelocateJar.groovy index 8faa7da..6c8fcb2 100644 --- a/src/main/groovy/io/izzel/taboolib/gradle/RelocateJar.groovy +++ b/src/main/groovy/io/izzel/taboolib/gradle/RelocateJar.groovy @@ -46,7 +46,7 @@ class RelocateJar extends DefaultTask { project.logger.info(outJar.getAbsolutePath()) int n def buf = new byte[32768] - new JarFile(inJar).withCloseable {jarFile -> + new JarFile(inJar).withCloseable { jarFile -> for (def jarEntry : jarFile.entries()) { jarFile.getInputStream(jarEntry).withCloseable { if (jarEntry.name.endsWith(".class")) { @@ -54,7 +54,9 @@ class RelocateJar extends DefaultTask { def reader = new ClassReader(it) def writer = new ClassWriter(0) def visitor = new TabooLibClassVisitor(writer, project) - reader.accept(new ClassRemapper(visitor, remapper), 0) + def rem = new ClassRemapper(visitor, remapper) + remapper.remapper = rem + reader.accept(rem, 0) isolated.putAll(visitor.isolated) out.putNextEntry(new JarEntry(remapper.map(jarEntry.name))) out.write(writer.toByteArray()) diff --git a/src/main/groovy/io/izzel/taboolib/gradle/RelocateRemapper.groovy b/src/main/groovy/io/izzel/taboolib/gradle/RelocateRemapper.groovy index 842d868..88205fb 100644 --- a/src/main/groovy/io/izzel/taboolib/gradle/RelocateRemapper.groovy +++ b/src/main/groovy/io/izzel/taboolib/gradle/RelocateRemapper.groovy @@ -1,6 +1,7 @@ package io.izzel.taboolib.gradle import groovy.transform.Canonical +import org.objectweb.asm.commons.ClassRemapper import org.objectweb.asm.commons.Remapper @Canonical @@ -8,6 +9,8 @@ class RelocateRemapper extends Remapper { Map dot Map slash + Map> use = new TreeMap() + ClassRemapper remapper @Override Object mapValue(Object value) { @@ -20,8 +23,12 @@ class RelocateRemapper extends Remapper { return super.mapValue(value) } + @SuppressWarnings('GroovyAccessibility') @Override String map(String internalName) { + if (remapper != null) { + use.computeIfAbsent(remapper.className) { new HashSet() }.add(internalName) + } def match = slash.find { internalName.startsWith(it.key) } if (match) { return match.value + internalName.substring(match.key.length()) diff --git a/src/main/groovy/io/izzel/taboolib/gradle/TabooLibExtension.groovy b/src/main/groovy/io/izzel/taboolib/gradle/TabooLibExtension.groovy index ab512e0..025188e 100644 --- a/src/main/groovy/io/izzel/taboolib/gradle/TabooLibExtension.groovy +++ b/src/main/groovy/io/izzel/taboolib/gradle/TabooLibExtension.groovy @@ -9,7 +9,7 @@ class TabooLibExtension { String classifier = "all" - List modules = new ArrayList<>(); + List modules = [] Map relocation = new LinkedHashMap<>()