MC Toolkit

Guias / Comandos e dados

Um predicate com uma condição não tem invólucro, e isso é uma mudança real de forma

Uma condição é o próprio objeto. Duas ou mais são envolvidas em all_of ou any_of. Além disso, os oito tipos de condição, e por que inverter é um invólucro em vez de uma flag.

Um predicate de datapack é um arquivo JSON que descreve uma condição, e sua estrutura muda dependendo de quantas condições você tem. É justamente aí que as pessoas tropeçam ao copiar um exemplo e estendê-lo.

Uma não é uma lista de uma

condiçõesforma da saída
0{}
1o próprio objeto de condição
2+{ "condition": "minecraft:all_of", "terms": [ … ] }

Não há invólucro em torno de uma única condição. Adicione uma segunda e o arquivo inteiro muda de forma — a condição original passa a ser o primeiro elemento de um array terms sob uma nova raiz. Qualquer coisa que leia ou gere esses arquivos precisa lidar com as duas formas, e um exemplo construído com uma condição não mostra a forma que você vai precisar no momento em que adicionar outra.

any_of é o combinador alternativo: todos os termos precisam passar, ou qualquer um deles.

Inverter também é um invólucro, não uma flag

Não existe campo "invert": true. Uma condição negada é envolvida:

{ "condition": "minecraft:inverted", "term": { …the original condition… } }

Repare em term, no singular — inverted aceita exatamente um, enquanto all_of e any_of aceitam um array terms. Duas chaves parecidas com formas diferentes, e a inversão se aplica por condição, então um predicate pode misturar termos invertidos e normais livremente dentro de um mesmo all_of.

Os oito tipos de condição que o construtor oferece

entity_properties            random_chance
int_value_check              random_chance_with_enchanted_bonus
weather_check                time_check
location_check               match_tool

O jogo tem vinte tipos de condição; estes são os oito que o seletor do construtor cobre. Dois deles mudaram de nome, e o construtor ainda grava os ids antigos — random_chance_with_looting e value_check — que as versões atuais recusam, então renomeie esses dois na saída.

random_chance_with_enchanted_bonus é o que merece uma pausa: ele usa uma chance sem o encantamento e um enchanted_chance que escala com o nível de um encantamento (Saque, nas próprias tabelas do vanilla), então a probabilidade depende do que o assassino está segurando. Isso o torna útil apenas onde existe um assassino no contexto — é uma condição de taxa de drop, não um portão aleatório de uso geral. O random_chance simples é o que você deve usar em todo o resto.

int_value_check (e float_value_check) testam se um número cai dentro de um intervalo. A verificação de valor do construtor oferece uma fonte de nível de encantamento ou uma expressão personalizada que você edita no JSON à mão depois de copiar.

Os seletores são exatamente os conjuntos do vanilla

Vale saber quando você está verificando se um id de bioma ou estrutura é real: os menus suspensos do construtor não são uma amostra curada.

  • 66 biomas — todos os biomas até a 26.2; o dappled_forest da 26.3 está faltando, então digite-o à mão
  • 34 estruturas — igualmente até a 26.2; as 18 estruturas abandoned_camp_* que a 26.3 adicionou não estão listadas
  • 18 tags de bloco e 15 itens, que são um subconjunto funcional

Isso foi verificado com os próprios dados de registro do jogo, e não presumido, então se um id está ausente da lista de biomas ou estruturas e não é uma das adições da 26.3, o id não existe. Para as tags de bloco e os itens é o contrário: a ausência significa apenas que o seletor não o lista, e digitar o id você mesmo não tem problema.

Construtor de predicados e condições →

Mais guias

Ver todos →