Predicados são estruturas JSON encontradas em vários locais diferentes nos pacotes de dados. Eles são invocados com vários meios para verificar as condições do mundo. Eles retornam um resultado pass ou fail ao invocador, que agirá de maneira diferente com base nesse resultado.
Arquivos de predicados são arquivos de pacotes de dados autônomos que contêm um ou mais predicados. Os predicados também podem ser definidos de outras maneiras.
Este artigo descreve como os predicados são definidos e invocados e também descreve a estrutura JSON de um predicado.
Definição de arquivos predicados[]
Um arquivo de predicado é definido com o formato JSON. Ele contém a estrutura de um predicado ou uma matriz com vários predicados.
- (data pack name)
- pack.mcmeta
- pack.png
- data
- (namespace)
- advancements
- (advancement).json
- functions
- (function).mcfunction
- item_modifiers
- (modifier).json
- loot_tables
- (loot table).json
- predicates
- (predicate).json
- Outras pastas…
- advancements
- (namespace)
O elemento raiz de um arquivo de predicado pode ser um object seguindo a estrutura de predicados abaixo ou um array contendo vários predicados.
Invocação[]
Predicados e arquivos de predicados podem ser chamados de várias maneiras diferentes de outros arquivos de pacote de dados:
Invocação de comandos[]
Comandos ou funções podem invocar arquivos predicados de duas maneiras:
- Seletores de destino: O argumento seletor
predicate=
verifica arquivos de predicado como um filtro para seleção de entidade. O arquivo de predicado é invocado uma vez por entidade que precisa de filtragem, sempre no local da entidade. /execute
: Um subcomando,/execute if predicate
, pode invocar um arquivo de predicado para retornar um resultado ou para decidir se deve continuar com uma cadeia de subcomando. O arquivo predicado é invocado uma vez na posição contextual atual de execução.
Invocação de outros predicados[]
O tipo de condição minecraft:reference
invoca um arquivo predicado e retorna o resultado para o invocador.
Presença de predicados em outros arquivos[]
Além dos arquivos de predicado, os próprios predicados são usados em outros locais dentro de outros arquivos de pacote de dados, como progressos e em tabelas de saque.
Formato JSON do predicado[]
Esta seção descreve o formato JSON de um predicado.
- : O elemento raiz do predicado.
- condition: O local do recurso do tipo de condição a ser verificado.
- Outras partes do predicado, especificadas abaixo.
Os valores possíveis para condition e conteúdos extras associados:
- alternative—Avalia uma lista de predicados e passa se algum deles passar. Invocável de qualquer contexto.
- terms: A lista de predicados a serem avaliados. Um predicado dentro desta matriz deve ser um object.
- Um predicado, seguindo esta estrutura recursivamente.
- terms: A lista de predicados a serem avaliados. Um predicado dentro desta matriz deve ser um object.
- block_state_property—Verifica o bloco minerado e seus estados de bloco. Requer estado de bloco fornecido por contexto de saque e sempre falha se não for fornecido.
- block: Um ID de bloco. O teste falha se o bloco não corresponder.
- properties: (Opcional) Um mapa de nomes de estado de bloco para valores. Resulta em erro se o bloco não tiver essas propriedades.
- name: Um estado de bloco e um valor exato. O valor é uma string.
- name: Um nome de estado de bloco e um valor de intervalo para corresponder.
- min: O valor mínimo.
- max: O valor máximo.
- damage_source_properties—Verifica as propriedades da fonte de dano. Requer origem e fonte de dano fornecida por contexto de saque e sempre falha se não for fornecido.
- predicate: Predicado aplicado à fonte de dano.
- Tags comuns a todos os tipos de danos Veja Template:Nbt inherit/conditions/damage_type/template
- predicate: Predicado aplicado à fonte de dano.
- entity_properties—Verifica as propriedades de uma entidade. Invocável de qualquer contexto.
- entity: A entidade a ser verificada. Especifica uma entidade de contexto de saque. Pode ser
this
,killer
,direct_killer
, oukiller_player
. - predicate: Predicado aplicado à entidade, usa a mesma estrutura que os avanços.
- Tags comuns a todas as entidades Veja Template:Nbt inherit/conditions/entity/template
- entity: A entidade a ser verificada. Especifica uma entidade de contexto de saque. Pode ser
- entity_scores—Verifica as pontuações do placar de uma entidade. Requer a entidade especificada fornecida por contexto de saque e sempre falha se não for fornecido.
- entity: A entidade a ser verificada. Especifica uma entidade de contexto de saque. Pode ser
this
,killer
,direct_killer
, oukiller_player
. - scores: Pontuações para verificar. Todas as pontuações especificadas devem ser aprovadas para que a condição seja aprovada.
- A score: O nome da chave é o objetivo, enquanto o valor especifica um intervalo de valores de pontuação necessários para que a condição seja aprovada.
- min: Um provedor de números. O valor mínimo.
- max: Um provedor de números. O valor máximo.
- A score: Versão abreviada da outra sintaxe acima, para verificar a pontuação em relação a um único número apenas. O nome da chave é o objetivo, enquanto o valor é a pontuação necessária.
- A score: O nome da chave é o objetivo, enquanto o valor especifica um intervalo de valores de pontuação necessários para que a condição seja aprovada.
- entity: A entidade a ser verificada. Especifica uma entidade de contexto de saque. Pode ser
- inverted—Inverte outra condição da tabela de saque. Invocável de qualquer contexto.
- term: A condição a ser negada, seguindo a mesma estrutura descrita aqui, recursivamente.
- killed_by_player—Verifica se existe uma entidade
killer_player
fornecida por contexto de saque. Requerkiller_player
entidade fornecida por contexto de saque e sempre falha se não for fornecido.
- location_check—Verifica a localização atual em relação aos critérios de localização. Requer origem fornecida por contexto de saque e sempre falha se não fornecido.
- offsetX - deslocamentos opcionais para localização
- offsetY - deslocamentos opcionais para localização
- offsetZ - deslocamentos opcionais para localização
- predicate: Predicado aplicado ao local, usa a mesma estrutura que os progressos.
- Tags comuns a todos os locais Veja Template:Nbt inherit/conditions/location/template
- match_tool—Verifica a ferramenta usada para minerar o bloco. Requer ferramenta fornecida por contexto de saque e sempre falha se não fornecido.
- predicate: Predicado aplicado ao item, usa a mesma estrutura dos progressos.
- Tags comuns a todos os itens Veja Template:Nbt inherit/conditions/item/template
- predicate: Predicado aplicado ao item, usa a mesma estrutura dos progressos.
- random_chance—Gera um número aleatório entre 0,0 e 1,0 e verifica se é menor que um valor especificado. Invocável de qualquer contexto.
- chance: Taxa de sucesso como um número 0.0–1.0.
- random_chance_with_looting—Gera um número aleatório entre 0,0 e 1,0 e verifica se é menor que um valor especificado que foi afetado pelo nível de Saque na entidade
killer
. Requer uma entidadekiller
fornecido por contexto de saque e, se não for fornecido, o nível de saque é considerado como 0.- chance: Taxa básica de sucesso.
- looting_multiplier: Ajuste de pilhagem à taxa de sucesso básica. A fórmula é
chance + (looting_level * looting_multiplier)
.
- reference—Chama um arquivo de predicado e retorna seu resultado. Invocável de qualquer contexto.
- name: O local do recurso do predicado a ser invocado. Uma referência cíclica causa uma falha de análise.
- survives_explosion—Retorna sucesso com probabilidade
1 ÷ explosion radius
. Requer raio de explosão fornecido por contexto de saque e sempre sucesso se não for fornecido.
- table_bonus—Passa com probabilidade escolhida de uma lista, indexada pelo poder de encantamento. Requer a ferramenta fornecida por contexto de saque. Se não for fornecido, o nível de encantamento é considerado 0.
- enchantment: Localização do recurso de encantamento.
- chances: Lista de probabilidades de poder de encantamento, indexada a partir de 0.
- time_check—Compara a hora do dia atual (ou melhor,
24000 * contagem de dias + hora do dia
) com os valores fornecidos. Invocável de qualquer contexto.- value: A hora para comparar com a hora do dia.
- min: Um provedor de números. O valor mínimo.
- max: Um provedor de números. O valor máximo.
- value: Versão abreviada de value acima, usada para verificar apenas um único valor. Provedores de números não podem ser usados nesta forma abreviada.
- period: Se presente, a hora do dia é primeiro reduzida ao módulo do número fornecido antes de ser verificada contra value. Por exemplo, definir isso como 24000 faz com que o horário verificado seja igual ao dia atual.
- value: A hora para comparar com a hora do dia.
- value_check—Compara um número com outro número ou intervalo de números. Invocável de qualquer contexto.
- value: Um provedor de números. O número a testar.
- range: O intervalo de números para comparar value.
- min: Um provedor de números. O valor mínimo.
- max: Um provedor de números. O valor máximo.
- range: Versão abreviada de range acima, usada para comparar value contra um único número apenas. Provedores de números não podem ser usados nesta forma abreviada.
- weather_check—Verifica o clima atual do jogo. Invocável de qualquer contexto.
- raining: Se verdadeiro, a condição passa somente se estiver chovendo ou trovejando.
- thundering: Se verdadeiro, a condição passa apenas se estiver trovejando.
Histórico[]
Edição Java | |||||
---|---|---|---|---|---|
1.15 | 19w38a | Predicados adicionados aos pacotes de dados. | |||
1.16 | 20w12a | Adicionado subpredicado fishing_hook no predicado da entidade para verificar as propriedades do anzol. | |||
Em breve na Edição Java | |||||
1.19.3 | 23w06a | Removidos os seguintes campos de predicado de tipo de dano: is_projectile , is_explosion , bypasses_armor , bypasses_invulnerability , bypasses_magic , is_fire , is_magic , e is_lightning . | |||
Uma nova matriz de tags foi adicionada. Cada entrada tem dois campos:
|
Componentes |
| ||
---|---|---|---|
Pacotes de dados | |||
Tutoriais |
|