Guides / Commands & Data

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
  • rolls em um pool é quantas vezes aquele pool sorteia. Um pool com rolls: 3 sorteia três vezes da mesma lista de entradas (entries).
  • weight em 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.
  • conditions existem 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çãoFaz
set_countum número fixo ou um intervalo uniform
enchant_randomlyencantamentos aleatórios, opcionalmente de uma lista
enchant_with_levelscomo uma Mesa de Encantamentos em N níveis — inclui tesouros se solicitado
set_componentsnome personalizado, lore, qualquer componente de dados
looting_enchantbônus por nível de Saque (Looting); apenas tabelas de entidades
set_damagedurabilidade como uma fração, então 0.5 está meio gasta
furnace_smelta 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 fixa
  • random_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 queda
  • entity_properties — verifica o tipo, estado ou equipamento da vítima
  • match_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.

Construtor avançado de tabelas de saque →

More guides

Browse all →

Procurando mais ferramentas de Minecraft?

Um conjunto de geradores, visualizadores e conversores que rodam no navegador — tudo grátis.