No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Lars Oste d01c1d271f
All checks were successful
CI / build (push) Successful in 42s
Die Forge heisst git.flexfamily.de
Lars am 28.10.2026: "ab jetzt git.flexfamily.de gehoeren die repos".
Grund, und das ist der eigentliche Punkt: **git.flexfamily.cloud ist in
Lars' Firmennetz gesperrt**, .de nicht. Beide Namen zeigen auf dieselbe
Instanz und haben ein Zertifikat -- vom Arbeitsplatz aus waere die Forge
unter dem alten Namen aber nicht erreichbar.

Umgestellt sind damit: ROOT_URL, DOMAIN und SSH_DOMAIN der Instanz, alle
Git-Remotes, die Workflows und jedes Programm, das dort etwas abholt.

Ohne den Grund wirkt das wie Geschmack, und der naechste, der eine
Adresse schreibt, nimmt wieder die falsche. Er steht im allgemeinen Skill
und in RUNNER.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-28 14:30:12 +01:00
.forgejo/workflows Die Forge heisst git.flexfamily.de 2026-10-28 14:30:12 +01:00
.github/workflows fix(ci): Repo-Namen in Release-Workflow anpassen 2026-08-17 13:19:53 +02:00
docs docs: Screenshot + README auf den aktuellen Stand 2026-09-01 22:13:43 +02:00
KroModIx.Plugin.ScheduleI fix(v0.8.0): Mods fremder Mod-Manager nicht mehr anfassen 2026-10-04 09:03:00 +02:00
KroModIx.Plugin.ScheduleI.Tests fix(v0.8.0): Mods fremder Mod-Manager nicht mehr anfassen 2026-10-04 09:03:00 +02:00
.editorconfig feat(v0.1.0): Schedule I Mod-Manager Plugin (MelonLoader, Nexus) 2026-08-17 13:18:55 +02:00
.gitignore feat(v0.1.0): Schedule I Mod-Manager Plugin (MelonLoader, Nexus) 2026-08-17 13:18:55 +02:00
CLAUDE.md fix(v0.8.0): Mods fremder Mod-Manager nicht mehr anfassen 2026-10-04 09:03:00 +02:00
Directory.Build.props feat(v0.1.0): Schedule I Mod-Manager Plugin (MelonLoader, Nexus) 2026-08-17 13:18:55 +02:00
Directory.Packages.props fix(v0.8.0): Mods fremder Mod-Manager nicht mehr anfassen 2026-10-04 09:03:00 +02:00
KroModIx.Plugin.ScheduleI.slnx feat(v0.1.0): Schedule I Mod-Manager Plugin (MelonLoader, Nexus) 2026-08-17 13:18:55 +02:00
LICENSE feat(v0.1.0): Schedule I Mod-Manager Plugin (MelonLoader, Nexus) 2026-08-17 13:18:55 +02:00
nuget.config Die Forge heisst git.flexfamily.de 2026-10-28 14:30:12 +01:00
README.md feat(v0.7.0): Archive und GitHub aus dem Host, feste MelonLoader-URL weg 2026-10-03 18:12:50 +02:00

KroModIx.Plugin.ScheduleI

CI Release

Schedule I Mod-Manager — Plugin für den KroModIx.

Verwaltet MelonLoader-Mods für Schedule I (TVGS, Steam AppId 3164500, IL2CPP-basiert). Auto-Install von MelonLoader direkt aus dem Plugin, Nexus-Katalog-Integration, Downloads-Ordner mit Bulk-Install und Details-Dialog + KI-Zusammenfassung. DE+EN-Übersetzung.

Voraussetzungen

Braucht den KroModIx-Host ab v1.33.0 — dort sitzen der Backup-Baukasten, der Archiv- und der GitHub-Baukasten (beide seit v0.7.0 genutzt) und der gemeinsame Versions-Vergleich, gegen die dieses Plugin gebaut ist. Ältere Hosts laden das Plugin nicht.

Screenshot

Nexus-Katalog für MelonLoader-Mods

Features

Installiert-Tab

  • MelonLoader-Bootstrap-Panel wenn MelonLoader noch nicht installiert ist — Direct-Download der offiziellen MelonLoader.x64.zip vom LavaGang-GitHub-Release + Entpacken ins Game-Root. Kein Installer-EXE- Umweg, funktioniert unter Proton.

  • Discovery aller flat DLLs unter <InstallDir>/Mods/:

    Zustand Datei Toggle
    Aktiv Mods/MyMod.dll MyMod.dll → MyMod.dll.disabled
    Deaktiviert Mods/MyMod.dll.disabled Rename zurück
  • Kroste-Card-Row mit Cover (140×90, aus Nexus-Katalog via InstallManifest-ModId), Titel, Autor · Version · Datum, Summary, Status-Label, Actions (Toggle, 🔍 Details, 🗑 Deinstallieren).

  • Doppelklick auf Row öffnet den gleichen Nexus-Detail-Dialog wie im Katalog-Tab (falls ModId im InstallManifest hinterlegt).

  • Bulk-Aktionen mit Progress-Scope: „▶▶ Alle aktivieren" / „⏸⏸ Alle deaktivieren" mit Confirm-Dialog.

  • Filter-Textbox live nach Namen.

Nexus-Tab

  • Voll-Katalog via INexusService.SearchModsAsync (Contracts v1.15+, öffentliches GraphQL, kein Personal-Key nötig für Read).
  • Pagination (40 pro Seite), Sort (Update / Add / Endorsed / Downloaded), Server-Search, Kategorie-Filter clientseitig.
  • Direct-Download in den Plugin-Downloads-Ordner (Premium-Only, analog Cyberpunk/DSP).
  • Detail-Dialog (780×640) mit Cover, Meta-Row, KI-Zusammenfassung (via IHostServices.Ai), HTML-Beschreibung. Sprachabhängiger AI-Prompt.

Downloads-Tab

  • Listet .zip / .rar / .7z im Plugin-Downloads-Ordner.
  • Auto-Layout-Install via SharpCompress: entweder direktes Extract ins Game-Root (wenn Archiv Mods/, UserLibs/ oder Plugins/ auf einer Ebene enthält) oder Flat-Extract aller .dll nach Mods/.
  • Bulk-Install aller Downloads mit Progress-Scope.
  • Row-Enrichment: NexusFileNameParser extrahiert ModId aus dem Nexus-CDN-Filename (beide Formate: Dash + Space), Enricher zieht Cover/Autor/Summary aus dem Katalog. Doppelklick + 🔍 Details.

Update-Discovery (IUpdateNotifier)

  • ScheduleOneInstallManifestStore persistiert pro installierter DLL ein Manifest mit Nexus-ModId + Version + Original-Filename.
  • ScheduleOneUpdateChecker matcht Manifests gegen Nexus-Katalog, meldet echte Versions-Deltas als grünen ↑-Badge auf der Schedule-I- Sidebar-Kachel.

Sprachumschaltung

DE + EN. Nach Sprachwechsel im Host: Kachel neu selektieren, dann sind die frischen Übersetzungen aktiv (Host-Tab-Cache-Invalidate seit v1.14.7).

Build

dotnet build -c Release
dotnet test

Backups vor jedem Install

Bevor das Plugin Dateien ins Spiel schreibt, legt es einen Snapshot des Ziel-Verzeichnisses an — bei Einzel-Installs einen pro Mod, bei Bulk-Installs einen vor dem ganzen Durchlauf. Zurückspielen läuft über das Backups-Fenster im Kontextmenü der Sidebar-Kachel; es gibt bewusst kein Auto-Rollback, damit du entscheidest, welchen Stand du zurückholst. Aufbewahrt werden die letzten zehn Snapshots pro Spiel.

Schlägt ein Snapshot fehl, läuft der Install trotzdem durch (mit Log-Eintrag) — das Backup ist ein Netz, kein Türsteher.

Lizenz

MIT — siehe LICENSE.