Upload via GUI (194 Dateien)

This commit is contained in:
2026-10-07 07:32:07 +00:00
parent 5611c5883a
commit aae442ae48
13 changed files with 803 additions and 103 deletions
+49 -15
View File
@@ -3,15 +3,22 @@ package de.aeromc.capes;
import java.lang.instrument.Instrumentation;
/**
* AeroMC-Umhang-Agent.
* AeroMC-Agent.
*
* Wird vom Launcher per -javaagent an Minecraft angehängt (jede Version, jeder
* Loader). Er klinkt sich in Mojangs authlib ein – über sie lädt Minecraft für
* jeden Spieler Skin und Umhang – und setzt dort den AeroMC-Umhang des Spielers
* ein, falls er einen hat. Alles Weitere (Herunterladen, Zwischenspeichern,
* Anzeigen, auch HD) erledigt Minecraft selbst wie bei einem offiziellen Umhang.
* Loader) und kann zwei Dinge, einzeln zuschaltbar:
*
* Argument: Basisadresse des Umhang-Servers (…/wp-json/aeromc/v1).
* Umhänge: klinkt sich in Mojangs authlib ein – über sie lädt Minecraft für
* jeden Spieler Skin und Umhang – und setzt dort den AeroMC-Umhang
* des Spielers ein, falls er einen hat. Alles Weitere (Herunterladen,
* Zwischenspeichern, Anzeigen, auch HD) erledigt Minecraft selbst.
* Spieldesign: AeroMC-Ladebildschirm, Fenstertitel und -symbol (siehe Design).
*
* Argument, Teile durch "|" getrennt:
* <Basisadresse des Umhang-Servers> (…/wp-json/aeromc/v1)
* capes=0 Umhänge aus
* design=<Ordner> Spieldesign an, Grafiken aus diesem Ordner
* Ein Argument nur mit Adresse (ältere Launcher) heißt: nur Umhänge.
*/
public final class Agent {
/** Unter diesem Schlüssel liegt der Nachschlage-Dienst in den System-Properties. */
@@ -28,15 +35,42 @@ public final class Agent {
}
private static void starte(String argument, Instrumentation inst) {
try {
String basis = argument != null && argument.startsWith("http") ? argument : Nachschlagen.STANDARD_BASIS;
// Die eingefügten Befehle in authlib holen sich den Dienst von hier – nur
// über JDK-Typen, damit es mit jedem Classloader und Modulsystem klappt.
System.getProperties().put(SCHLUESSEL, new Nachschlagen(basis));
inst.addTransformer(new Umbau());
System.out.println("[AeroMC] Umhang-Agent aktiv");
} catch (Throwable t) {
System.out.println("[AeroMC] Umhang-Agent konnte nicht starten: " + t);
String basis = Nachschlagen.STANDARD_BASIS;
boolean umhaenge = true;
String design = null;
String mods = null;
if (argument != null) {
for (String teil : argument.split("\\|")) {
if (teil.startsWith("http")) basis = teil;
else if (teil.equals("capes=0")) umhaenge = false;
else if (teil.startsWith("design=") && teil.length() > 7) design = teil.substring(7);
else if (teil.startsWith("mods=") && teil.length() > 5) mods = teil.substring(5);
}
}
if (mods != null) {
try {
Design.installiereMods(mods, inst);
} catch (Throwable t) {
System.out.println("[AeroMC] Mod-Schalter konnte nicht starten: " + t);
}
}
if (umhaenge) {
try {
// Die eingefügten Befehle in authlib holen sich den Dienst von hier – nur
// über JDK-Typen, damit es mit jedem Classloader und Modulsystem klappt.
System.getProperties().put(SCHLUESSEL, new Nachschlagen(basis));
inst.addTransformer(new Umbau());
System.out.println("[AeroMC] Umhang-Agent aktiv");
} catch (Throwable t) {
System.out.println("[AeroMC] Umhang-Agent konnte nicht starten: " + t);
}
}
if (design != null) {
try {
Design.installiere(design, inst);
} catch (Throwable t) {
System.out.println("[AeroMC] Spieldesign konnte nicht starten: " + t);
}
}
}
}