← Alle Artikel

Wie Minecraft-Loot-Tabellen wirklich würfeln

Die meisten Loot-Tabellen, die „nicht funktionieren“, sind strukturell völlig in Ordnung. Nur die Chancen sind nicht die, die der Autor im Kopf hatte — weil Gewicht nicht das bedeutet, wonach es aussieht. Diese Seite beschreibt, wie eine Tabelle tatsächlich ausgewertet wird, in genau der Reihenfolge, in der das Spiel es tut.

Loot-Tabellen-Generator öffnen

Pools würfeln unabhängig

Eine Loot-Tabelle enthält eine Liste von Pools, und jeder wird getrennt ausgewertet. Das ist das Nützlichste, was man darüber wissen kann, denn genau so drückt man „immer eine Waffe, dazu zwei oder drei zufällige Vorräte, plus eine seltene Chance auf etwas Besonderes“ aus — drei Pools, nicht eine raffinierte Liste.

Innerhalb eines Pools gibt rolls an, wie oft gezogen wird. Das kann eine feste Zahl oder ein Bereich sein:

"rolls": 1

"rolls": { "type": "minecraft:uniform", "min": 2, "max": 4 }

Jeder Roll wählt genau einen Eintrag aus der Liste dieses Pools. Vier Rolls auf einem Pool mit drei Items können durchaus viermal dasselbe Item liefern — Rolls sind unabhängig, es ist kein Blatt, das ohne Zurücklegen ausgeteilt wird.

Gewicht ist ein Anteil, kein Prozentwert

Hier gehen die meisten Tabellen schief. Gewicht ist keine Chance von 100. Es ist ein Anteil am Gesamtgewicht dieses Pools.

iron_ingot  Gewicht 10
gold_ingot  Gewicht  5
diamond     Gewicht  1

Die Summe ist 16, also kommt Eisen in 10/16 der Fälle — etwa 62 %, nicht 10 %. Füge einen vierten Eintrag mit Gewicht 84 hinzu, und Eisen fällt auf 10/100, ohne dass du seine Zahl angefasst hast. Jedes Gewicht in einem Pool ist relativ zu seinen Nachbarn: Ein zusätzlicher Eintrag bepreist den ganzen Rest des Pools still neu.

Wer einen echten Prozentwert will, braucht einen anderen Mechanismus: eine random_chance-Bedingung am Eintrag.

"conditions": [
  { "condition": "minecraft:random_chance", "chance": 0.15 }
]

Das sind echte 15 %, unabhängig vom Gewicht ausgewertet. Beide greifen so ineinander, dass man es bewusst entscheiden sollte: Der Eintrag muss zuerst die gewichtete Auswahl gewinnen, und erst danach findet der 15-%-Wurf statt.

Die Anzahl ist ein eigener Schritt nach der Auswahl

Zu bestimmen, welches Item fällt, und zu bestimmen, wie viele, sind verschiedene Vorgänge. Die Stapelgröße kommt aus einer Funktion, die nach der Auswahl des Eintrags angewendet wird:

{
  "type": "minecraft:item",
  "name": "minecraft:iron_ingot",
  "weight": 10,
  "functions": [
    {
      "function": "minecraft:set_count",
      "count": { "type": "minecraft:uniform", "min": 1, "max": 4 }
    }
  ]
}

Ohne set_count bekommst du genau eines. Das Objekt unter count ist ein Number Provider — dieselbe Struktur, die auch rolls verwendet. Einmal verstanden, deckt es beides ab.

Der Tabellentyp ist ein Vertrag, kein Etikett

Der type am Anfang der Datei erklärt, in welchem Kontext die Tabelle gewürfelt wird, und das Spiel nimmt dich beim Wort. Eine minecraft:chest-Tabelle hat weder Töter noch Opfer, deshalb ist eine Bedingung, die nach dem gestorbenen Wesen fragt, dort nicht bloß nutzlos — sie macht die Tabelle für diesen Kontext ungültig.

TypWird gewürfelt, wenn
minecraft:chestEine Strukturtruhe generiert wird oder /loot genutzt wird
minecraft:entityEin Mob stirbt
minecraft:blockEin Block abgebaut wird
minecraft:fishingEtwas an der Angel hängt
minecraft:giftEin Dorfbewohner oder eine Katze ein Geschenk bringt

Verhält sich eine Tabelle im Test richtig, löst aber in der Welt nie aus, prüfe, ob ihr Typ dazu passt, wie sie tatsächlich ausgelöst wird.

Testen, ohne eine Truhe zu suchen

Du musst kein echtes Dungeon finden, um deine Chancen zu sehen. Der Befehl /loot würfelt eine vorhandene Tabelle auf Zuruf:

/loot give @s loot harbor:harbor_dungeon

Der Klarheit halber, weil der Name in die Irre führt: /loot liest eine Tabelle, er erstellt keine. Es gibt keinen Befehl, der eine Loot-Tabelle schreibt — die Datei muss zuerst in einem Datapack existieren. Wer noch keines gebaut hat: die Anleitung Datapacks statt Befehle erklärt, warum, und der Datapack-Generator legt den Ordner an.

Führe ihn zwanzigmal hintereinander aus, dann zeigt sich die Verteilung schnell. Das ist auch der schnellste Weg, ein falsch gesetztes Gewicht zu bemerken.

Wenn die Tabelle schlicht nie gelesen wird

Zwei Fehler sehen von innerhalb des Spiels gleich aus und haben mit deinem JSON nichts zu tun.

Der erste ist der Ordner. Minecraft 1.21 hat loot_tables in loot_table umbenannt, Singular. Auf 1.21+ wird eine Datei im alten Ordner nie geladen, und nichts warnt dich — das Pack gilt weiterhin als aktiviert.

Der zweite ist die ID. Die Datei unter data/harbor/loot_table/harbor_dungeon.json wird als harbor:harbor_dungeon angesprochen. Der Namensraum kommt aus dem Ordner unter data, nicht aus dem Dateinamen, und eine Abweichung erzeugt hier einen „unknown loot table“-Fehler statt Stille — was im Vergleich zum ersten Fall geradezu gnädig ist.

Wie es weitergeht

Der Loot-Tabellen-Generator baut diese Strukturen mit bereits korrekt geformten Number Providern und zeigt den Pfad, unter den die Datei gehört. Für den Container drumherum siehe den Datapack-Generator; damit die herausfallenden Items interessanter werden, deckt der Custom-Item-Builder Namen, Lore und versteckte IDs ab.