Tablas de botín: pools, tiradas y la diferencia entre entradas y funciones
Una tabla de botín que no suelta nada normalmente tiene los pesos o las condiciones en el nivel equivocado. Esto es lo que controla cada nivel de anidamiento, y las funciones que conviene conocer.
El JSON de una tabla de botín tiene cuatro niveles de profundidad y cada nivel significa algo distinto. Casi todos los casos de "mi tabla no suelta nada" son una condición colocada un nivel lejos de donde debía ir.
Los cuatro niveles
table
└── pools[] how many independent draws
└── entries[] what can come out of this draw
└── functions[] modify the item that came out
rollsen un pool es cuántas veces roba ese pool. Un pool conrolls: 3roba tres veces de la misma lista de entradas.weighten una entrada es relativo dentro de su pool. Los pesos no tienen que sumar nada; una entrada con peso 10 frente a otra con peso 90 aparece una décima parte de las veces.conditionsexisten en todos los niveles y significan cosas distintas. En un pool controlan toda la tirada. En una entrada controlan esa opción concreta. En una función controlan solo la modificación.
Garantizar un drop requiere su propio pool
Los pesos no pueden garantizar nada, porque un pool elige exactamente una entrada por tirada. Una tabla que siempre debe soltar un mapa más botín aleatorio necesita dos pools:
"pools": [
{ "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:filled_map" } ] },
{ "rolls": { "min": 2, "max": 4 }, "entries": [ … weighted list … ] }
]
El pool uno tiene una sola entrada, así que siempre la produce. El pool dos tira de 2 a 4 veces de la lista ponderada.
Las funciones que conviene conocer
| Función | Hace |
|---|---|
set_count | un número fijo o un rango uniform |
enchant_randomly | encantamientos aleatorios, opcionalmente de una lista |
enchant_with_levels | como una Mesa de encantamientos a N niveles — cualquier encantamiento salvo que options lo restrinja |
set_components | nombre personalizado, lore, cualquier componente de datos |
enchanted_count_increase | bonus por nivel de un encantamiento (Botín); solo tablas de entidades |
set_damage | durabilidad como fracción, así que 0.5 es medio desgastado |
furnace_smelt | la forma fundida cuando el mob muere en Fuego |
enchant_with_levels y enchant_randomly no son intercambiables. La primera imita una Mesa de encantamientos y respeta los costes de nivel; la segunda elige arbitrariamente y puede producir combinaciones que el juego nunca generaría.
Condiciones a las que la gente recurre
random_chance— una probabilidad planarandom_chance_with_enchanted_bonus— la probabilidad moderna que tiene en cuenta Botínkilled_by_player— la razón por la que tu drop raro nunca aparece por una muerte por caídaentity_properties— comprueba el tipo, estado o equipo de la víctimamatch_tool— comprueba la herramienta usada, para tablas de bloques
Probar sin reconstruir el mundo
/loot give @s loot my_pack:chests/treasure
suelta la tabla directamente en tu inventario. /loot spawn, /loot insert <pos> y /loot replace cubren las otras colocaciones. Esto es mucho más rápido que colocar cofres y recargar, y es la única forma sensata de comprobar distribuciones de pesos.
Construye tablas multi-pool con las funciones y condiciones colocadas en el nivel correcto en el Advanced Loot Table Builder.