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. Veja o que cada nível de aninhamento controla e as funções que valem a pena conhecer.
O JSON de uma tabela de saque 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 acima 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 é o número de vezes que aquele pool sorteia. Um pool comrolls: 3sorteia três vezes da mesma lista de entries.weightem uma entry é relativo dentro do seu pool. Os pesos não precisam somar a nada; uma entry 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 entry, elas controlam aquela opção específica. Em uma function, 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 entry por 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 entry, então sempre a produz. O pool dois sorteia 2–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; apenas tabelas de entidade |
set_damage | durabilidade como uma fração, então 0.5 está meio gasta |
furnace_smelt | a forma fundida quando a criatura 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 Saquekilled_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 bloco
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.