Was ist eine Schatzdatei?
Schatzdateien bestimmen die Beutetabellen für BetterStructures-Truhen. Sie werden normalerweise [Generatoren](../Better Structures/creating_generators.md#treasurefilename) zugewiesen, können aber auch auf der Ebene einer [individuellen Baukonfiguration](../Better Structures/creating_structures.md#treasurefile) gesetzt werden.
Diese Beutetabellen sind ziemlich mächtig, erfordern aber auch Kenntnisse einiger grundlegender statistischer Konzepte zum Verständnis.
Lies hier über diese Konzepte, der Rest der Seite setzt voraus, dass du sie verstehst!
Gewichtete Wahrscheinlichkeit
BetterStructures und EliteMobs (ein weiteres Plugin desselben Autors) verwenden beide das Konzept der gewichteten Wahrscheinlichkeit in ihren Beutesystemen. Damit wird ein einfaches Problem gelöst: Wie kann man die Chance festlegen, ein Item aus einer potenziell unendlichen Liste von Items auszuwählen?
Gewichtete Wahrscheinlichkeit löst dieses Problem, indem jedem Item ein Gewicht zugewiesen wird. Wenn du 100 Items hast und jedes ein Gewicht von 1 hat, dann haben alle die gleiche Chance - 1% - ausgewählt zu werden. Wenn du ein weiteres Item hinzufügst, was die Gesamtzahl auf 101 Items bringt, und diesem letzten Item eine Chance von 1 gibst, haben alle Items immer noch die gleiche Chance - ~0,99% - ausgewählt zu werden. Wenn du dem letzten Item ein Gewicht von 2 gibst, steigt die Chance, dass es ausgewählt wird - das neue Gesamtgewicht beträgt 102, das letzte Element hat ein Gewicht von 2 und 100/102 = ~0,98%, also 0,98%+0,98% = 1,96% Chance, ausgewählt zu werden. Wenn du dem letzten Item ein Gewicht von 100 gibst, beträgt das neue Gewicht 200, und da die Hälfte dieses Gewichts dein neues Item ist, hat dein neues Item eine 50%ige Chance, ausgewählt zu werden.
Wie du siehst, ist dies gut geeignet, wenn du Listen von Hunderten von Dingen randomisieren möchtest.
Gaußsche Verteilung
Eine Gaußsche Verteilung ist eine glockenförmige mathematische Funktion.

Du fragst dich vielleicht, wie dies für das Beutesystem relevant ist. Eine Sache, die BetterStructures beim Festlegen von Beute in Truhen entscheiden muss, ist, wie viel Beute in diesen Truhen erscheint. Die Menge sollte konstant um eine bestimmte Zahl liegen, aber idealerweise nicht so vorhersehbar, dass das Öffnen einer Truhe weniger aufregend wird.
Um diesen semi-zufälligen Effekt zu erzielen, wird die Gaußsche Verteilung verwendet, um zu randomisieren, wie viele Items ausgewählt werden. Sobald diese Menge bestimmt ist, wählt die gewichtete Wahrscheinlichkeit ein Element aus der Seltenheitstabelle zufällig aus und berücksichtigt dabei die Gewichte.
Wie funktioniert also die Gaußsche Verteilung?
Glücklicherweise musst du dir keine Sorgen darüber machen, wie die Mathematik dahinter funktioniert, und kannst dich stattdessen auf die zwei Einstellungen konzentrieren, die sie modifizieren: Mittelwert und Standardabweichung.
Mittelwert
Einfach ausgedrückt setzt mean die Mitte der Gaußschen Kurve, was bedeutet, dass es die wahrscheinlichste Anzahl von Items festlegt, die in einer Truhe erscheinen. Im Wesentlichen, wenn du möchtest, dass deine Truhen normalerweise 5 Items haben, setze deinen Mittelwert auf 5.
Standardabweichung
Stell dir vor, die durchschnittliche Anzahl von Items in einer Truhe ist 5. Die standard deviation hilft zu bestimmen, wie stark sich diese Zahl von einer Truhe zur nächsten ändern kann.
Kleine Standard Deviation (z.B. 1): Das bedeutet, dass die meisten Truhen Items sehr nahe am Durchschnitt haben werden, wie 4, 5 oder 6 Items. Es ist eine vorhersehbarere Erfahrung. Wenn zum Beispiel eine Truhe eine Standardabweichung von 1 hat, kannst du erwarten, dass fast alle Truhen zwischen 4 und 6 Items haben.
Mittlere Standard Deviation (z.B. 2): Hier gibt es mehr Vielfalt. Truhen könnten 3 bis 7 Items haben. Während 5 Items immer noch häufig sind, ist es nicht ungewöhnlich, Truhen mit etwas mehr oder weniger zu finden. Mit einer Standardabweichung von 2 könntest du gelegentlich eine Truhe mit nur 3 Items finden, oder wenn du Glück hast, eine mit 7 Items.
Große Standard Deviation (z.B. 3 oder mehr): Jetzt wird es wirklich überraschend! Truhen könnten nur 2 Items oder bis zu 8 oder mehr haben. Das bedeutet, du könntest eine Truhe mit nur ein paar Items finden, aber es gibt auch eine Chance, eine Truhe voller Schätze zu finden. Zum Beispiel könnte eine Truhe mit einer Standardabweichung von 3 zwischen 2 und 8 Items haben, was jede Truhenöffnung zu einem aufregenden Glücksspiel macht.
Der Standard-Mittelwert ist 4 und die Standard-Standardabweichung ist 3.
Implementierungsdetails
Das Verständnis, wie das Schatzsystem intern funktioniert, kann dir helfen, es effektiver zu konfigurieren:
Garantierte Mindestanzahl an Items
Das System garantiert, dass immer mindestens ein Item in einer Truhe erscheint, auch wenn die Berechnung der Gaußschen Verteilung null Items ergeben würde. Dies verhindert, dass Spieler komplett leere Truhen finden.
Zufällige Slot-Platzierung
Items werden in zufällige Slots innerhalb der Truhe platziert, anstatt sequentiell vom ersten Slot zu füllen. Dies erzeugt eine natürlicher aussehende Beuteverteilung, die weniger künstlich wirkt.
Fehlerbehandlung
Wenn ein Item-Material in deiner Minecraft-Version nicht existiert (zum Beispiel wenn eine ältere Konfiguration auf einer neueren Version verwendet wird, in der Items umbenannt wurden), wird dieses Item stillschweigend übersprungen, anstatt Fehler zu verursachen. Ungültige Verzauberungen zeigen einmal eine Warnung in der Konsole und werden bei nachfolgenden Vorkommen unterdrückt, um Log-Spam zu vermeiden.
Spezielles Format
Schatzdateien haben ein spezielles Format, das so aussieht:
isEnabled: true
mean: 4.0
standardDeviation: 3.0
vanillaTreasure: BURIED_TREASURE
items:
common:
weight: 60
items:
- amount: 1-1
material: STONE_PICKAXE
procedurallyGenerateEnchantments: true
weight: 1.0
- amount: 1-1
material: STONE_SHOVEL
procedurallyGenerateEnchantments: true
weight: 1.0
rare:
weight: 30
items:
- amount: 1-1
material: ANVIL
weight: 6.0
- amount: 1-6
material: BEETROOT
weight: 6.0
epic:
weight: 10
items:
- amount: 2-10
material: DIAMOND
weight: 1.0
- amount: 1-1
material: DIAMOND_AXE
weight: 6.0
procedurallyGeneratedItemSettings:
golden_sword:
bane_of_arthropods:
minlevel: 1
maxlevel: 5
chance: 0.2
looting:
minlevel: 1
maxlevel: 3
chance: 0.2
Hinweis: Dies ist eine stark gekürzte Version. Die vollständige Standard-Schatzkonfiguration umfasst, wenn nach YAML exportiert, ungefähr 2599 Zeilen, da sie umfangreiche Beutetabellen und jede mögliche Verzauberungskombination abdeckt.
isEnabled
| Schlüssel | Werte | Standard |
|---|---|---|
isEnabled | Boolean | true |
mean
| Schlüssel | Werte | Standard |
|---|---|---|
mean | Double | 4 |
Setze den mean. Lies die Details dazu hier.
standardDeviation
| Schlüssel | Werte | Standard |
|---|---|---|
standardDeviation | Double | 3 |
Setze die standardDeviation. Lies die Details dazu hier.
vanillaTreasure
| Schlüssel | Werte | Standard |
|---|---|---|
vanillaTreasure | String | keiner |
Legt eine optionale Vanilla-Minecraft-Beutetabelle fest, die zusätzlich zur benutzerdefinierten Beute verwendet wird. Dies verwendet Bukkits LootTables-Enum-Werte (z.B. BURIED_TREASURE, SHIPWRECK_TREASURE, SIMPLE_DUNGEON). Wenn gesetzt, wird die Vanilla-Beutetabelle zusammen mit den benutzerdefinierten Items im items-Abschnitt ausgewürfelt. Wenn nicht gesetzt, wird nur benutzerdefinierte Beute verwendet.
items
Hier wird es knifflig, da viele Optionen von Admins gesetzt werden können. Schauen wir uns das Konfigurationsdatei-Beispiel von vorhin genauer an.
items:
common:
weight: 60
items:
- amount: 1-1
material: STONE_PICKAXE
procedurallyGenerateEnchantments: true
weight: 1.0
- amount: 1-1
material: STONE_SHOVEL
procedurallyGenerateEnchantments: true
weight: 1.0
rare:
weight: 30
items:
- amount: 1-1
material: ANVIL
weight: 6.0
- amount: 1-6
material: BEETROOT
weight: 6.0
Hier siehst du, dass unter dem items-Konfigurationsschlüssel eine Map mit common und rare steht. Dies sind rarities (Seltenheiten)!
rarities
Seltenheiten haben keinen festen Namen. Du kannst sie hinzufügen oder entfernen und sie so anpassen, wie du möchtest, solange du dasselbe Format verwendest.
Beachte, dass was diese Seltenheitstabellen mehr oder weniger selten macht, das weight der Beutetabelle ist!
Standardmäßig:
commonhat ein Standard-weightvon 60rarehat ein Standard-weightvon 30epichat ein Standard-weightvon 10
Das macht gewöhnliche Items 6x wahrscheinlicher als epische Items. Du kannst mehr über weights hier lesen!
Neben dem Gewicht hat jede Seltenheitstabelle ihre eigene Liste von items.
rarity items
Seltenheits-Items sind eine Map-Liste, die alle Items auflistet, die die Seltenheitstabelle hat.
Diese Items haben die folgenden Einstellungen:
| Schlüssel | Werte | Standard |
|---|---|---|
amount | min-max Integer | variabel |
material | Material | variabel |
procedurallyGenerateEnchantments | Boolean | variabel |
weight | Double | variabel |
amount
Legt die Dropmenge fest. Dies kann als Bereich amount: MIN-MAX oder als einzelner Wert amount: VALUE für feste Mengen ausgedrückt werden. Beispiele:
- Variable Menge:
amount: 1-5(droppt zwischen 1 und 5 Items) - Feste Menge:
amount: 3(droppt immer genau 3)
material
Legt das Material anhand der Spigot API-Namen des potenziell zu droppenden Items fest.
Spezialfall - serialized
Bei Verwendung des lootify-Befehls liefert lootify anstelle eines Materials eine serialized-Einstellung. Diese wird automatisch vom Plugin generiert und sollte nicht manuell erstellt werden. Sie ist in einem nicht menschenlesbaren Format.
mmoitem
Legt ein benutzerdefiniertes Item vom MMOItems-Plugin fest. Dies ist eine Alternative zum material-Feld für die Verwendung benutzerdefinierter Items anstelle von Vanilla-Minecraft-Materialien.
Das Format ist: mmoitem: TYPE@ITEMNAME
Beispiel:
- amount: 1-1
mmoitem: SWORD@Excalibur
weight: 1.0
Hinweis: Dies erfordert die Installation des MMOItems-Plugins. Wenn MMOItems nicht verfügbar ist oder das angegebene Item nicht existiert, wird der Eintrag mit einer Warnung in den Konsolenprotokollen übersprungen.
info
Optionales Feld zum Hinzufügen von Notizen oder Kommentaren zu Item-Einträgen. Dieses Feld wird vom Plugin komplett ignoriert und existiert ausschließlich für administrative Dokumentationszwecke. Verwende es, um dich daran zu erinnern, warum bestimmte Items auf bestimmte Weise konfiguriert sind.
Beispiel:
- amount: 1-1
material: DIAMOND_SWORD
weight: 1.0
info: "Rare drop for completing the dungeon"
weight
Legt das Gewicht für die gewichtete Chance fest. Mehr dazu hier.
procedurallyGenerateEnchantments
Legt fest, ob das Item basierend auf den Einstellungen in procedurallyGeneratedItemSettings prozedural generiert werden soll. Beachte, dass dies basierend auf den Einstellungen dazu führen kann, dass ein Item ohne Verzauberungen generiert wird.
procedurallyGeneratedItemSettings
Schauen wir uns unser Konfigurationsdatei-Beispiel noch einmal an:
procedurallyGeneratedItemSettings:
golden_sword:
bane_of_arthropods:
minlevel: 1
maxlevel: 5
chance: 0.2
looting:
minlevel: 1
maxlevel: 3
chance: 0.2
Wie du siehst, listet diese Datei Materialtypen auf, gefolgt von Verzauberungen und dann Mindest- und Höchststufen sowie einer Chance.
Beachte, dass du in diesen Einstellungen keine benutzerdefinierten Materialien von anderen Plugins hinzufügen kannst, und du wahrscheinlich keine benutzerdefinierten Verzauberungen von anderen Plugins hinzufügen kannst, es sei denn, deren Autor sagt ausdrücklich, dass er sein System kompatibel gemacht hat.
Bezüglich der Verzauberungseinstellungen:
| Schlüssel | Werte | Standard |
|---|---|---|
minlevel | Integer | variabel |
maxlevel | Integer | variabel |
chance | Chance | variabel |
minlevel
Legt die minimale Verzauberungsstufe fest.
maxlevel
Legt die maximale Verzauberungsstufe fest.
chance
Legt die Wahrscheinlichkeit fest, dass die Verzauberung angewendet wird, als Dezimalwert zwischen 0,0 (nie) und 1,0 (immer). Zum Beispiel bedeutet ein Wert von 0,2 eine 20%ige Chance. Dies verwendet eine einfache Wahrscheinlichkeitsprüfung, nicht gewichtete Wahrscheinlichkeit wie das Item-Auswahlsystem.
Fehlerbehebung
Items erscheinen nicht in Truhen
- Überprüfe, ob die Schatzdatei
isEnabled: truehat - Prüfe die Konsole auf Warnungen über ungültige Materialien oder Items
- Stelle sicher, dass MMOItems installiert ist, wenn benutzerdefinierte Items verwendet werden
- Materialien müssen exakte Spigot-API-Namen verwenden
Verzauberungen werden nicht angewendet
- Setze
procedurallyGenerateEnchantments: truebeim Item - Überprüfe, ob Verzauberungsnamen mit Minecrafts Namespaced Keys übereinstimmen
- Prüfe, ob Min-/Max-Stufen innerhalb der gültigen Bereiche für diese Verzauberung liegen
- Denke daran, dass
chance-Werte Wahrscheinlichkeiten sind (0,2 = 20%), keine Garantien
Benutzerdefinierte Plugin-Verzauberungen funktionieren nicht
Nur benutzerdefinierte Verzauberungen, die explizit BetterStructures-Integration unterstützen, werden funktionieren. Frage beim Autor des Verzauberungs-Plugins nach der Kompatibilität. Ungültige Verzauberungen zeigen eine Warnung in der Konsole mit diesem Hinweis.
Leere Truhen erscheinen
Dies sollte nicht passieren, da das System mindestens ein Item garantiert. Wenn du leere Truhen siehst, überprüfe:
- Ob die Truhe von BetterStructures befüllt wird (nicht von einem anderen Plugin)
- Ob alle Items in deiner Schatzdatei gültig sind (prüfe Konsolenwarnungen)
- Ob die Schatzdatei tatsächlich geladen wird (prüfe die Startprotokolle)