Es gibt keinen /loottable-Befehl
Wer hier den Item- oder Trank-Builder benutzt hat, kennt den Ablauf: Formular ausfüllen, eine /give-Zeile kopieren, in den Chat einfügen, fertig. Das klappt, weil ein Item ein Ding ist, das dir das Spiel sofort in die Hand geben kann.
Eine Loot-Tabelle ist kein Ding, das man hält. Sie ist eine Regel: „wenn diese Truhe generiert wird, würfle diese Chancen“. Ein Rezept ist eine Regel über das Handwerksraster. Ein Fortschritt ist eine Regel darüber, wann etwas als erreicht gilt. Regeln müssen existieren, bevor der Moment eintritt, für den sie gelten, deshalb liest das Spiel sie beim Laden aus Dateien auf der Festplatte. Es gibt weder /loottable noch /recipe add noch irgendeinen Chat-Befehl, der sie anlegt — denn bis du ihn tippen könntest, ist der Moment, den er regelt, längst vorbei.
Darauf läuft der ganze Unterschied hinaus:
| Befehle | Datapacks | |
|---|---|---|
| Zustellung | In Chat oder Befehlsblock einfügen | Dateien in einem Ordner, den die Welt lädt |
| Gut für | Einmalige Aktionen: Item geben, Bossbar setzen, Nachricht senden | Dauerhafte Regeln: Loot, Rezepte, Fortschritte, wiederverwendbare Funktionen |
| Wirkt | Sofort | Beim Laden der Welt oder bei /reload |
| Übersteht Neustart | Nur die Wirkung | Ja, die Regel selbst bleibt |
Was ein Datapack wirklich ist
Ein Ordner mit einer pack.mcmeta ganz oben und einem data-Verzeichnis darunter. Mehr wird nicht verlangt. Minecraft akzeptiert ihn gezippt oder entpackt, und er gehört hierhin:
.minecraft/saves/<Welt>/datapacks/<dein-pack>/
pack.mcmeta
data/
harbor/
function/
load.mcfunction
loot_table/
example_chest.json
minecraft/
tags/function/
load.json
Hier tauchen zwei Namensräume auf, und sie haben verschiedene Aufgaben. harbor ist deiner — er verhindert, dass deine Dateien mit Vanilla oder einem anderen Pack kollidieren, und wird Teil jeder ID, die du referenzierst, etwa harbor:load. Der minecraft-Namensraum dient nur dazu, sich an etwas anzuhängen, das Vanilla bereits definiert — deshalb liegt der Load-Tag dort und nicht in deinem.
Die 1.21-Umbenennung, die Packs still zerlegt
Dieser Punkt verdient einen eigenen Abschnitt, weil er auf besonders unangenehme Art scheitert. In 1.21 hat Mojang alle Inhaltsverzeichnisse vom Plural in den Singular umbenannt:
functions→functionadvancements→advancementloot_tables→loot_tablerecipes→recipepredicates→predicateitem_modifiers→item_modifierstructures→structuretags/functions→tags/function
Das Fehlerbild ist übel: Ein Pack mit den alten Plural-Namen lädt auf 1.21+ trotzdem. /datapack list zeigt es als aktiviert. Keine Fehlermeldung. Das Spiel schaut schlicht nie in diese Ordner, also läuft nichts von dem, was du geschrieben hast. Damit verlieren Leute ganze Abende — meist während sie einer Anleitung von vor 1.21 folgen.
Wenn dein Pack aktiviert ist und einfach gar nichts tut, prüfe zuerst die Ordnernamen, bevor du am JSON darin debuggst.
pack_format ist eine Versionssperre, keine Versionsnummer
Die Zahl in pack.mcmeta sagt Minecraft, in welchem Datenformat deine Dateien geschrieben sind. Stimmt sie nicht, wird das Pack als inkompatibel markiert.
{
"pack": {
"pack_format": 61,
"description": "Regeln des Hafenviertels"
}
}
| Minecraft-Version | Datapack-Format |
|---|---|
| 1.20 – 1.20.1 | 15 |
| 1.20.2 | 18 |
| 1.20.3 – 1.20.4 | 26 |
| 1.20.5 – 1.20.6 | 41 |
| 1.21 – 1.21.1 | 48 |
| 1.21.2 – 1.21.3 | 57 |
| 1.21.4 | 61 |
| 1.21.5 | 71 |
| 1.21.6 | 80 |
| 1.21.7 – 1.21.8 | 81 |
Beachte: Das sind die Nummern für Datapacks. Resource-Packs haben eine eigene Skala, ein aus einer Resource-Pack-Anleitung kopiertes pack_format ist hier also falsch.
load und tick
Zwei Funktions-Hooks decken das meiste ab, was ein Pack von allein tun muss. Du schreibst eine .mcfunction-Datei — reiner Text, ein Befehl pro Zeile, ohne führenden Schrägstrich — und richtest dann einen Tag darauf.
load läuft einmal beim Laden des Packs und erneut bei jedem /reload. Dort richtet man Scoreboards, Konstanten und den Startzustand ein. tick läuft zwanzigmal pro Sekunde, dauerhaft, solange das Pack aktiv ist. Das ist mächtig und der einfachste Weg, die Serverleistung zu ruinieren — greif also nur dazu, wenn wirklich etwas laufend geprüft werden muss.
Die Verbindung stellt erst die Tag-Datei her:
// data/minecraft/tags/function/load.json
{
"values": ["harbor:load"]
}
Ohne diesen Tag existiert die Funktion zwar und lässt sich manuell mit /function harbor:load aufrufen, aber nichts startet sie für dich.
Installieren und prüfen, ob es geklappt hat
- Lege den Pack-Ordner oder das ZIP nach
<Welt>/datapacks/. Auf einem Server liegt dieser Ordner nebenlevel.dat. - Führe im Spiel
/reloadaus. Ein Neustart ist nicht nötig. - Führe
/datapack listaus. Dein Pack sollte in der Liste der aktivierten erscheinen.
Fehlt es in dieser Liste, ist das Problem strukturell: ein falsches pack_format, eine fehlerhafte pack.mcmeta oder eine zusätzliche Ordnerebene, weil das ZIP aus dem übergeordneten Verzeichnis erstellt wurde statt aus dem Inhalt des Packs selbst. Letzteres passiert oft: pack.mcmeta muss ganz oben im Archiv liegen, nicht in einem weiteren Ordner.
Steht es in der Liste, passiert aber nichts, ist die Struktur in Ordnung und das Problem steckt darin: Plural-Ordnernamen auf 1.21+, ein Tippfehler im Namensraum innerhalb eines Tags, oder JSON, das als Text gültig ist, aber nicht die Form hat, die das Spiel erwartet.
Wie es weitergeht
Der Datapack-Generator baut dieses ganze Gerüst für dich und wechselt Ordnernamen und pack_format automatisch mit der gewählten Version, womit die zwei häufigsten Fehlerquellen wegfallen. Danach deckt die Referenz zur Resource-Pack-Struktur die andere Hälfte des Ökosystems ab — den Teil, der das Aussehen des Spiels ändert statt seines Verhaltens.