1. Wiki
  2. /Entidades
  3. /Filtros

Filtros

Cómo funcionan los filtros de entidad en los complementos de Minecraft Bedrock: test, subject, operator, value, all_of, any_of y none_of, más una tabla con las pruebas más útiles.

Un filtro es una pregunta de sí o no que el juego se hace sobre una criatura. "¿El atacante es un jugador?" "¿Es de día?" "¿Esta criatura está en el agua?" Si la respuesta es sí, el filtro se cumple y lo que protege puede ocurrir.

Los filtros aparecen por todas partes en los archivos de una criatura: en los eventos, en componentes como los sensores de daño y la selección de objetivos, y en las reglas de aparición. Apréndelos una vez y podrás usarlos en todas partes.

Los archivos

Los filtros no tienen un archivo propio. Van dentro de otros archivos, bajo claves llamadas filters (o biome_filter en las reglas de aparición).

Dónde aparecen los filtros
BP/
  entities/
    ruby_golem.json      <- in events and many components
  spawn_rules/
    ruby_golem.json      <- minecraft:biome_filter

Una prueba

El filtro más pequeño es una sola prueba (test):

Una sola prueba
{ "test": "is_family", "subject": "other", "operator": "==", "value": "player" }

Léelo como una frase: "¿La familia de la otra entidad es igual a player?"

CampoQué significaSi lo omites
testQué pregunta se hace. Mira las tablas de abajo.Obligatorio
subjectSobre quién se preguntaself
operatorCómo se compara con valueequals
valueCon qué se comparaEn las pruebas de sí/no: true
domainUn detalle extra para algunas pruebas, como una ranura de equipo o el nombre de una propiedadDepende de la prueba

Gracias a los valores por defecto, los filtros cortos son muy comunes:

Formas cortas
{ "test": "is_daytime" }
{ "test": "in_water", "value": false }
{ "test": "has_tag", "value": "wiki:tamed" }

El primero pregunta "¿es de día?". El segundo pregunta "¿esta criatura no está en el agua?".

Sujetos: a quién se pone a prueba

SujetoQuién es
selfLa criatura dueña del filtro
otherLa otra entidad de una interacción: la que es objetivo, la que se toca o con la que se interactúa
playerEl jugador que participa en la interacción
targetEl objetivo actual de la criatura
damagerQuien causó el daño, en un sensor de daño
parentEl padre o la madre de la criatura
blockEl bloque implicado, para pruebas de bloques como is_block

Qué sujetos tienen sentido depende de dónde esté el filtro. En un sensor de daño, other y damager son el atacante. En un comportamiento de selección de objetivos, other es la criatura que se está valorando como objetivo.

Operadores: cómo comparar

OperadorSignifica
==, =, equalsIgual a (por defecto)
!=, <>, notDistinto de
<Menor que
<=Menor o igual que
>Mayor que
>=Mayor o igual que

Los operadores de mayor/menor solo tienen sentido en pruebas de números como actor_health o distance_to_nearest_player.

Combinar pruebas

Junta varias pruebas con un grupo:

GrupoSe cumple cuando
all_ofSe cumplen todas las pruebas de dentro (Y)
any_ofSe cumple al menos una prueba de dentro (O)
none_ofNo se cumple ninguna prueba de dentro (NO)

Los grupos pueden contener otros grupos, así que puedes construir cualquier regla que necesites. Este se cumple para un jugador que no va agachado, de noche o durante una tormenta eléctrica:

Un filtro anidado
"filters": {
  "all_of": [
    { "test": "is_family", "subject": "other", "value": "player" },
    { "test": "is_sneaking", "subject": "other", "value": false },
    {
      "any_of": [
        { "test": "is_daytime", "value": false },
        { "test": "weather_at_position", "value": "thunderstorm" }
      ]
    }
  ]
}

Una lista sin grupo equivale a all_of

Si escribes una lista simple de pruebas sin nombre de grupo, todas las pruebas deben cumplirse, igual que con all_of. Las reglas de aparición del juego base lo hacen a menudo.

Dónde se usan los filtros

Sensor de daño: reacciona a quien te golpea

BP/entities/ruby_golem.json (components)
"minecraft:damage_sensor": {
  "triggers": [
    {
      "on_damage": {
        "filters": { "test": "is_family", "subject": "other", "value": "player" },
        "event": "wiki:become_angry"
      }
    }
  ]
}

Solo los jugadores hacen enfadar al gólem. El daño de criaturas, caídas o fuego no hace nada especial. Consulta minecraft:damage_sensor.

Selección de objetivos: a quién atacar

BP/entities/ruby_golem.json (component_groups)
"minecraft:behavior.nearest_attackable_target": {
  "priority": 2,
  "entity_types": [
    {
      "filters": {
        "all_of": [
          { "test": "is_family", "subject": "other", "value": "monster" },
          { "test": "is_family", "subject": "other", "operator": "not", "value": "creeper" }
        ]
      },
      "max_dist": 16
    }
  ]
}

El gólem caza monstruos, pero deja en paz a los creepers. Consulta behavior.nearest_attackable_target.

Sensor de entorno: reacciona al mundo

BP/entities/ruby_golem.json (components)
"minecraft:environment_sensor": {
  "triggers": [
    {
      "filters": { "test": "in_water" },
      "event": "wiki:start_rusting"
    }
  ]
}

El sensor de entorno comprueba sus filtros todo el tiempo y dispara el evento mientras se cumplen.

Eventos y reglas de aparición

Dentro de los eventos, filters decide si una entrada se ejecuta (consulta Eventos de entidad). En las reglas de aparición, minecraft:biome_filter usa las mismas pruebas para elegir biomas (consulta Reglas de aparición).

Las pruebas más útiles

Hay más de cien pruebas. Estas son las que usarás más a menudo, agrupadas por lo que comprueban.

¿Quién es?

PruebaValorSe cumple cuando el sujeto...
is_familyNombre de familia, como "player"tiene esa familia en minecraft:type_family
has_componentID de componente, como "minecraft:is_baby"tiene ese componente en este momento
has_tagNombre de etiquetatiene esa etiqueta de /tag
is_babytrue / falsees una cría
is_tamedtrue / falseestá domesticado
is_ownertrue / falsees el dueño de la criatura dueña del filtro
has_nametagtrue / falsetiene un nombre personalizado
is_variantNúmerotiene ese número en minecraft:variant
is_mark_variantNúmerotiene ese número en minecraft:mark_variant
is_colorNombre de color, como "red"tiene ese color

Vida y estado

PruebaValorSe cumple cuando el sujeto...
actor_healthNúmerotiene una vida que, comparada con el valor, cumple el operador (usa <, >, etc.)
is_missing_healthtrue / falseno tiene la vida al máximo
has_mob_effectID de efecto, como "poison"tiene ese efecto. Consulta Efectos del juego base.
on_firetrue / falseestá ardiendo
on_groundtrue / falseestá pisando el suelo
is_sneakingtrue / falseva agachado
is_sprintingtrue / falseestá esprintando
is_movingtrue / falsese está moviendo
is_ridingtrue / falseva montado en otra entidad
rider_countNúmerolleva ese número de jinetes
has_targettrue / falsetiene algo a lo que atacar
has_damageTipo de daño, como "fall" o "fire"está recibiendo ese tipo de daño (sensores de daño)

Objetos

PruebaValorSe cumple cuando el sujeto...
has_equipmentID de objetotiene ese objeto en la ranura indicada en domain, como "hand", "head" o "any"
has_equipment_tagEtiqueta de objetotiene un objeto con esa etiqueta en la ranura de domain
has_ranged_weapontrue / falselleva un arco o una ballesta

Dónde está

PruebaValorSe cumple cuando el sujeto...
in_watertrue / falseestá en el agua
is_underwatertrue / falseestá completamente bajo el agua
in_water_or_raintrue / falseestá en el agua o bajo la lluvia
in_lavatrue / falseestá en la lava
is_undergroundtrue / falsetiene bloques encima
in_nether / in_overworldtrue / falseestá en esa dimensión
has_biome_tagEtiqueta de bioma, como "desert"está en un bioma con esa etiqueta. Consulta Biomas del juego base.
is_biomeTipo de bioma, como "ocean" o "jungle"está en ese tipo general de bioma
is_altitudeNúmeroestá a una altura que, comparada con el valor, cumple el operador
is_blockID de bloque(con "subject": "block") el bloque implicado es ese bloque
is_in_villagetrue / falseestá dentro de una aldea

¿has_biome_tag o is_biome?

Mejor has_biome_tag. Las etiquetas son más precisas, y los biomas personalizados de otros complementos pueden llevar las mismas etiquetas.

Distancia

PruebaValorSe cumple cuando...
distance_to_nearest_playerNúmero de bloquesel jugador más cercano está a esa distancia (usa < o >)
target_distanceNúmero de bloquesel objetivo de la criatura está a esa distancia
owner_distanceNúmero de bloquesel dueño de la criatura está a esa distancia
home_distanceNúmero de bloquesel hogar de la criatura está a esa distancia

Hora, tiempo y el mundo

PruebaValorSe cumple cuando...
is_daytimetrue / falsees de día
hourly_clock_timeNúmero de 0 a 24000la hora del día, comparada con el valor, cumple el operador
moon_phaseNúmero de 0 a 7la luna está en esa fase
weather_at_positionTiempo, como "thunderstorm"el tiempo donde está el sujeto coincide
is_difficulty"peaceful", "easy", "normal" o "hard"el juego está en esa dificultad
is_game_ruletrue / falsela regla del juego indicada en domain está activada
random_chanceNúmerosale bien una tirada al azar: un valor de 10 se cumple más o menos 1 vez de cada 10

Propiedades de entidad

Estas leen las propiedades declaradas en la descripción de la criatura. El nombre de la propiedad va en domain:

PruebaValor
bool_propertytrue / false
int_propertyNúmero entero
float_propertyNúmero decimal
enum_propertyUna de las palabras de values
has_propertyEl nombre de la propiedad (en value, sin domain)
Comprobar una propiedad
{ "test": "enum_property", "domain": "wiki:mood", "value": "angry" }

Cuando algo sale mal

Lo que vesCausa más probable
El filtro nunca se cumplesubject equivocado. En un sensor de daño o en la selección de objetivos, normalmente quieres other, no self.
El filtro se cumple cuando no deberíaA una prueba de sí/no le falta "value": false donde querías decir "no", o una clave está mal escrita (como allof). Revisa el registro de contenido (Content Log).
Falla una prueba de familiaLa familia no está en la lista minecraft:type_family del objetivo
Falla una prueba de propiedadEl nombre de la propiedad en domain no coincide con el de description.properties
Una prueba de número se comporta raroFalta el operador, así que comprueba una coincidencia exacta

Tienes más ayuda en Solución de problemas.

We use cookies to improve your experience and analyse site traffic. Learn more