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

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;
}
});
}
}