No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Lars Oste e56cd824c2
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:15 +01:00
.forgejo/workflows Die Forge heisst git.flexfamily.de 2026-10-28 14:30:15 +01:00
.github/workflows feat(v0.1.0): initial 7 Days to Die Mod-Manager Plugin 2026-08-17 20:58:33 +02:00
docs docs: Screenshot + README auf den aktuellen Stand 2026-09-01 22:13:46 +02:00
KroModIx.Plugin.SevenDaysToDie fix(v0.5.0): Eintraege fremder Mod-Manager nicht mehr anfassen 2026-10-04 09:08:22 +02:00
KroModIx.Plugin.SevenDaysToDie.Tests fix(v0.5.0): Eintraege fremder Mod-Manager nicht mehr anfassen 2026-10-04 09:08:22 +02:00
.editorconfig feat(v0.1.0): initial 7 Days to Die Mod-Manager Plugin 2026-08-17 20:58:33 +02:00
.gitignore feat(v0.1.0): initial 7 Days to Die Mod-Manager Plugin 2026-08-17 20:58:33 +02:00
CLAUDE.md fix(v0.5.0): Eintraege fremder Mod-Manager nicht mehr anfassen 2026-10-04 09:08:22 +02:00
Directory.Build.props feat(v0.1.0): initial 7 Days to Die Mod-Manager Plugin 2026-08-17 20:58:33 +02:00
Directory.Packages.props fix(v0.5.0): Eintraege fremder Mod-Manager nicht mehr anfassen 2026-10-04 09:08:22 +02:00
KroModIx.Plugin.SevenDaysToDie.slnx feat(v0.1.0): initial 7 Days to Die Mod-Manager Plugin 2026-08-17 20:58:33 +02:00
LICENSE feat(v0.1.0): initial 7 Days to Die Mod-Manager Plugin 2026-08-17 20:58:33 +02:00
nuget.config Die Forge heisst git.flexfamily.de 2026-10-28 14:30:15 +01:00
README.md feat(v0.4.0): Archive aus dem Host, zwei Ausbruch-Loecher zu, Installer-Tests 2026-10-03 17:58:39 +02:00

KroModIx.Plugin.SevenDaysToDie

CI Release

7 Days to Die Mod-Manager — Plugin für den KroModIx.

Verwaltet Vanilla-Loader-Mods für 7 Days to Die (The Fun Pimps, Steam AppId 251570). Jeder Mod ist ein Ordner mit ModInfo.xml unter <InstallDir>/Mods/. Kein Bootstrap-Assistent nötig — der Mod-Loader ist Vanilla, ab A20 sind Mods per Default aktiv.

Voraussetzungen

Braucht den KroModIx-Host ab v1.32.0 — dort sitzen der Backup-Baukasten, der gemeinsame Versions-Vergleich und seit v0.4.0 der Archiv-Baukasten samt Ausbruch-Schutz, gegen die dieses Plugin gebaut ist. Ältere Hosts laden das Plugin nicht.

Screenshot

Nexus-Katalog mit Voll-Katalog-Suche

Features

Installiert-Tab

  • Discovery aller Mod-Ordner unter <InstallDir>/Mods/:

    Zustand Ordner Toggle
    Aktiv Mods/MyMod/ Rename → Mods/MyMod.disabled/
    Deaktiviert Mods/MyMod.disabled/ Rename zurück
  • ModInfo.xml-Parser unterstützt beide historischen Formate:

    • A20+ Attribut-Form: <Name value="Foo" />, <Author value="X" /> …
    • Legacy Element-Form: <Name>Foo</Name>, <Author>X</Author> …
  • Kroste-Card-Row mit Cover (140×90, aus Nexus-Katalog via InstallManifest-ModId), Titel, Autor · Version · Größe · 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 mit Cover, Meta-Row, KI-Zusammenfassung (via IHostServices.Ai), Rich-HTML-Beschreibung. Sprachabhängiger AI-Prompt.

Downloads-Tab

  • Listet .zip / .rar / .7z im Plugin-Downloads-Ordner.
  • Auto-Layout-Install via SharpCompress:
    • Archiv mit Mods/-Root → direktes Extract ins Game-Root
    • Archiv mit ModInfo.xml irgendwo → Elternordner wird zum Mod
  • 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)

  • SevenDaysInstallManifestStore persistiert pro installiertem Mod-Ordner ein Manifest mit Nexus-ModId + Version + Original-Filename.
  • SevenDaysUpdateChecker matcht Manifests gegen Nexus-Katalog, meldet echte Versions-Deltas als grünen ↑-Badge auf der 7DTD- 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.