This commit is contained in:
bbldrizzy committed 2026-10-23 00:28:57 +01:00
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();
}