Upload via GUI (39 Dateien)

This commit is contained in:
Git Manager GUI
2026-08-02 17:01:18 +02:00
parent a803f297ea
commit eff6403dd5
26 changed files with 3536 additions and 134 deletions
+209 -7
View File
@@ -51,6 +51,8 @@
<button id="p-mods" class="sbtn">Mods anzeigen</button>
<button id="p-worlds" class="sbtn">Welten verwalten</button>
<button id="p-screens" class="sbtn">Bildschirmfotos verwalten</button>
<button id="p-logs" class="sbtn">Logdateien ansehen</button>
<button id="p-servers" class="sbtn">Server verwalten</button>
<div class="hr"></div>
<button id="p-mcfolder" class="sbtn">Minecraft-Ordner</button>
<button id="p-configfolder" class="sbtn">Konfigurations-Ordner</button>
@@ -154,6 +156,7 @@
<input id="f-max-mem" type="number" min="512" step="256" placeholder="global" />
</label>
</div>
<small id="f-mem-hint" class="hint"></small>
<label class="field">
<span>Zusätzliche JVM-Argumente</span>
<input id="f-extra-args" type="text" placeholder="z. B. -XX:+UseG1GC" />
@@ -337,6 +340,10 @@
</div>
<small id="s-java-status" class="hint"></small>
</label>
<label class="checkbox-field">
<input id="s-auto-java" type="checkbox" /> <span>Fehlende Java-Version automatisch herunterladen</span>
</label>
<small class="hint">Holt beim Spielstart die passende Fassung von Eclipse Temurin, wenn keine geeignete Java-Installation gefunden wird. Ablage im Launcher-Ordner, rund 45 MB je Version.</small>
</section>
<section class="settings-card">
@@ -400,6 +407,26 @@
<label class="field"><span>Passwort <small class="opt">(optional)</small></span><input id="s-proxy-pass" type="password" /></label>
</div>
</section>
<section class="settings-card settings-card-wide">
<h5>CurseForge</h5>
<label class="field">
<span>Eigener API-Key <small class="opt">(optional)</small></span>
<input id="s-cf-key" type="password" placeholder="leer lassen, um die Weiterleitung unten zu nutzen" />
<small class="hint">Kostenlos unter console.curseforge.com. Ist hier ein Schlüssel eingetragen, geht der Launcher direkt zu CurseForge und nutzt keine Weiterleitung.</small>
</label>
<div class="field-row">
<label class="field">
<span>Weiterleitung <small class="opt">(optional)</small></span>
<input id="s-cf-proxy" type="text" placeholder="https://cf.example.de" />
</label>
<label class="field">
<span>Token <small class="opt">(falls verlangt)</small></span>
<input id="s-cf-proxy-token" type="password" />
</label>
</div>
<small class="hint">Ein Server, der den Schlüssel für dich hält. Ohne beides funktionieren Modrinth-Modpacks (.mrpack) weiterhin.</small>
</section>
</div>
</div>
@@ -439,6 +466,31 @@
</div>
</section>
<section class="settings-card settings-card-wide">
<h5>Automatisch sichern</h5>
<label class="checkbox-field">
<input id="s-autobackup" type="checkbox" /> <span>Sicherungen nach Zeitplan erstellen</span>
</label>
<div class="field-row">
<label class="field">
<span>Wie oft</span>
<select id="s-autobackup-every">
<option value="daily">Täglich</option>
<option value="weekly">Wöchentlich</option>
</select>
</label>
<label class="field">
<span>Wie viele behalten</span>
<input id="s-autobackup-keep" type="number" min="1" max="50" />
</label>
</div>
<label class="checkbox-field">
<input id="s-autobackup-launch" type="checkbox" /> <span>Zusätzlich vor jedem Spielstart sichern</span>
</label>
<small class="hint">Eine Sicherung umfasst <em>alle</em> Instanzen und kann je nach Umfang einige Minuten dauern. Vor dem Spielstart wird sie abgewartet der Start verzögert sich entsprechend. Ältere automatische Sicherungen werden gelöscht, sobald die eingestellte Anzahl überschritten ist.</small>
<small id="s-autobackup-last" class="hint">Noch keine automatische Sicherung.</small>
</section>
<section class="settings-card settings-card-wide">
<h5>Wiederherstellen</h5>
<small class="hint">Wähle ein Backup aus Dokumente/AeroMC Launcher/Backups aus. Achtung: Alle vorhandenen Instanzen werden beim Wiederherstellen mit dem Inhalt des Backups überschrieben. Launcher-Einstellungen werden ebenfalls wiederhergestellt. Konten und Tokens bleiben unverändert.</small>
@@ -473,7 +525,7 @@
<div id="s-appinfo" class="settings-kv info-meta"></div>
<div class="info-actions">
<button id="s-check-update" class="btn">Nach Updates suchen</button>
<span id="s-update-status" class="info-status">Kein Update-Check ausgefuehrt.</span>
<span id="s-update-status" class="info-status">Kein Update-Check ausgeführt.</span>
</div>
</section>
</div>
@@ -560,6 +612,11 @@
<button id="m-more" class="btn btn-mini hidden">Mehr laden</button>
</div>
<div id="m-pane-installed" class="hidden">
<div class="mmc-bar">
<button id="m-check-updates" class="btn btn-mini">Nach Updates suchen</button>
<button id="m-apply-updates" class="btn btn-primary btn-mini hidden">Alle aktualisieren</button>
<span id="m-update-status" class="hint"></span>
</div>
<div id="m-installed" class="mods-list"><div class="mods-empty">Noch keine Mods.</div></div>
</div>
</div>
@@ -589,9 +646,10 @@
<p id="login-status" class="hint">Warte auf Bestätigung …</p>
</div>
<p id="login-hint" class="hint">Melde dich mit deinem Microsoft-Konto an (Minecraft Java Edition nötig). Mehrere Konten sind möglich das aktive wird zum Spielen verwendet.</p>
<p id="login-hint" class="hint">Melde dich mit deinem Microsoft-Konto an (Minecraft Java Edition nötig). Das aktive Konto wird beim nächsten Start verwendet. Für zwei Konten gleichzeitig: eine Instanz starten, hier das zweite Konto aktivieren und eine weitere Instanz starten laufende Spiele behalten ihr Konto.</p>
</div>
<div class="modal-foot">
<button id="login-skin" class="btn">Skin ändern…</button>
<div class="spacer"></div>
<button id="login-add" class="btn btn-primary" data-ic="plus">Konto hinzufügen</button>
<button class="btn" data-close>Schließen</button>
@@ -662,6 +720,147 @@
</div>
</div>
<!-- ===================== Dialog: Serverliste ===================== -->
<div id="modal-servers" class="modal hidden">
<div class="modal-card modal-lg">
<div class="modal-head">
<h3 id="servers-title">Server</h3>
<button class="modal-close" data-close></button>
</div>
<div class="modal-body">
<p class="hint">Diese Liste steht in der Datei servers.dat der Instanz und erscheint im Spiel unter „Mehrspieler". Änderungen wirken erst beim nächsten Start.</p>
<div class="field-row" style="margin-top:12px">
<label class="field"><span>Name</span><input id="srv-name" type="text" placeholder="z. B. Mein Server" /></label>
<label class="field"><span>Adresse</span><input id="srv-ip" type="text" placeholder="mc.example.de oder 192.168.1.50:25566" /></label>
<button id="srv-add" class="btn btn-primary" style="align-self:flex-end">Hinzufügen</button>
</div>
<div id="srv-list" class="mods-list" style="margin-top:12px"></div>
</div>
<div class="modal-foot">
<div class="spacer"></div>
<button class="btn" data-close>Schließen</button>
</div>
</div>
</div>
<!-- ===================== Dialog: Server übertragen ===================== -->
<div id="modal-srv-copy" class="modal hidden">
<div class="modal-card modal-sm">
<div class="modal-head">
<h3>Server übertragen</h3>
<button class="modal-close" data-close></button>
</div>
<div class="modal-body">
<p id="srv-copy-sub" class="hint"></p>
<div id="srv-copy-list" class="mods-list"></div>
</div>
<div class="modal-foot">
<div class="spacer"></div>
<button class="btn" data-close>Abbrechen</button>
<button id="srv-copy-do" class="btn btn-primary">Übertragen</button>
</div>
</div>
</div>
<!-- ===================== Dialog: Skin ===================== -->
<div id="modal-skin" class="modal hidden">
<div class="modal-card modal-lg">
<div class="modal-head">
<h3>Skin ändern</h3>
<button class="modal-close" data-close></button>
</div>
<div class="modal-body">
<p id="skin-konto" class="hint"></p>
<div class="skin-vorschau">
<div class="skin-spalte">
<div class="skin-label">Aktuell</div>
<div class="skin-bild">
<img id="skin-aktuell" alt="" class="hidden" />
<span id="skin-aktuell-leer" class="hint">wird geladen …</span>
</div>
</div>
<div class="skin-spalte">
<div class="skin-label">Neu</div>
<div class="skin-bild">
<img id="skin-neu" alt="" class="hidden" />
<span id="skin-neu-leer" class="hint">noch keine Datei gewählt</span>
</div>
</div>
</div>
<small class="hint">Die Vorschau zeigt die Figur so, wie sie im Spiel aussieht. Die Armform wirkt sich auf die Darstellung aus.</small>
<div class="path-row" style="margin-top:12px">
<input id="skin-pfad" type="text" readonly placeholder="PNG mit 64×64 Pixeln" />
<button id="skin-pick" class="btn">Datei wählen…</button>
</div>
<label class="field" style="margin-top:10px">
<span>Armform</span>
<select id="skin-variante">
<option value="classic">Klassisch (breite Arme, Steve)</option>
<option value="slim">Schmal (Alex)</option>
</select>
</label>
<p id="skin-status" class="hint"></p>
</div>
<div class="modal-foot">
<button id="skin-reset" class="btn btn-danger">Auf Standard zurücksetzen</button>
<div class="spacer"></div>
<button class="btn" data-close>Schließen</button>
<button id="skin-apply" class="btn btn-primary" disabled>Skin setzen</button>
</div>
</div>
</div>
<!-- ===================== Dialog: Logdateien ===================== -->
<div id="modal-logs" class="modal hidden">
<div class="modal-card modal-lg">
<div class="modal-head">
<h3 id="logs-title">Logdateien</h3>
<button class="modal-close" data-close></button>
</div>
<div class="modal-body">
<div class="mmc-bar">
<label class="field" style="margin:0;flex:1">
<span>Datei</span>
<select id="logs-select"></select>
</label>
<span id="logs-info" class="hint"></span>
</div>
<pre id="logs-text" class="crash-voll">Wähle eine Datei …</pre>
</div>
<div class="modal-foot">
<button id="logs-folder" class="btn" data-ic="folder">Ordner öffnen</button>
<div class="spacer"></div>
<button class="btn" data-close>Schließen</button>
<button id="logs-copy" class="btn btn-primary">Log kopieren</button>
</div>
</div>
</div>
<!-- ===================== Dialog: Absturzbericht ===================== -->
<div id="modal-crash" class="modal hidden">
<div class="modal-card modal-lg">
<div class="modal-head">
<h3>Minecraft ist abgestürzt</h3>
<button class="modal-close" data-close></button>
</div>
<div class="modal-body">
<p id="crash-sub" class="hint"></p>
<div id="crash-kern" class="crash-kern"></div>
<details class="crash-details">
<summary>Vollständigen Bericht anzeigen</summary>
<pre id="crash-voll" class="crash-voll"></pre>
</details>
</div>
<div class="modal-foot">
<button id="crash-folder" class="btn" data-ic="folder">Ordner öffnen</button>
<button id="crash-console" class="btn">Konsole</button>
<div class="spacer"></div>
<button class="btn" data-close>Schließen</button>
<button id="crash-copy" class="btn btn-primary">Bericht kopieren</button>
</div>
</div>
</div>
<!-- ===================== Dialog: Update ===================== -->
<div id="modal-update" class="modal hidden">
<div class="modal-card modal-sm">
@@ -681,10 +880,11 @@
<div class="upd-bar"><div id="upd-bar-fill" class="upd-bar-fill"></div></div>
<div id="upd-status" class="hint">Wird heruntergeladen …</div>
</div>
<p class="hint">Der Launcher lädt das Update herunter und startet die Installation automatisch.</p>
<p id="upd-hint" class="hint">Der Launcher lädt das Update herunter und startet die Installation automatisch.</p>
</div>
<div class="modal-foot">
<button class="btn" data-close>Später</button>
<button id="upd-open" class="btn btn-primary hidden">Release öffnen</button>
<button id="upd-install" class="btn btn-primary">Installieren</button>
</div>
</div>
@@ -707,13 +907,13 @@
</div>
<div id="import-pane-zip" class="import-pane">
<p class="import-copy">Importiert eine exportierte AeroMC-Instanz aus einem ZIP-Archiv.</p>
<p class="hint">Wähle ein Archiv mit einer gültigen instance.json. Der Launcher legt daraus automatisch eine neue Instanz an.</p>
<p class="import-copy">Importiert eine einzelne Instanz aus einem ZIP-Archiv.</p>
<p class="hint">Erkannt werden AeroMC-Exporte (instance.json) und einzelne MultiMC- oder Prism-Instanzen (instance.cfg) letztere auch als gezippter Instanzordner. Der Launcher legt daraus automatisch eine neue Instanz an, samt Mods, Welten und Konfiguration.</p>
</div>
<div id="import-pane-modpack" class="import-pane hidden">
<p class="import-copy">Importiert ein Modrinth-Modpack als neue Instanz.</p>
<p class="hint">Unterstützt werden .mrpack und kompatible ZIP-Dateien mit modrinth.index.json.</p>
<p class="import-copy">Importiert ein Modpack als neue Instanz.</p>
<p class="hint">Unterstützt werden Modrinth (.mrpack oder ZIP mit modrinth.index.json) und CurseForge (ZIP mit manifest.json). Für CurseForge ist ein eigener API-Key in den Netzwerk-Einstellungen nötig.</p>
</div>
<div id="import-pane-mc" class="import-pane hidden">
@@ -860,6 +1060,8 @@
<button class="ctx-item" data-act="p-mods">Mods anzeigen</button>
<button class="ctx-item" data-act="p-worlds">Welten verwalten</button>
<button class="ctx-item" data-act="p-screens">Bildschirmfotos verwalten</button>
<button class="ctx-item" data-act="p-logs">Logdateien ansehen</button>
<button class="ctx-item" data-act="p-servers">Server verwalten</button>
<div class="ctx-sep"></div>
<button class="ctx-item" data-act="p-mcfolder">Minecraft-Ordner</button>
<button class="ctx-item" data-act="p-configfolder">Konfigurations-Ordner</button>