fixes
This commit is contained in:
1 parent
83aea53e57
commit
aa4f6b6ddc
842 files changed
+47284
-91563
No files matched your search
@@ -52,14 +52,9 @@ public final class EnginePlugin implements IMixinConfigPlugin {
|
||||
String forced = System.getProperty("prestige.engine.namespace"); // test override ("named" / "intermediary")
|
||||
if (forced != null) namespace = forced;
|
||||
else try { namespace = FabricLoader.getInstance().getMappingResolver().getCurrentRuntimeNamespace(); } catch (Throwable t) { namespace = "named"; }
|
||||
boolean named = namespace.equals("named");
|
||||
ClassLoader loader = EnginePlugin.class.getClassLoader();
|
||||
byte[] tiny = named ? null : resource("prestige-engine/mappings.tiny");
|
||||
List<String> transformers = lines("prestige-engine/transformers.list");
|
||||
expectedTargets = lines(named ? "prestige-engine/targets.named.list" : "prestige-engine/targets.intermediary.list").size();
|
||||
manager = new TransformerManager(new ResourceClassProvider(loader, new HashSet<>(transformers)), tiny == null ? null : new ByteArrayInputStream(tiny));
|
||||
manager.setFailStrategy(FailStrategy.CANCEL);
|
||||
for (String name : transformers) manager.addTransformer(name);
|
||||
expectedTargets = lines(namespace.equals("named") ? "prestige-engine/targets.named.list" : "prestige-engine/targets.intermediary.list").size();
|
||||
manager = createManager(namespace, transformers);
|
||||
if (manager.getTransformedClasses().size() != expectedTargets)
|
||||
throw new IllegalStateException("Expected " + expectedTargets + " Minecraft targets, got " + manager.getTransformedClasses().size());
|
||||
EngineState.installed = true;
|
||||
@@ -69,6 +64,16 @@ public final class EnginePlugin implements IMixinConfigPlugin {
|
||||
}
|
||||
}
|
||||
|
||||
/** Builds the ClassTransform manager for the given runtime namespace ("named" or "intermediary") and transformer class names. */
|
||||
public static TransformerManager createManager(String namespace, List<String> transformers) throws IOException {
|
||||
ClassLoader loader = EnginePlugin.class.getClassLoader();
|
||||
byte[] tiny = namespace.equals("named") ? null : resource("prestige-engine/mappings.tiny");
|
||||
TransformerManager manager = new TransformerManager(new ResourceClassProvider(loader, new HashSet<>(transformers)), tiny == null ? null : new ByteArrayInputStream(tiny));
|
||||
manager.setFailStrategy(FailStrategy.CANCEL);
|
||||
for (String name : transformers) manager.addTransformer(name);
|
||||
return manager;
|
||||
}
|
||||
|
||||
/** Class bytes from the mod class path; the callbacks (void CInject/CModifyArgs handlers) get the readiness gate on the way. */
|
||||
private static final class ResourceClassProvider implements IClassProvider {
|
||||
private final ClassLoader loader;
|
||||
@@ -131,14 +136,14 @@ public final class EnginePlugin implements IMixinConfigPlugin {
|
||||
}
|
||||
}
|
||||
|
||||
private static byte[] resource(String name) throws IOException {
|
||||
public static byte[] resource(String name) throws IOException {
|
||||
try (InputStream in = EnginePlugin.class.getClassLoader().getResourceAsStream(name)) {
|
||||
if (in == null) throw new IllegalStateException("Missing engine resource: " + name);
|
||||
return in.readAllBytes();
|
||||
}
|
||||
}
|
||||
|
||||
private static List<String> lines(String name) throws IOException {
|
||||
public static List<String> lines(String name) throws IOException {
|
||||
return new String(resource(name), StandardCharsets.UTF_8).lines().map(String::trim).filter(s -> !s.isEmpty()).toList();
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user