Fonctions des tables de butin et d'échanges
Les tables de butin et d'échange partagent un ensemble de fonctions similaire. Bien que la plupart des fonctions sont valables pour les deux, certaines ne fonctionnent qu'avec un type spécifique. Il y a des limitations aux tables de butin/d'échanges en général: par exemple, il n'est pas possible d'ajouter can_place_on
ou can_destroy
sur un objet au travers des tables de butin ou d'échanges. Consultez les éléments ci-dessous pour prendre connaissance des différentes fonctions disponibles et d'un exemple sur la façon dont elles peuvent être utilisées.
Dans ce tutoriel, vous apprendrez les éléments suivants:
- Plusieurs fonctions des tables de butin et d'échanges et la façon elles peuvent modifier un objet.
Conditions requises
Nous vous recommandons de compléter les étapes suivantes avant de commencer ce tutoriel.
Enchantements
Ces différentes fonctions d'enchantement vous permettent de définir des paramètres d'enchantement uniques.
enchant_book_for_trading (uniquement pour table d'échanges)
Cette fonction enchante un livre en utilisant l'algorithme d'enchantement des objets vendus par les villageois. Quatre paramètres sont nécessaires: base_cost
, base_random_cost
, per_level_random_cost
et 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
}
]
}
À ce stade, la définition de ces paramètres n'affectera pas l'enchantement reçu. Actuellement, les valeurs par défaut ci-dessus sont codées en dur. À l'avenir, vous pourrez ajuster ces valeurs pour permettre d'affiner les enchantements et leurs niveaux résultant de cette fonction.
enchant_random_gear
Cette fonction enchante un objet à l'aide du même algorithme utilisé lors de l'enchantement de l'équipement avec lequel les créatures apparaissent. Un modificateur chance
est nécessaire pour manipuler l'algorithme. Notez qu'un modificateur chance
de 1,0 ne signifie pas qu'il y a 100% de chances que l'équipement soit enchanté. Au contraire, la probabilité est modifiée en fonction de la difficulté. En niveau de difficulté Paisible et Facile, la probabilité sera toujours de 0% quoi qu'il arrive. En niveau de difficulté Difficile, une chance
de 1,0 sera de 100%, mais la probabilité est d'environ de 2/3 de celle en niveau difficulté Normal.
{
"type": "item",
"name": "minecraft:chainmail_boots",
"weight": 1,
"functions": [
{
"function": "enchant_random_gear",
"chance": 0.25
}
]
}
Le fait d'augmenter la chance
à un nombre supérieur à 1,0 peut aider à contourner la diminution des chances en niveau de difficulté Normal. Par exemple, paramétrer chance
sur 2.0 enchantera toujours l'objet aussi bien en niveau de difficulté Normal que Difficile.
enchant_randomly
Génère un enchantement aléatoire compatible avec l'objet. Est compatible avec le boolean
trésor optionnel (vrai/faux) pour permettre l'activation et la désactivation des enchantements de trésor. Les enchantements de trésor sont ceux qui ne peuvent pas être obtenus via la table d'enchantements, notamment les enchantements Semelles givrantes, Raccommodage, Agilité des âmes, Malédiction du lien éternel et Malédiction de disparition.
{
"type": "item",
"name": "minecraft:leather_helmet",
"weight": 1,
"functions": [
{
"function": "enchant_randomly",
"treasure": true
}
]
}
enchant_with_levels
Applique un enchantement comme s'il provenait d'une table d'enchantement, à l'aide d'un niveau d'XP minimum et maximum défini via le paramètre levels
. Le booléen treasure
(vrai/faux) permettra d'utiliser des enchantements de trésor uniquement. Les enchantements de trésor sont ceux qui ne peuvent pas être obtenus via la table d'enchantements, notamment les enchantements Semelles givrantes, Raccommodage, Agilité des âmes, Malédiction du lien éternel et Malédiction de disparition.
{
"type": "item",
"name": "minecraft:diamond_sword",
"weight": 1,
"functions": [
{
"function": "enchant_with_levels",
"treasure": true,
"levels": {
"min": 20,
"max": 39
}
}
]
}
specific_enchants
Cette fonction vous permet de définir une liste d'enchantements spécifiques sur un objet. Il vous permet également d'appliquer des enchantements à des objets qui ne pourraient pas en recevoir normalement dans le jeu.
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "specific_enchants",
"enchants": [
"knockback",
"fire_aspect"
]
}
]
}
Vous pouvez également définir les enchantements en tant qu'objets pour définir spécifiquement un niveau d'enchantement. Les niveaux d'enchantement maximum sont codés en dur et ne peuvent pas être écrasés.
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "specific_enchants",
"enchants": [
{
"id": "knockback",
"level": 1
},
{
"id": "unbreaking",
"level": 3
}
]
}
]
}
Modification d'objets
L'ensemble de fonctions suivant vous permet de modifier les résultats de différentes manières, telles que la définition du nombre d'éléments renvoyés, la définition de la valeur de données ou même la définition du nom et de l'histoire d'un objet.
looting_enchant (uniquement pour la table de butin)
Cette fonction vous permet de modifier le nombre d'objets retournés lorsqu'une entité est tuée par un objet avec l'enchantement de butin. Pour cette raison, cela ne fonctionne qu'avec les tables de butin et seulement si une table de butin est appelée par la mort d'une entité.
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "looting_enchant",
"count": {
"min": 0,
"max": 1
}
}
]
}
random_block_state
Cette fonction vous permet de rendre aléatoire l'état du bloc de l'objet résultant. Par exemple, l'exemple de code suivant peut lâcher de la pierre (0), du granit (1), du granit poli (2), de la diorite (3), de la diorite polie (4) ou de l'andésite (5).
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "random_block_state",
"block_state": "stone_type",
"values": {
"min": 0,
"max": 5
}
}
]
}
random_aux_value
Cette fonction est semblable à random_block_state
et vous permet de choisir une valeur auxiliaire aléatoire pour un objet. L'exemple suivant donnera un colorant de couleur aléatoire.
{
"type": "item",
"name": "minecraft:dye",
"weight": 1,
"functions": [
{
"function": "random_aux_value",
"values": {
"min": 0,
"max": 15
}
}
]
}
set_actor_id
Cette fonction ne fonctionne qu'avec un œuf d'apparition et est utilisée pour définir l'ID d'entité de ce dernier.
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "set_actor_id",
"id": "compass:cool_entity"
}
]
}
Vous pouvez également hériter de l'ID d'entité de l'entité associée à cette table de butin (c'est-à-dire faire qu'un lapin lâche un œuf d'apparition lapin) en omettant la valeur id
.
{
"type": "item",
"name": "minecraft:spawn_egg",
"weight": 1,
"functions": [
{
"function": "set_actor_id"
}
]
}
Veuillez noter que si vous utilisez la fonction set_actor_id
sur la table de butin d'un coffre et que vous omettez la valeur id
, l'œuf d'apparition prendra l'identité de ce qui ouvrira le coffre en premier (le joueur). Un œuf d’apparition de joueur engendrera un «joueur» qui se contentera de rester debout et de générer des erreurs Molang (puisqu’il essaie d’utiliser le fichier de comportement du joueur ainsi que les contrôleurs du joueur). Si vous fracturez un coffre contenant une table de butin qui utilise un identifiant hérité de la fonction set_actor_id
, un œuf d'apparition par défaut sera généré et ne donnera naissance à rien du tout.
set_banner_details
Cette fonction n'est activée que sur les bannières et n'est compatible qu'avec un type
de bannière 1
. Un type
de bannière 1
se traduit par une bannière d'illageois.
{
"type": "item",
"name": "minecraft:banner",
"weight": 1,
"functions": [
{
"function": "set_banner_details",
"type": 1
}
]
}
set_book_contents
Cette fonction vous permet de définir le contenu d'un livre.
{
"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."
]
}
]
}
Vous pouvez aussi utiliser la fonction rawtext
pour localiser le contenu du livre. Lors de l'utilisation de la fonction rawtext
, n'oubliez pas de ne jamais utiliser (\
) de caractères spéciaux tels que "
et \
.
{
"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\"}]}"
]
}
]
}
Sachez que vous ne pouvez utiliser la fonction rawtext
que sur le contenu de livres (pages
) au moment d'écrire. La fonction rawtext
ne peut pas être utilisée pour les étiquettes author
ou title
.
set_count
Cette fonction définit la quantité d'articles retournés en paramétrant la valeur count
. Il peut s'agir d'un nombre exact comme dans cet exemple:
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": 5
}
]
}
Ou cela peut être dans une plage min/max:
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 6
}
}
]
}
set_damage
Cette fonction définit le pourcentage de durabilité restant pour les objets qui dispose d'une durabilité en définissant la valeur damage
. 1,0 correspond à 100% de la durabilité restante (objet intact) tandis que 0,0 signifie qu'il ne reste aucune durabilité.
Vous pouvez soit la définir sur une durabilité exacte, comme dans l'exemple suivant où nous définissons une durabilité restante de 50% pour l'objet.
{
"type": "item",
"name": "minecraft:iron_leggings",
"weight": 1,
"functions": [
{
"function": "set_damage",
"damage": 0.5
}
]
}
Ou vous pouvez définir des valeurs minimale et maximale parmi lesquelles le jeu choisira au hasard. L'exemple suivant définit une durabilité comprise entre 30 et 90% restants.
{
"type": "item",
"name": "minecraft:iron_leggings",
"weight": 1,
"functions": [
{
"function": "set_damage",
"damage": {
"min": 0.3,
"max": 0.9
}
}
]
}
set_data
Cette fonction définit la valeur des données d'un bloc ou d'un objet selon un identifiant exact. L'exemple suivant générera un bloc de diorite polie.
{
"type": "item",
"name": "minecraft:stone",
"functions": [
{
"function": "set_data",
"data": 4
}
]
}
set_data_from_color_index
Cette fonction fait hériter de la valeur de données de l'objet résultant à partir de l'index de couleur de l'entité associée. Un exemple dans le jeu pourrait être un mouton rose lâchant de la laine rose à sa mort. Si l'entité associée n'a pas d'index de couleur défini (ou si il est utilisé dans la table de butin d'un coffre), cela donnera toujours une valeur de données de 0.
{
"type": "item",
"name": "minecraft:wool",
"weight": 1,
"functions": [
{
"function": "set_data_from_color_index"
}
]
}
set_lore
Cette fonction vous permet de définir l'histoire d'un objet. Chaque ligne de histoire de l'objet représente une seule ligne de texte. rawtext
n'est actuellement pas compatible avec cette fonction.
{
"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
Cette fonction vous permet de définir le nom d'un objet. rawtext
n'est actuellement pas compatible avec cette fonction.
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "set_name",
"name": "Big Stick"
}
]
}
Divers
Cette section contient toutes les fonctions qui ne peuvent pas être classées autre part.
fill_container
Cette fonction vous permet de définir la table de butin d'un coffre. Lorsque l'objet est généré et que le joueur le place, il sera rempli du contenu défini à l'intérieur de la table de butin référencée.
Les tables de butin pour les coffres sont générées au moment de l'ouverture ou de la fracture du coffre. Considérez cela comme une boîte de Schrödinger. Le contenu du coffre n'est fixé qu'au moment où vous regardez à l'intérieur.
{
"type": "item",
"name": "minecraft:chest",
"functions": [
{
"function": "fill_container",
"loot_table": "loot_tables/chests/simple_dungeon.json"
}
]
}
Il est conseillé de toujours utiliser la fonction set_name
pour donner un nom au coffre lors de l'utilisation de la fonction fill_container
. Si vous ne le faites pas, le coffre résultant sera le même qu'un coffre vide normal dans l'inventaire du joueur.
exploration_map
Cette fonction transforme une carte normale en une carte au trésor qui marque l'emplacement d'un trésor caché. La valeur destination
définit le type de carte au trésor reçu.
{
"type": "item",
"name": "minecraft:map",
"weight": 1,
"functions": [
{
"function": "exploration_map",
"destination": "buriedtreasure"
}
]
}
Vous pouvez actuellement choisir parmi les destinations suivantes:
Destination |
---|
buriedtreasure |
endcity |
fortress |
mansion |
mineshaft |
monument |
pillageroutpost |
ruins |
shipwreck |
stronghold |
temple |
village |
furnace_smelt (uniquement pour les tables de butin)
Si l'objet à retourner dispose une recette de fabrication de métal fondu et que la table de butin est activée par une entité tuée par le feu (Aura de Feu, Briquet à silex, lave, etc.), le résultat sera la version fondue de l'objet. En raison de ces conditions, cette fonction ne fonctionne pas dans les échanges avec les villageois ou avec les coffres. Cette fonction ne peut être utilisée qu'en association avec le comportement minecraft:loot
.
L'exemple suivant lâchera un bloc de pierre si l'entité est tuée par le feu ou par des pierres.
{
"type": "item",
"name": "minecraft:cobblestone",
"weight": 1,
"functions": [
{
"function": "furnace_smelt"
}
]
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour