Tables de butin : pools, rolls 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 contrôle chaque niveau d'imbrication, et les fonctions à connaître.
Le JSON d'une table de butin comporte quatre niveaux et chaque niveau a une signification différente. Presque tous les « ma table ne donne rien » viennent d'une condition attachée à un niveau autre que celui prévu.
Les quatre niveaux
table
└── pools[] how many independent draws
└── entries[] what can come out of this draw
└── functions[] modify the item that came out
rollssur un pool correspond au nombre de tirages de ce pool. Un pool avecrolls: 3effectue trois tirages depuis la même liste d'entrées.weightsur une entrée est relatif à l'intérieur de son pool. Les poids n'ont pas besoin de totaliser quoi que ce soit ; une entrée de poids 10 face à une de poids 90 apparaît une fois sur dix.conditionsexistent à chaque niveau et signifient des choses différentes. Sur un pool, elles conditionnent tout le tirage. Sur une entrée, elles conditionnent cette option précise. Sur une fonction, elles conditionnent 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 du 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 n'a qu'une seule entrée, il la produit donc toujours. Le second pool effectue 2 à 4 tirages depuis la liste pondérée.
Les fonctions à connaître
| Fonction | Rôle |
|---|---|
set_count | un nombre fixe ou une plage uniform |
enchant_randomly | des enchantements aléatoires, éventuellement depuis une liste |
enchant_with_levels | comme une Table d'enchantement à N niveaux — n'importe quel enchantement sauf si options le restreint |
set_components | nom personnalisé, description, n'importe quel composant de données |
enchanted_count_increase | bonus par niveau d'un enchantement (Butin) ; tables d'entités uniquement |
set_damage | durabilité sous forme de fraction, donc 0.5 correspond à un objet à moitié usé |
furnace_smelt | la forme fondue lorsque le mob meurt dans 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.
Les conditions que l'on utilise souvent
random_chance— une probabilité fixerandom_chance_with_enchanted_bonus— la chance moderne tenant compte de Butinkilled_by_player— la raison pour laquelle votre butin rare n'apparaît jamais lors d'une mort par chuteentity_properties— vérifier le type, l'état ou l'équipement de la victimematch_tool— vérifier l'outil utilisé, pour les tables de blocs
Tester sans reconstruire le monde
/loot give @s loot my_pack:chests/treasure
place la table directement dans votre inventaire. /loot spawn, /loot insert <pos> et /loot replace couvrent les autres emplacements. C'est bien plus rapide que de placer des coffres et de recharger, et c'est la seule façon raisonnable de vérifier les distributions de poids.
Construisez des tables multi-pools avec les fonctions et conditions attachées au bon niveau dans le Advanced Loot Table Builder.