package io.izzel.taboolib.gradle import groovy.transform.Canonical import org.objectweb.asm.commons.ClassRemapper import org.objectweb.asm.commons.Remapper @Canonical class RelocateRemapper extends Remapper { Map dot Map slash Map> use = new TreeMap() ClassRemapper remapper @Override Object mapValue(Object value) { if (value instanceof String) { def match = dot.find { (value as String).startsWith(it.key) } if (match) { return (match.value + (value as String).substring(match.key.length())).toString() } } 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()) } else { return internalName } } }