Zum Hauptinhalt springen

Eigene Inhalte für EternalTD verpacken

EternalTD lädt eigene Inhalte aus den unten aufgeführten Ordnern. ZIP-Importe verwenden den gemeinsamen Importer von MagmaCore; die Paketmetadaten steuern die Anzeige in /etd setup.

Import-Stammverzeichnis​

Manuelle Importe erfolgen weiterhin über:

plugins/EternalTD/imports/

Führe nach dem manuellen Importieren von Inhalten Folgendes aus:

/etd reload

Kanonische Inhaltsordner​

Das aktuelle Plugin durchsucht diese Ordner in Kleinbuchstaben:

plugins/EternalTD/levels/
plugins/EternalTD/waves/
plugins/EternalTD/npcs/
plugins/EternalTD/worlds/

Hinweis zu Legacy-Versionen:

  • Levels/ und NPCs/ sind Legacy-Ordnernamen.
  • EternalTD migriert sie jetzt während des Starts und Neuladens zu levels/ und npcs/.

Regeln zum Verpacken von Welten​

EternalTD behandelt die Welten unter:

plugins/EternalTD/worlds/

als Weltvorlagen.

Wenn ein Spieler ein Level startet, klont EternalTD die passende Vorlagenwelt in den Server-Weltcontainer und führt die Sitzung in dieser geklonten Kopie aus.

Das Stammverzeichnis der Vorlage wird vor dem Kopieren geprüft, die enthaltenen Dateien und Verzeichnisse während des Kopierens. Bei einem Fehler wird der unvollständige Klon wieder entfernt. In diesen Fällen wird die Kopie verweigert:

  • die Vorlage hat kein level.dat in ihrem Wurzelverzeichnis
  • der Vorlagenordner ist ein symbolischer Link oder enthält irgendwo in seinem Inneren einen symbolischen Link
  • die Vorlage enthält eine Datei namens .eternaltd-instance

Dieser letzte Name ist reserviert. EternalTD schreibt ihn als Besitzmarkierung in Laufzeitklone und prüft Instanzidentität und Besitz vor der Bereinigung. Liefere eine solche Datei niemals in einer verpackten Vorlage mit.

Praktische Auswirkung:

  • Verpacke Vorlagenwelten unter plugins/EternalTD/worlds/
  • Verwende die zur Laufzeit geklonten Welten nicht als maßgebliche Vorlage für verpackte Inhalte
  • Vorlagen müssen direkte Unterordner von worlds/ sein; Namen mit einem beliebigen . werden bei der Erkennung ausgeschlossen
  • Weltordnernamen dürfen auch keine Pfadtrennzeichen, : oder Steuerzeichen enthalten und müssen genau mit worldName des Levels übereinstimmen

Die offizielle Hub-Welt ist ein Sonderfall. Sie wird direkt im Weltcontainer des Servers unter folgendem Namen erfasst:

etd_spawn

Was ein Paket umschaltbar macht​

Das Paketumschalten in /etd setup funktioniert nur für Pakete, die verfolgte Konfigurationsdateien bereitstellen.

Die aktuellen verfolgten Asset-Felder sind:

  • levelFiles
  • waveFiles
  • npcFiles
  • worldFolders
  • worldContainerFolders
  • markerFileName

In der Praxis:

  • Level-, Wellen- und NPC-Pakete können durch Schreiben von isEnabled in diese YAML-Dateien aktiviert oder deaktiviert werden
  • Verfolgte Dateinamen werden rekursiv erkannt, sodass Unterordner in levels/, waves/ und npcs/ in Ordnung sind — nur der Dateiname muss übereinstimmen
  • Gemeinsame Weltcontainer-Inhalte und Marker-only-Ressourcenpakete sind nicht auf die gleiche Weise umschaltbar

Paketmetadatenfelder​

Das aktuelle Paket-Konfigurationsfeldmodell unterstützt:

  • isEnabled
  • name
  • description
  • downloadLink
  • version
  • nightbreakSlug
  • levelFiles
  • waveFiles
  • npcFiles
  • worldFolders
  • worldContainerFolders
  • markerFileName
  • category
  • toggleable

Damit eigene Inhalte im Setup-Menü erscheinen, lege ihre Metadaten-YAML direkt in plugins/EternalTD/content_packages/ ab oder liefere sie im Ordner content_packages/ des ZIPs mit (siehe ZIP-Aufbau). Trage die tatsächlichen Datei- und Weltnamen sowie mindestens eine erfasste Ressource ein. Eine leere Ressourcenliste gilt nie als heruntergeladen. Das isEnabled-Flag des Pakets allein deaktiviert seine Level nicht: Der Menüschalter schreibt das Flag in jede erfasste Level-, Wellen- und NPC-Datei, speichert das Paket-Flag und startet EternalTD neu.

Es gibt ein weiteres verfolgtes Feld, markerFallbackFolders, das Ordner unter plugins/ auflistet, deren nicht-leeres Vorhandensein ebenfalls als installiertes Paket zählt. Es existiert für Inhalte, die den Server erreichen können, ohne dass der Download-Ablauf eine Markierung schreibt. Es ist ausschließlich im Code definiert — es in eine Paket-YAML zu schreiben hat keine Wirkung.

Hinweise zum Verpacken von Modellen​

Das aktuelle Paket EternalTD Custom Models wird mit einer Markierungsdatei anstelle normaler EternalTD-Konfigurationsdateien verfolgt.

Das bedeutet:

  • EternalTD kann verfolgen, ob das gemeinsame Modellpaket heruntergeladen wurde
  • die tatsächlichen Modell-Assets befinden sich auf der FreeMinecraftModels-Seite der Einrichtung, wenn FMM installiert ist
  • die Bereinigung erfolgt manuell und wird von /etd reload gefolgt

ZIP-Aufbau​

Lege erkannte Ordner direkt im Archivstamm ab, ohne übergeordneten Sammelordner. Ein einfacher Aufbau sieht so aus:

pack.meta
levels/my_level.yml
waves/my_waves.yml
npcs/my_npc.yml
worlds/my_world/level.dat
worlds/my_world/region/...

Der Klartext in pack.meta lautet eternaltd. Ohne diese Datei verwendet ein ZIP die Plattform des importierenden Plugins. Ein entpackter Ordner wird nur verarbeitet, wenn er pack.meta enthält. Lege .zip-Dateien in den Importordner und lade anschließend neu.

Eintrag im ArchivstammZiel
levels, waves, npcs, worldsEntsprechende Ordner unter plugins/EternalTD/
content_packagesplugins/EternalTD/content_packages/; Paketmetadaten, die das Pack in /etd setup auflisten
content_markersplugins/EternalTD/content_markers/; Installationsmarker mit dem Namen <markerFileName>.marker
worldcontainerWeltcontainer des Servers, für gemeinsame Welten wie etd_spawn
models, modelengineModellordner von FMM, wenn FMM aktiviert ist; sonst blueprints von ModelEngine, wenn aktiviert; andernfalls FMM-Modellordner für spätere Nutzung
scriptsplugins/FreeMinecraftModels/scripts/
freeminecraftmodels, elitemobs, betterstructuresDatenordner des jeweiligen Plugins (plugins/FreeMinecraftModels/, plugins/EliteMobs/, plugins/BetterStructures/); ordne den Inhalt so an wie in diesem Ordner

Das FMM-Modellziel verwendet einen vorhandenen alten Ordner Models, sonst models; ein Ordner freeminecraftmodels/models im Archiv wird in denselben Ordner zusammengeführt. Jeder Import in die Ordner von FMM löst den Reload importierter Inhalte von FMM aus, wenn FMM aktiviert ist. Inhalte im Ordner von BetterStructures lösen einen Inhalts-Reload von BetterStructures aus, sobald BetterStructures vollständig gestartet ist.

Der Importer läuft, bevor EternalTD content_packages/ lädt. Eine im ZIP mitgelieferte Paket-YAML erscheint daher in /etd setup nach dem Reload, der sie importiert. Ein in content_markers/ mitgelieferter Marker zählt als Marker-Ressource des Pakets, sodass diese Ressource als vorhanden gilt, ohne den Download-Ablauf des Setup-Menüs zu durchlaufen. Das Paket braucht weiterhin seine übrigen erfassten Dateien, um als heruntergeladen zu gelten.

Ein unbekannter Eintrag im Archivstamm führt vor der Installation zur Ablehnung des Archivs. Der Importer behält fehlgeschlagene ZIPs für einen erneuten Versuch und versucht, die durch dieses Archiv veränderten Ziele wiederherzustellen. Prüfe protokollierte Wiederherstellungsfehler vor einem erneuten Versuch. Beim Ersetzen einer gemeinsamen Welt wird zuerst die alte Welt entladen: Spieler darin werden zum Spawn einer anderen geladenen Welt gebracht. Lässt sich ein Spieler nicht verschieben oder verweigert die Welt das Entladen, bleibt das Archiv für einen erneuten Versuch erhalten. Erfolgreiche Importe entfernen das ZIP. Das bestätigt noch nicht, dass das Level spielbar ist.