MC Toolkit

Guias / Comandos e dados

Tabelas de loot: pools, rolls e a diferença entre entradas e funções

Uma tabela de loot que não dropa nada geralmente tem os pesos ou as condições na camada errada. Veja o que cada nível de aninhamento controla e quais funções vale a pena conhecer.

O JSON de uma tabela de loot tem quatro níveis de profundidade e cada nível significa uma coisa diferente. Quase todo caso de "minha tabela não dropa nada" é uma condição presa a um nível de distância 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 define quantas vezes aquele pool é sorteado. Um pool com rolls: 3 sorteia três vezes a partir da mesma lista de entradas.
  • weight em uma entrada é relativo dentro do seu pool. Os pesos não precisam somar nada; uma entrada com peso 10 contra outra com peso 90 aparece uma vez a cada dez.
  • conditions existem em todos os níveis e significam coisas diferentes. Em um pool, elas controlam todo o sorteio. Em uma entrada, controlam aquela opção específica. Em uma função, controlam apenas a modificação.

Garantir um drop exige um pool próprio

Pesos não conseguem garantir nada, porque um pool escolhe exatamente uma entrada por sorteio. Uma tabela que precisa sempre dropar um mapa mais loot 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 sempre a produz. O pool dois sorteia de 2 a 4 vezes a partir da lista ponderada.

As funções que vale a pena conhecer

FunçãoO que faz
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 — qualquer encantamento, a menos que options restrinja
set_componentsnome personalizado, lore, qualquer componente de dados
enchanted_count_increasebônus por nível de um encantamento (Saque); apenas em tabelas de entidades
set_damagedurabilidade como fração, então 0.5 é metade gasta
furnace_smelta forma fundida quando a criatura morre em Fogo

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 de forma arbitrária e pode produzir combinações que o jogo nunca geraria.

Condições que as pessoas costumam usar

  • random_chance — uma probabilidade fixa
  • random_chance_with_enchanted_bonus — a chance moderna que leva Saque em conta
  • killed_by_player — o motivo pelo qual seu drop raro nunca aparece quando a morte é por queda
  • entity_properties — verifica o tipo, o estado ou o equipamento da vítima
  • match_tool — verifica a ferramenta usada, para tabelas de blocos

Testar sem reconstruir o mundo

/loot give @s loot my_pack:chests/treasure

joga a tabela direto no seu inventário. /loot spawn, /loot insert <pos> e /loot replace cobrem os outros posicionamentos. Isso é bem mais rápido do que colocar baús e recarregar, e é a única forma sensata de conferir distribuições de peso.

Monte tabelas com múltiplos pools, com as funções e condições presas no nível certo, no Construtor Avançado de Tabelas de Loot.

Criador avançado de tabelas de loot →

Mais guias

Ver todos →