Datapack lädt nicht? Die Ordnerstruktur und die drei Namen, die übereinstimmen müssen
Ein Datapack, das nicht in /datapack list auftaucht, hat ein Pfadproblem, kein Codeproblem. Hier ist der exakte Baum, die Namespace-Regel und die Ordner, die umbenannt wurden.
/datapack list zeigt nichts an oder zeigt das Pack als deaktiviert. Fast immer ist das JSON in Ordnung und die Ordner sind falsch.
Der Baum
world/datapacks/my_pack/
├── pack.mcmeta
└── data/
├── my_namespace/
│ ├── function/ one .mcfunction per file
│ ├── recipe/
│ ├── loot_table/
│ ├── advancement/
│ └── predicate/
└── minecraft/
└── tags/
└── function/
└── load.json
Drei Namen müssen übereinstimmen, und einer davon ist nicht offensichtlich:
pack.mcmetaim Pack-Wurzelverzeichnis — nebendata/, nicht darin.data/<namespace>/— dein Namespace, kleingeschrieben, ohne Leerzeichen. Dieser wird zum Präfix inmy_namespace:my_function.- Die Namen der Kategorieordner, die sich geändert haben und die übliche Fehlerquelle sind.
Die Ordner wurden in den Singular umbenannt
Das hat viele Packs und viele Tutorials zerstört:
| Alt | Aktuell |
|---|---|
functions/ | function/ |
recipes/ | recipe/ |
loot_tables/ | loot_table/ |
advancements/ | advancement/ |
predicates/ | predicate/ |
structures/ | structure/ |
Ein Pack, das die Pluralnamen verwendet, lädt — es erscheint in /datapack list — und tut einfach nichts, was die verwirrendste Fehlerart des Ganzen ist. tags/ blieb im Plural, aber die Ordner darin gingen mit allem anderen in den Singular über — tags/functions/ heißt jetzt tags/function/. Ja, das ist inkonsistent.
Etwas automatisch ausführen
Zwei spezielle Tags:
data/minecraft/tags/function/load.json → runs once on load/reload
data/minecraft/tags/function/tick.json → runs every tick
Beachte data/minecraft/, nicht deinen eigenen Namespace — das Tag gehört Minecraft, die Funktionen, auf die es zeigt, gehören dir:
{ "values": ["my_namespace:setup"] }
Der Reihe nach diagnostizieren
/datapack list— wenn das Pack gar nicht aufgelistet wird, fehltpack.mcmeta, ist fehlerhaft oder eine Ebene zu tief.- Aufgelistet, aber deaktiviert —
/datapack enable "file/my_pack". Beachte das Präfixfile/und die Anführungszeichen. - Aufgelistet und aktiviert, aber wirkungslos — Plural-Ordnernamen oder ein Load-Tag im eigenen Namespace statt
minecraft. /reloadund lies das Log (logs/latest.logoder die Launcher-Ausgabe). Eine Funktion mit einem Syntaxfehler wird dort mit „Failed to load function …" verworfen; im Chat steht nur, dass das Reload abgeschlossen ist.
Gezippt oder nicht
Beides funktioniert. Gezippt bedeutet pack.mcmeta im Zip-Wurzelverzeichnis, genau wie bei Resource Packs. Die Ordnerform ist während der Entwicklung einfacher, weil /reload Änderungen ohne erneutes Zippen übernimmt.
Platzierung auf dem Server
Auf einem Server lautet der Pfad <world>/datapacks/, wobei <world> der Wert von level-name in server.properties ist — nicht das Server-Wurzelverzeichnis. Das Pack in den Serverordner zu legen, ist der häufigste Fehler auf Serverseite.
Stelle mit dem Datapack Studio ein Pack mit den aktuellen Ordnernamen und einer gültigen pack.mcmeta zusammen und lade es dann fertig zum Ablegen herunter — und lege dein Load-Tag in data/minecraft/tags/function/ ab, wie oben beschrieben.