Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les tables de butin sont des fichiers au format JSON utilisés pour définir la façon dont les objets sont générés dans le jeu. Ils peuvent être utilisés pour générer le contenu des coffres, définir quels objets une entité lâche à sa mort ou même de quels objets une entité dispose. Dans certains cas, la table est même utilisée dans des mécanismes de jeu tels que la traite d’un mooshroom ou la pêche.
Les fichiers de table de butin se trouvent dans le répertoire racine d'un pack de comportements et se composent généralement de trois sections principales appelées «pool».
- Roulements
- Il s'agit du nombre de fois que ce pool sera utilisé pour sélectionner une entrée. Il peut s'agir d'un nombre entier pour déterminer un nombre de roulements exacts pour le pool ou un nombre minimum et maximum qu'un pool peut être utilisé.
- Conditions (facultatif) en savoir plus
- Ce sont les conditions qui doivent être remplies pour que ce pool soit utilisé.
- Entrées
- Il s'agit d'une liste d'objets que le jeu sélectionnera dans ce roulement. Cela peut être un
item
, uneloot_table
ou un élémentempty
si vous souhaitez avoir une change que rien ne passe dans ce roulement.
- Il s'agit d'une liste d'objets que le jeu sélectionnera dans ce roulement. Cela peut être un
Dans ce tutoriel, vous apprendrez les éléments suivants:
- Comment utiliser JSON pour définir une table de butin.
- Comment appliquer des fonctions aux entrées pour modifier l'objet sélectionné.
- Comment utiliser les conditions pour appliquer davantage de restrictions lorsqu'un pool ou une entrée est sélectionné(e).
Conditions requises
Nous vous recommandons de compléter les étapes suivantes avant de commencer ce tutoriel.
Utilisation de base
Tout d'abord, créons une table de butin qui renvoie un seul diamant lors d'un appel.
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "minecraft:diamond"
}
]
}
]
}
Comme vous pouvez le voir, nous avons défini un pool unique avec un seul roulement et qui contient un seul diamant à chaque roulement. Si vous deviez associer cela au composant minecraft:loot dans le fichier de comportement d'une entité, elle lâcherait un diamant à sa mort.
Et si vous souhaitez faire un choix entre deux objets? Que se passerait-il si vous souhaitez retourner un diamant ou un morceau de charbon? Cela est possible en ajoutant une deuxième valeur à l'objet entries
.
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "minecraft:diamond"
},
{
"type": "item",
"name": "minecraft:coal"
}
]
}
]
}
Vous allez donc voir ici qu'un diamant a tout autant de chance de tomber qu'un morceau de charbon. Tous les objets entries
ont un weight
qui leur est attribué. Si vous ne modifiez rien, il se mettra par défaut sur la valeur 1
pour donner la même chance à tous les objets entries
d'être sélectionné lors du roulement. Pour ajuster cela, vous devez définir la valeur weight
vous-même.
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "minecraft:diamond",
"weight": 1
},
{
"type": "item",
"name": "minecraft:coal",
"weight": 7
}
]
}
]
}
La meilleure façon de comprendre comment la valeur weight
a une influence sur le roulement est d'imaginer que l'exemple ci-dessus ne dispose pas de deux entrées. C'est comme s'il y en avait huit: sept chances pour le charbon et une chance pour le diamant. Cela signifie que le roulement à sept fois plus de chances de tomber sur le morceau de charbon que sur le diamant.
Même si le modificateur quality
de Java Edition (qui ajuste le weight
basé sur l'attribut Luck du joueur) existe dans les fichiers standard de la BedrockEdition, cette édition ne prend actuellement pas en charge l'attribut Luck, ce qui supprime toute utilité de cette fonctionnalité.
Vous pouvez également rendre aléatoire le nombre de fois qu'un ensemble d'objet entries
est utilisé. Les rolls
principaux peuvent être ajustés à l'aide de valeurs min
et max
que le jeu choisira au hasard.
{
"pools": [
{
"rolls": {
"min": 1,
"max": 3
},
"entries": [
{
"type": "item",
"name": "minecraft:diamond",
"weight": 1
},
{
"type": "item",
"name": "minecraft:coal",
"weight": 7
}
]
}
]
}
Selon l'image ci-dessus, le jeu lancera un roulement des entrées de une à trois fois. Ces résultats se traduisent par un minimum de un et un maximum de trois objets, à chaque fois qu'une table de butin est appelée.
Voici un autre exemple utilisant une table de butin comme l'une des entrées. Cela aura pour résultat que le jeu appellera l'autre table de butin et retournera tout ce qui en résulte.
{
"pools": [
{
"rolls": {
"min": 1,
"max": 3
},
"entries": [
{
"type": "item",
"name": "minecraft:diamond",
"weight": 1
},
{
"type": "item",
"name": "minecraft:coal",
"weight": 7
},
{
"type": "loot_table",
"name": "loot_tables/custom/some_loot_table",
"weight": 1
}
]
}
]
}
Veuillez noter que les tables de butin ne peuvent en aucun cas se référer à elles-mêmes. Si le résultat du roulement est une table récurrente, rien ne sera retourné.
Fonctions et modifications d'objets.
Les fonctions sont des opérations facultatives qui peuvent être ajoutées à une entrée qui modifie un élément. Cela vous permettra de définir le nombre de fois où un objet est renvoyé, de modifier les attributs de cet objet ou le nombre d'autres opérations. Dans cet article, nous aborderons certaines des utilisations les plus courantes des fonctions, mais vous pouvez également obtenir une explication détaillée de toutes les fonctions disponibles dans le tutoriel sur les fonctions des tables de butin et d'échanges.
set_count
Cette fonction vous permet de définir une quantité minimale et maximale d'objets renvoyés avec cette entrée:
{
"type": "item",
"name": "minecraft:diamond",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 6
}
}
]
}
L'exemple ci-dessus renverra de un à six diamants chaque fois que cette entrée est lancée.
set_data
Cela définit la valeur des données d'un objet. Cette fonction est utile pour des actions telles que le retour d'une potion ou d'une couleur de colorant spécifiques. Elle vous permet également de renvoyer différentes valeurs de bloc, telles qu'une couleur spécifique de laine ou un certain type de tronc.
{
"type": "item",
"name": "minecraft:potion",
"weight": 1,
"functions": [
{
"function": "set_data",
"data": 21
}
]
}
L'exemple ci-dessus renverra une Potion de soin.
{
"type": "item",
"name": "minecraft:wool",
"weight": 1,
"functions": [
{
"function": "set_data",
"data": 1
}
]
}
Cet exemple montre un retour de laine orange.
specific_enchants
Cette fonction vous permet de définir une liste d'enchantements spécifiques sur un objet. Elle vous permet également d'appliquer des enchantements à des objets qui ne pourraient normalement pas être enchantés dans le jeu.
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "specific_enchants",
"enchants": [
"knockback",
"fire_aspect"
]
}
]
}
Vous pouvez également définir des enchantements en tant qu'objets pour définir également 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
}
]
}
]
}
Fonctions multiples
Plusieurs fonctions peuvent être définies simultanément. Voici un exemple d'association de deux fonctions. Dans cet exemple, cette entrée renverra un nombre de Potions de soin compris entre un et trois.
{
"type": "item",
"name": "minecraft:potion",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 3
}
},
{
"function": "set_data",
"data": 21
}
]
}
Les multiples fonctions peuvent être multiples de la même fonction, mais s'il y a un conflit entre ces fonctions; la dernière à être définie l'emportera.
Par exemple, le fait d'utiliser plusieurs fonction set_count
, comme dans l'exemple ci-dessous, fera que seul le dernier doublon sera utilisé avec pour résultat d'avoir un nombre compris entre 5et7 pour l'objet plutôt qu'entre 1et3.
{
"type": "item",
"name": "minecraft:potion",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 3
}
},
{
"function": "set_count",
"count": {
"min": 5,
"max": 7
}
}
]
}
Conditions requises
Les conditions sont une liste d'exigences qui doivent être remplies avant qu'un pool ne puisse être utilisé ou qu'une entrée individuelle ne puisse être sélectionnée. Toutes les conditions sont stockées dans une liste. Chaque condition s'exécute une par une. Si l'une des conditions de la liste échoue, le reste de cette même liste sera ignoré.
Condition match_tool
match_tool
est une condition qui vérifie si l'outil (ou l'arme ou tout autre objet que le joueur utilise) utilisé pour faire apparaître le butin correspond à l'ensemble des conditions de modification fournies.
Les prédicats utilisés sont les suivants: count, durability, enchantments et item.
- count: quantité d'objets
- range_max: valeur maximale
- range_min: valeur minimale
- durability: solidité d'un objet
- range_max: valeur maximale
- range_min: valeur minimale
- enchantments: liste des enchantements
- enchantment: identifiant d'un enchantement
- levels: niveau de l'enchantement
- range_max: valeur maximale
- range_min: valeur minimale
- objet: l'identifiant d'un objet
Exemple:
"conditions": [
{
"condition": "match_tool",
"enchantments": [
{
"enchantment": "sharpness",
"levels": {
"range_max": 6
}
}
],
"item": "minecraft:diamond_sword",
"count": 1,
"durability": {
"range_min": 1
}
}
]
Conditions de pool
L'application d'une condition à un pool vous permet d'exécuter l'intégralité de ce dernier en fonction des conditions définies.
L'exemple ci-dessous ne se déclenchera que si l'entité qui l'appelle a été tuée par un squelette et qu'un diamant ou un morceau de charbon a été lâché.
{
"pools": [
{
"conditions": [
{
"condition": "killed_by_entity",
"entity_type": "minecraft:skeleton"
}
],
"rolls": 1,
"entries": [
{
"type": "item",
"name": "minecraft:diamond",
"weight": 1
},
{
"type": "item",
"name": "minecraft:coal",
"weight": 1
}
]
}
]
}
Conditions pour les entrées
Vous pouvez également appliquer des conditions à des entries
spécifiques dans le roulement. L'exemple suivant ne renverra le diamant que 50% du temps si l'entité qui l'a appelé a été tuée par le joueur. Toutes les autres fois que l'appel a lieu, seul le charbon apparaîtra.
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "minecraft:diamond",
"weight": 1,
"conditions": [
{
"condition": "killed_by_player"
}
]
},
{
"type": "item",
"name": "minecraft:coal",
"weight": 1
}
]
}
]
}
La découverte des différentes fonctions et conditions disponibles peut vraiment vous permettre de personnaliser l'expérience de vos joueurs. Vous pouvez nommer des objets et leur attribuer une histoire, déposer des caisses de ressources pleines de fournitures et même créer des livres écrits contenant des instructions ou des informations.
Quelle est la prochaine étape?
Il existe de nombreuses autres fonctions qui peuvent modifier l'objet sélectionné. Le prochain tutoriel les décrira.