Tables de butin : pools, tirages et la différence entre entrées et fonctions
Une table de butin qui ne donne rien a généralement ses poids ou ses conditions au mauvais niveau. Voici ce que chaque niveau d'imbrication contrôle, et les fonctions à connaître.
Le JSON des tables de butin est imbriqué sur quatre niveaux, et chaque niveau a une signification différente. Presque tous les cas où "ma table ne donne rien" sont dus à une condition attachée un niveau au-dessus de là où elle aurait dû être.
Les quatre niveaux
table
└── pools[] how many independent draws
└── entries[] what can come out of this draw
└── functions[] modify the item that came out
- Le
rollssur un pool indique combien de fois ce pool effectue un tirage. Un pool avecrolls: 3tire trois fois de la même liste d'entrées. - Le
weightsur une entrée est relatif au sein de son pool. Les poids n'ont pas besoin de s'additionner à quoi que ce soit ; une entrée avec un poids de 10 contre une avec un poids de 90 apparaît un dixième du temps. - Les
conditionsexistent à chaque niveau et ont des significations différentes. Sur un pool, elles contrôlent l'ensemble du tirage. Sur une entrée, elles contrôlent cette option spécifique. Sur une fonction, elles contrôlent uniquement la modification.
Garantir un butin nécessite son propre pool
Les poids ne peuvent rien garantir, car un pool choisit exactement une entrée par tirage. Une table qui doit toujours donner une Carte plus un butin aléatoire nécessite deux pools :
"pools": [
{ "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:filled_map" } ] },
{ "rolls": { "min": 2, "max": 4 }, "entries": [ … weighted list … ] }
]
Le premier pool a une seule entrée, il la produit donc toujours. Le deuxième pool tire 2 à 4 fois de la liste pondérée.
Les fonctions à connaître
| Fonction | Fait |
|---|---|
set_count | un nombre fixe ou une plage uniform |
enchant_randomly | des enchantements aléatoires, éventuellement à partir d'une liste |
enchant_with_levels | comme une Table d'enchantement à N niveaux — inclut les trésors si demandé |
set_components | nom personnalisé, lore, tout composant de données |
looting_enchant | bonus par niveau de Butin ; tables d'entités uniquement |
set_damage | durabilité sous forme de fraction, donc 0.5 est à moitié usé |
furnace_smelt | la forme fondue lorsque la créature meurt par le Feu |
enchant_with_levels et enchant_randomly ne sont pas interchangeables. La première imite une Table d'enchantement et respecte les coûts de niveau ; la seconde choisit arbitrairement et peut produire des combinaisons que le jeu ne générerait jamais.
Conditions recherchées par les utilisateurs
random_chance— une probabilité fixerandom_chance_with_enchanted_bonus— la chance moderne tenant compte du Butinkilled_by_player— la raison pour laquelle votre butin rare n'apparaît jamais après une mort par chuteentity_properties— vérifie le type, l'état ou l'équipement de la victimematch_tool— vérifie l'outil utilisé, pour les tables de blocs
Tester sans reconstruire le monde
/loot give @s loot my_pack:chests/treasure
dépose la table directement dans votre inventaire. /loot spawn, /loot insert <pos> et /loot replace couvrent les autres emplacements. C'est beaucoup plus rapide que de placer des coffres et de recharger, et c'est la seule façon sensée de vérifier les distributions de poids.
Construisez des tables multi-pools avec les fonctions et conditions attachées au bon niveau dans le Générateur de tables de butin avancé.