Fix getResources

This commit is contained in:
IzzelAliz 2021-02-20 20:46:20 +08:00
parent 08465abeb1
commit 48e1e26f86
2 changed files with 39 additions and 5 deletions

View File

@ -1,12 +1,11 @@
package io.izzel.arclight.common.mod.util.remapper.generated; package io.izzel.arclight.common.mod.util.remapper.generated;
import com.google.common.collect.Iterators;
import io.izzel.arclight.api.ArclightVersion; import io.izzel.arclight.api.ArclightVersion;
import io.izzel.arclight.api.Unsafe; import io.izzel.arclight.api.Unsafe;
import io.izzel.arclight.common.mod.util.remapper.ArclightRedirectAdapter; import io.izzel.arclight.common.mod.util.remapper.ArclightRedirectAdapter;
import io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper; import io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper;
import io.izzel.arclight.common.mod.util.remapper.RemappingClassLoader; import io.izzel.arclight.common.mod.util.remapper.RemappingClassLoader;
import org.apache.commons.collections.iterators.IteratorEnumeration; import io.izzel.arclight.common.util.Enumerations;
import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassReader;
import org.objectweb.asm.Type; import org.objectweb.asm.Type;
@ -359,9 +358,8 @@ public class ArclightReflectionHandler extends ClassLoader {
if (mappedResource == null) { if (mappedResource == null) {
return loader.getResources(name); return loader.getResources(name);
} else { } else {
URL resource = loader.getResource(mappedResource); Enumeration<URL> resources = loader.getResources(mappedResource);
return resource == null ? null : new IteratorEnumeration( return Enumerations.remapped(resources);
Iterators.singletonIterator(new URL("remap:" + resource)));
} }
} }

View File

@ -0,0 +1,36 @@
package io.izzel.arclight.common.util;
import io.izzel.arclight.api.Unsafe;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.function.Function;
public class Enumerations {
public static <A, B> Enumeration<B> transform(Enumeration<A> enumeration, Function<A, B> mapper) {
return new Enumeration<B>() {
@Override
public boolean hasMoreElements() {
return enumeration.hasMoreElements();
}
@Override
public B nextElement() {
return mapper.apply(enumeration.nextElement());
}
};
}
public static Enumeration<URL> remapped(Enumeration<URL> enumeration) {
return transform(enumeration, url -> {
try {
return new URL("remap:" + url);
} catch (MalformedURLException e) {
Unsafe.throwException(e);
return null;
}
});
}
}