Beute- und Handelstabellenfunktionen
Beute- und Handelstabellen nutzen einen ähnlichen Funktionssatz. Die meisten Funktionen sind für beide gedacht, manche funktionieren jedoch nur innerhalb eines bestimmten Typs. Es gibt allgemeine Einschränkungen für Beute- und Handelstabellen. Beispielsweise ist es nicht möglich, can_place_on
oder can_destroy
über Beute- oder Handelstabellen einem Gegenstand hinzuzufügen. Nachfolgend findest du die verschiedenen verfügbaren Funktionen und Beispiele für ihre Verwendung.
In diesem Tutorial wird Folgendes beschrieben:
- Eine Vielzahl von Beute- und Handelstabellenfunktionen und wie diese einen Gegenstand ändern können
Voraussetzungen
Es wird empfohlen, vor Beginn dieses Tutorials Folgendes abzuschließen:
Verzaubern
Diese verschiedenen Verzauberungsfunktionen ermöglichen dir, einzigartige Verzauberungsparameter einzustellen.
enchant_book_for_trading (nur Handelstabelle)
Diese Funktion verzaubert ein Buch mit dem Algorithmus für das Verzaubern von Gegenständen, die von Dorfbewohnern verkauft werden. Sie weist vier Parameter auf: base_cost
, base_random_cost
, per_level_random_cost
und per_level_cost
.
{
"item": "minecraft:book",
"quantity": 1,
"functions": [
{
"function": "enchant_book_for_trading",
"base_cost": 2,
"base_random_cost": 5,
"per_level_random_cost": 10,
"per_level_cost": 3
}
]
}
Derzeit wirkt sich die Definition dieser Parameter nicht auf das Ergebnis der Verzauberung aus. Die oben genannten Standardwerte sind derzeit hartcodiert. Künftig wirst du diese Werte verändern können, um einzugrenzen, welche Verzauberungen und Verzauberungsstufen diese Funktion zur Folge hat.
enchant_random_gear
Verzaubert einen Gegenstand mit demselben Algorithmus, der verwendet wird, wenn Ausrüstung verzaubert wird, mit der Vanilla-Kreaturen gespawnt werden. Benötigt einen chance
-Modifikator, um den Algorithmus zu manipulieren. Beachte, dass ein chance
-Modifikator von 1,0 keine einhundertprozentige Wahrscheinlichkeit bedeutet, dass die Ausrüstung verzaubert wird. Die Wahrscheinlichkeit ändert sich vielmehr auf der Grundlage des Schwierigkeitsgrads. In den Schwierigkeitsgraden „Friedlich“ und „Einfach“ liegt die Wahrscheinlichkeit immer bei 0%. Im Schwierigkeitsgrad „Schwer“ bedeutet eine chance
von 1,0 100%, die Wahrscheinlichkeit liegt jedoch bei etwa zwei Dritteln des Werts im Schwierigkeitsgrad „Normal“.
{
"type": "item",
"name": "minecraft:chainmail_boots",
"weight": 1,
"functions": [
{
"function": "enchant_random_gear",
"chance": 0.25
}
]
}
Die Erhöhung von chance
auf einen Wert über 1,0 kann dabei helfen, die Abnahme der Wahrscheinlichkeit im Schwierigkeitsgrad „Normal“ zu umgehen. Wenn du beispielsweise chance
auf 2,0 einstellst, wird der Gegenstand sowohl im Schwierigkeitsgrad „Normal“ als auch im Schwierigkeitsgrad „Schwer“ immer verzaubert.
enchant_randomly
Generiert eine zufällige Verzauberung, die mit dem Gegenstand kompatibel ist. Unterstützt den optionalen boolean
-Wert (true/false) für den Schatz, damit Schatzverzauberungen ein- und ausgeschaltet werden können. Schatzverzauberungen sind Verzauberungen, die nicht durch den Zaubertisch bewirkt werden können, einschließlich Eisläufer, Reparatur, Seelenflitzer, Fluch der Bindung und Fluch des Verschwindens.
{
"type": "item",
"name": "minecraft:leather_helmet",
"weight": 1,
"functions": [
{
"function": "enchant_randomly",
"treasure": true
}
]
}
enchant_with_levels
Wendet eine Verzauberung an wie wenn sie durch einen Zaubertisch ausgelöst worden wäre. Dabei wird eine minimale und eine maximale EP-Stufe verwendet, festgelegt durch den Parameter levels
. Der boolesche treasure
-Wert (true/false) ermöglicht die Verwendung von reinen Schatzverzauberungen. Schatzverzauberungen sind Verzauberungen, die nicht durch den Zaubertisch bewirkt werden können, einschließlich Eisläufer, Reparatur, Seelenflitzer, Fluch der Bindung und Fluch des Verschwindens.
{
"type": "item",
"name": "minecraft:diamond_sword",
"weight": 1,
"functions": [
{
"function": "enchant_with_levels",
"treasure": true,
"levels": {
"min": 20,
"max": 39
}
}
]
}
specific_enchants
Mit dieser Funktion kannst du eine Liste bestimmter Verzauberungen für einen Gegenstand festlegen. Weiterhin kannst du damit Verzauberungen auf Gegenstände anwenden, die normalerweise im Spiel nicht verzaubert werden könnten.
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "specific_enchants",
"enchants": [
"knockback",
"fire_aspect"
]
}
]
}
Du kannst die Verzauberungen auch als Objekte definieren, um gezielt eine Verzauberungsstufe festzulegen. Maximale Verzauberungsstufen sind hartcodiert und können nicht überschrieben werden.
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "specific_enchants",
"enchants": [
{
"id": "knockback",
"level": 1
},
{
"id": "unbreaking",
"level": 3
}
]
}
]
}
Ändern von Gegenständen
Mit den folgenden Funktionen kannst du die Ergebnisse auf unterschiedliche Weise ändern. Beispielsweise kannst du festlegen, wie viele Exemplare eines Gegenstands zurückgegeben werden, den Datenwert oder sogar den Namen und den Hintergrund eines Gegenstands festlegen.
looting_enchant (nur Beutetabelle)
Mit dieser Funktion kannst du die Anzahl der zurückgegebenen Gegenstände ändern, wenn ein Objekt von einem Gegenstand mit der Plünderungsverzauberung getötet wird. Aus diesem Grund funktioniert sie nur mit Beutetabellen, und auch dann nur, wenn die Beutetabelle durch den Tod eines Objekts aufgerufen wird.
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "looting_enchant",
"count": {
"min": 0,
"max": 1
}
}
]
}
random_block_state
Damit kannst du den Block-Zustand des entstandenen Gegenstands randomisieren. Beispielsweise kann der folgende Beispielcode Stein (0), Granit (1), polierten Granit (2), Diorit (3), polierten Diorit (4) oder Andesit (5) fallen lassen.
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "random_block_state",
"block_state": "stone_type",
"values": {
"min": 0,
"max": 5
}
}
]
}
random_aux_value
Ähnlich wie random_block_state
ermöglicht diese Funktion die Auswahl eines zufälligen Hilfswerts für einen Gegenstand. Das folgende Beispiel führt zu einem zufällig gefärbten Farbstoff.
{
"type": "item",
"name": "minecraft:dye",
"weight": 1,
"functions": [
{
"function": "random_aux_value",
"values": {
"min": 0,
"max": 15
}
}
]
}
set_actor_id
Diese Funktion ist nur mit einem Spawn-Ei möglich und wird verwendet, um die Objekt-ID dieses Spawn-Eis festzulegen.
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "set_actor_id",
"id": "compass:cool_entity"
}
]
}
Du kannst auch die Objekt-ID des Objekts übernehmen, die dieser Beutetabelle zugeordnet ist (d.h. ein Kaninchen dazu bringen, ein Kaninchen-Spawn-Ei fallen zu lassen), indem du die id
weglässt.
{
"type": "item",
"name": "minecraft:spawn_egg",
"weight": 1,
"functions": [
{
"function": "set_actor_id"
}
]
}
Denke daran, dass bei Verwendung von set_actor_id
auf die Beutetabelle einer Truhe ohne den id
-Wert das Spawn-Ei vom Objekt generiert wird, das die Truhe öffnet (Spieler). Ein Spieler-Spawn-Ei spawnt einen „Spieler“, der lediglich herumsteht und MoLang-Fehler auslöst (da versucht wird, die Verhaltensdatei des Spielers und die Controller des Spielers zu verwenden). Wenn du eine Truhe aufbrichst, in der eine Beutetabelle enthalten ist, die eine von set_actor_id
übernommene ID verwendet, wird ein Standard-Spawn-Ei ausgegeben, das nichts spawnt.
set_banner_details
Diese Funktion funktioniert nur für Banner und unterstützt derzeit nur den Banner-type
1
. Der Banner-type
1
führt zu einem Illager-Banner.
{
"type": "item",
"name": "minecraft:banner",
"weight": 1,
"functions": [
{
"function": "set_banner_details",
"type": 1
}
]
}
set_book_contents
Mit dieser Funktion kannst du den Inhalt eines Buchs festlegen.
{
"type": "item",
"name": "minecraft:written_book",
"functions": [
{
"function": "set_book_contents",
"author": "Steve",
"title": "Creator Woes",
"pages": [
"Once upon a time there were some marketplace partners that had to edit items using NBT. And it made them sad.",
"Then the Bedrock team added the ability to customize items from JSON and everyone rejoiced."
]
}
]
}
Du kannst mit rawtext
auch den Inhalt des Buchs lokalisieren. Denke bei der Verwendung von rawtext
daran, für Sonderzeichen wie "
und \
stets ein Escape-Zeichen (\
) zu verwenden.
{
"type": "item",
"name": "minecraft:written_book",
"functions": [
{
"function": "set_book_contents",
"author": "Steve",
"title": "Creator Woes",
"pages": [
"{\"rawtext\":[ {\"translate\":\"custom.book.page.1\"}]}",
"{\"rawtext\":[ {\"translate\":\"custom.book.page.2\"}]}"
]
}
]
}
Denke daran, dass du rawtext
nur für den Inhalt des Buchs (pages
) zum Zeitpunkt des Schreibens verwenden kannst – rawtext
funktioniert nicht für die Tags author
und title
.
set_count
Legt die Anzahl der zurückgegebenen Gegenstände fest, indem der Wert count
angegeben wird. Dies könnte wie in diesem Beispiel eine exakte Zahl sein:
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": 5
}
]
}
Es kann sich aber auch um einen Minimum/Maximum-Bereich handeln:
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 6
}
}
]
}
set_damage
Legt den Prozentsatz der verbleibenden Haltbarkeit für Gegenstände mit Haltbarkeit fest, indem der Wert damage
angegeben wird. 1,0 bedeutet 100% verbleibende Haltbarkeit (unbeschädigt), während 0,0 bedeutet, dass die Haltbarkeit abgelaufen ist.
Du kannst hier einen genauen Wert angeben– wie im folgenden Beispiel, in dem wir für den Gegenstand eine verbleibende Haltbarkeit von 50% festgelegt haben.
{
"type": "item",
"name": "minecraft:iron_leggings",
"weight": 1,
"functions": [
{
"function": "set_damage",
"damage": 0.5
}
]
}
Du kannst aber auch einen Minimum- und einen Maximum-Wert angeben, zwischen denen das Spiel eine zufällige Auswahl trifft. Im nächsten Beispiel wird die verbleibende Haltbarkeit auf einen beliebigen Wert zwischen 30% und 90% gesetzt.
{
"type": "item",
"name": "minecraft:iron_leggings",
"weight": 1,
"functions": [
{
"function": "set_damage",
"damage": {
"min": 0.3,
"max": 0.9
}
}
]
}
set_data
Legt den Datenwert eines Blocks oder Gegenstands auf eine exakte ID fest. Das folgende Beispiel führt zu einem polierten Dioritblock.
{
"type": "item",
"name": "minecraft:stone",
"functions": [
{
"function": "set_data",
"data": 4
}
]
}
set_data_from_color_index
Übernimmt den Datenwert des entstandenen Gegenstands vom Farbindex des zugeordneten Objekts. Ein Beispiel im Spiel wäre ein rosafarbenes Schaf, das bei seinem Tod rosafarbene Wolle fallen lässt. Wenn für das zugeordnete Objekt kein Farbindex angegeben ist (oder wenn es in der Beutetabelle einer Truhe verwendet wird), führt dies immer zum Datenwert0.
{
"type": "item",
"name": "minecraft:wool",
"weight": 1,
"functions": [
{
"function": "set_data_from_color_index"
}
]
}
set_lore
Mit dieser Funktion kannst du den Hintergrund eines Gegenstands festlegen. Jede Zeile innerhalb des Hintergrund-Objekts stellt eine einzelne Textzeile dar. Derzeit gibt es keine Unterstützung für rawtext
.
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "set_lore",
"lore": [
"Big Stick has been handed down",
"for generations from King to Prince",
"until it went missing four score ago"
]
}
]
}
set_name
Mit dieser Funktion kannst du den Namen eines Gegenstands festlegen. Derzeit gibt es keine Unterstützung für rawtext
.
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "set_name",
"name": "Big Stick"
}
]
}
Verschiedenes
Nachfolgend findest du Funktionen, die keiner Kategorie angehören.
fill_container
Mit dieser Funktion kannst du die Beutetabelle für eine Truhe definieren. Wenn der Gegenstand generiert wird und der Spieler ihn platziert, ist er voll mit dem Inhalt, der in der referenzierten Beutetabelle festgelegt ist.
Beutetabellen für Truhen werden zum Zeitpunkt des Öffnens oder Aufbrechens generiert. Man könnte es als „Schrödingers Kiste“ bezeichnen. Der Inhalt der Truhe wird erst dann festgelegt, wenn du hineinsiehst.
{
"type": "item",
"name": "minecraft:chest",
"functions": [
{
"function": "fill_container",
"loot_table": "loot_tables/chests/simple_dungeon.json"
}
]
}
Du solltest immer set_name
verwenden, um die Truhe zu benennen, wenn du fill_container
verwendest. Wenn du dies nicht tust, sieht die entstandene Truhe im Inventar des Spielers genau wie eine normale leere Truhe aus.
exploration_map
Verwandelt eine normale Karte in eine Schatzkarte, die den Standort eines versteckten Schatzes markiert. Der Wert destination
definiert, welche Art von Schatzkarte das Ergebnis ist.
{
"type": "item",
"name": "minecraft:map",
"weight": 1,
"functions": [
{
"function": "exploration_map",
"destination": "buriedtreasure"
}
]
}
Zurzeit kannst du aus den folgenden Zielen wählen:
Ziel |
---|
Vergrabener Schatz |
Endsiedlung |
Festung |
Villa |
Mine |
Monument |
Plünderer-Außenposten |
Ruinen |
Schiffswrack |
Stronghold |
Tempel |
Dorf |
furnace_smelt (nur Beutetabelle)
Wenn der Gegenstand, der zurückgegeben werden soll, ein Schmelz-Handwerksrezept hat und die Beutetabelle durch ein mit Feuer getötetes Objekt ausgelöst wird (Verbrennung, Feuerzeug, Lava usw.), ist das Ergebnis die geschmolzene Version des Gegenstands. Aufgrund dieser Anforderungen funktioniert diese Funktion nicht im Dorfhandel oder mit Truhen. Diese Funktion kann nur in Verbindung mit dem Verhalten minecraft:loot
verwendet werden.
Im folgenden Beispiel wird ein Steinblock fallen gelassen, wenn das Objekt durch Feuer getötet wird, und Bruchstein, wenn dies nicht der Fall ist.
{
"type": "item",
"name": "minecraft:cobblestone",
"weight": 1,
"functions": [
{
"function": "furnace_smelt"
}
]
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für