MC Toolkit

Guides / Commandes et données

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
  • rolls sur un pool correspond au nombre de tirages de ce pool. Un pool avec rolls: 3 effectue trois tirages depuis la même liste d'entrées.
  • weight sur 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.
  • conditions existent à 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

FonctionRôle
set_countun nombre fixe ou une plage uniform
enchant_randomlydes enchantements aléatoires, éventuellement depuis une liste
enchant_with_levelscomme une Table d'enchantement à N niveaux — n'importe quel enchantement sauf si options le restreint
set_componentsnom personnalisé, description, n'importe quel composant de données
enchanted_count_increasebonus par niveau d'un enchantement (Butin) ; tables d'entités uniquement
set_damagedurabilité sous forme de fraction, donc 0.5 correspond à un objet à moitié usé
furnace_smeltla 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é fixe
  • random_chance_with_enchanted_bonus — la chance moderne tenant compte de Butin
  • killed_by_player — la raison pour laquelle votre butin rare n'apparaît jamais lors d'une mort par chute
  • entity_properties — vérifier le type, l'état ou l'équipement de la victime
  • match_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.

Créateur avancé de tables de butin →

Plus de guides

Tout voir →