Tabelas de saque: pools, rolls e a diferença entre entries e functions
Uma tabela de saque que não dropa nada geralmente tem seus pesos ou suas condições na camada errada. Aqui está o que cada nível de aninhamento controla e as funções que valem a pena conhecer.
O JSON de uma tabela de saque (loot table) tem quatro níveis de profundidade, e cada nível significa algo diferente. Quase todo "minha tabela não dropa nada" é uma condição anexada um nível distante de onde deveria estar.
Os quatro níveis
table
└── pools[] how many independent draws
└── entries[] what can come out of this draw
└── functions[] modify the item that came out
rollsem um pool é quantas vezes aquele pool sorteia. Um pool comrolls: 3sorteia três vezes da mesma lista de entradas (entries).weightem uma entrada é relativo dentro do seu pool. Os pesos não precisam somar a nada; uma entrada com peso 10 contra uma com peso 90 aparece um décimo das vezes.conditionsexistem em todos os níveis e significam coisas diferentes. Em um pool, elas controlam todo o sorteio. Em uma entrada, elas controlam aquela opção específica. Em uma função, elas controlam apenas a modificação.
Garantir um drop precisa de seu próprio pool
Pesos não podem garantir nada, porque um pool escolhe exatamente uma entrada por sorteio (roll). Uma tabela que deve sempre dropar um Mapa mais saque aleatório precisa de dois pools:
"pools": [
{ "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:filled_map" } ] },
{ "rolls": { "min": 2, "max": 4 }, "entries": [ … weighted list … ] }
]
O pool um tem uma única entrada, então ele sempre a produz. O pool dois sorteia de 2 a 4 vezes da lista ponderada.
As funções que valem a pena conhecer
| Função | Faz |
|---|---|
set_count | um número fixo ou um intervalo uniform |
enchant_randomly | encantamentos aleatórios, opcionalmente de uma lista |
enchant_with_levels | como uma Mesa de Encantamentos em N níveis — inclui tesouros se solicitado |
set_components | nome personalizado, lore, qualquer componente de dados |
looting_enchant | bônus por nível de Saque (Looting); apenas tabelas de entidades |
set_damage | durabilidade como uma fração, então 0.5 está meio gasta |
furnace_smelt | a forma derretida quando o mob morre em chamas |
enchant_with_levels e enchant_randomly não são intercambiáveis. A primeira imita uma Mesa de Encantamentos e respeita os custos de nível; a segunda escolhe arbitrariamente e pode produzir combinações que o jogo nunca geraria.
Condições que as pessoas buscam
random_chance— uma probabilidade fixarandom_chance_with_enchanted_bonus— a chance moderna que considera Saque (Looting)killed_by_player— a razão pela qual seu drop raro nunca aparece de uma morte por quedaentity_properties— verifica o tipo, estado ou equipamento da vítimamatch_tool— verifica a ferramenta usada, para tabelas de blocos
Testando sem reconstruir o mundo
/loot give @s loot my_pack:chests/treasure
dropa a tabela diretamente no seu inventário. /loot spawn, /loot insert <pos> e /loot replace cobrem os outros posicionamentos. Isso é muito mais rápido do que colocar baús e recarregar, e é a única maneira sensata de verificar distribuições de peso.
Construa tabelas com múltiplos pools com as funções e condições anexadas no nível certo no Construtor Avançado de Tabelas de Saque.