Saltar al contenido principal

Condiciones de Elite Script

Las condiciones permiten a los creadores de scripts hacer que los scripts y/o las acciones no se ejecuten en función de condiciones específicas.

Escribe con mayúscula el Conditions del script

A nivel de script, la clave distingue mayúsculas de minúsculas. Ahí, un conditions: en minúsculas se ignora, de modo que el script se ejecuta sin ninguna condición y no se registra nada. Dentro de una acción, la clave se lee sin importar las mayúsculas, pero una acción que contiene a la vez Conditions: y conditions: hace que EliteMobs omita todo el script. Usa un mapa YAML, no una lista. Las claves internas (isAlive, conditionType, Target, ...) no distinguen mayúsculas, pero los valores enumerados como BLOCKING y FILTERING deben estar en mayúsculas.

Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Conditions:
isAlive: true
conditionType: BLOCKING
Target:
targetType: SELF
Actions:
- action: PLACE_BLOCK
Target:
targetType: SELF
offset: 0,3,0
duration: 20
material: DIRT
Conditions:
locationIsAir: true
conditionType: FILTERING
Target:
targetType: ACTION_TARGET
Cooldowns:
local: 60
global: 20

Example requiere una entidad de jefe válida. La acción comprueba el bloque 3 bloques por encima y coloca tierra solo si es aire, con una duración de 20 ticks. Cada acción puede tener sus propias condiciones.

Target​

Las condiciones usan el sistema de Targets. Su Target es independiente del de la acción y usa SELF si se omite. Usa ACTION_TARGET con condiciones FILTERING de una acción para comprobar sus objetivos individualmente.

Las condiciones del script y las condiciones BLOCKING de acciones resuelven su propio Target. Los objetivos de entidad, como SELF o NEARBY_PLAYERS, aportan entidades para todas las comprobaciones. LOCATION y LOCATIONS no aportan entidades: solo se aplican a sus posiciones las comprobaciones de ubicación, y el recuento de objetivos es 0. ACTION_TARGET no resuelve nada en esta ruta, así que solo se aplican randomChance y los recuentos de objetivos. LANDING_LOCATION falla en las condiciones a nivel de script porque se ejecutan antes de que exista una ubicación de aterrizaje.


Tipo de condición​

ClaveDetallesValores
conditionTypeEstablece el tipo de condiciónBLOCKING / FILTERING

BLOCKING impide ejecutar el script completo o la acción concreta donde se encuentra. Bloquear una acción no bloquea las demás. FILTERING con ACTION_TARGET elimina los objetivos que no cumplen las comprobaciones aplicables.

Las condiciones fuera de las acciones siempre son BLOCKING. Las condiciones dentro de las acciones pueden ser BLOCKING o FILTERING.

Nota: si el objetivo es SELF (el jefe) y la verificación de la condición es isAlive, ¡la verificación siempre es BLOCKING! Esto se puede colocar dentro de una condición FILTERING y aun así hará que esta parte específica se comporte como BLOCKING.

Las condiciones dentro de las acciones están establecidas como FILTERING de forma predeterminada.

Usa ACTION_TARGET con FILTERING para examinar cada objetivo resuelto de la acción. BLOCKING necesita un objetivo concreto como SELF o NEARBY_PLAYERS; su cálculo de entidades no resuelve ACTION_TARGET.

randomChance, targetCountLowerThan y targetCountGreaterThan solo se comprueban a nivel de script o en condiciones BLOCKING de acciones. El filtrado individual no los evalúa.

Las comprobaciones aplicables se combinan con AND: todas deben cumplirse. En modo bloqueante, todas las entidades y ubicaciones seleccionadas deben pasar. Una selección vacía no falla por sí sola; usa targetCountGreaterThan: 0 para exigir al menos una entidad. Con un objetivo de condición concreto en vez de ACTION_TARGET, el filtrado comprueba esa selección independiente y conserva todos los objetivos originales de la acción o los elimina todos.

El filtrado depende de lo que solicita la acción: las acciones sobre entidades comprueban validez, etiquetas y la ubicación de sus pies sin desplazamiento; las acciones sobre ubicaciones solo comprueban condiciones de ubicación. Las etiquetas e isAlive no filtran una colección de ubicaciones, salvo la comprobación bloqueante especial de validez para SELF descrita arriba.

Las condiciones del script se evalúan antes de iniciar las acciones. Las condiciones bloqueantes de una acción se evalúan después de wait y en cada repetición; un fallo cancela sus repeticiones restantes. Eliminar todos los objetivos mediante filtrado no cancela por sí solo futuras repeticiones. Si falla una condición del script, no empieza su enfriamiento; si falla la de una acción, no se deshace el enfriamiento del script.


Colocación de bloques de condición​

Puedes colocar o anidar bloques de condición de dos maneras:

  1. Bajo acciones individuales – La condición se aplicará solo a una acción específica. Si se cumple la condición, la acción se ejecuta; de lo contrario, no se ejecuta.

  2. Bajo todo el script – La condición se aplica a todas las acciones dentro del script. Si no se cumple la condición, ninguna de las acciones se ejecutará.

A continuación se muestran ejemplos que demuestran cómo anidar bloques de condición tanto para acciones individuales como para todo el script.

Bajo acciones individuales:

Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: MESSAGE
Target:
targetType: NEARBY_PLAYERS
range: 10
sValue: "&2Hello World!"
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
locationIsAir: true
Target:
targetType: SELF
offset: "0,3,0"

Para ejecutar SET_WEATHER, tanto el bloque a los pies del jefe como el situado 3 bloques por encima deben ser aire. Las condiciones bloqueantes comprueban primero la ubicación de la entidad y después la ubicación desplazada. MESSAGE se ejecuta igualmente porque no tiene condiciones.

Bajo todo el script:

Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: MESSAGE
Target:
targetType: NEARBY_PLAYERS
range: 10
sValue: "&2Hello World!"
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
locationIsAir: true
Target:
targetType: SELF
offset: "0,3,0"

Ambos bloques, el de los pies del jefe y el situado 3 bloques por encima, deben ser aire para permitir las dos acciones al recibir un golpe. En caso contrario se bloquea el script, incluidas SET_WEATHER y MESSAGE.


Invertir una condición con runIf...Is​

Cada condición tiene una clave complementaria runIf...Is que la invierte. Todas son booleanas y todas tienen true como valor predeterminado (es decir, «ejecutar cuando la condición sea verdadera»). Establecer una en false invierte esa condición.

No existe una clave genérica runIfConditionIs: cada condición tiene su propio nombre exacto, y tres de ellas no siguen el patrón evidente. Una clave no reconocida no se ignora en silencio; registra Failed to read key ... for script ... al arrancar.

CondiciónClave complementariaNotas
isAliverunIfAliveIs⚠️ No es runIfIsAliveIs
hasTagsrunIfHasTagIs⚠️ Tag en singular
doesNotHaveTagsrunIfDoesNotHaveTagIs⚠️ Tag en singular
locationIsAirrunIfLocationIsAirIs
isOnFloorrunIfIsOnFloorIs
isStandingOnMaterialrunIfIsStandingOnMaterialIs
randomChancerunIfRandomChanceIs
targetCountLowerThanrunIfTargetCountLowerThanIs
targetCountGreaterThanrunIfTargetCountGreaterThanIs

Los nombres de las claves de condición no distinguen mayúsculas de minúsculas, así que runifaliveis también funciona.

runIfConditionTypeIs no tiene efecto

El analizador acepta runIfConditionTypeIs sin avisar, pero nada lo lee. Usa conditionType para elegir BLOCKING o FILTERING; no hay forma de invertirlo.

Por ejemplo, locationIsAir: true exige aire. Añadir runIfLocationIsAirIs: false invierte la comparación y exige un bloque que no sea aire. Se invierte la comparación configurada: si tanto una condición booleana como su clave complementaria valen false, la comparación se invierte de nuevo.

Ejemplo:

eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
locationIsAir: true
runIfLocationIsAirIs: false
Target:
targetType: SELF

Esta acción establece una tormenta solo cuando el bloque a los pies del jefe no es aire, por ejemplo si está en agua. Invertir isAlive comprueba la validez de Bukkit; no crea un disparador de muerte, y una entidad inexistente falla incluso con inversión.


Condiciones basadas en la ubicación​

locationIsAir​

Comprueba si el bloque objetivo es aire, incluido el aire de cueva y del vacío. Usa false para exigir un bloque que no sea aire.

ClaveDetallesValores
locationIsAirEstablece la comprobación de si la ubicación es un bloque de aire (o lo contrario).Boolean
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
locationIsAir: true
Target:
targetType: SELF
offset: "0,3,0"

La acción del clima exige aire tanto a los pies del jefe como 3 bloques por encima. Para que una acción sobre ubicaciones compruebe solo su destino real, usa FILTERING con ACTION_TARGET, como en el primer ejemplo.


isOnFloor​

Comprueba que el bloque de la ubicación no sea sólido y que el situado una unidad debajo sí lo sea. Comprueba materiales, no el contacto físico de la entidad con el suelo ni las formas de colisión.

ClaveDetallesValores
isOnFloorEstablece la comprobación de si la ubicación es una ubicación en el suelo (o lo contrario).Boolean
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isOnFloor: true
Target:
targetType: SELF

La acción del clima requiere un bloque no sólido a los pies del jefe y uno sólido una unidad debajo. Un fallo bloquea esta acción.


isStandingOnMaterial​

Comprueba el material exacto del bloque situado una unidad debajo de la ubicación objetivo.

ClaveDetallesValores
isStandingOnMaterialEstablece qué tipo de material debe comprobarse.Material
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isStandingOnMaterial: BIRCH_WOOD
Target:
targetType: SELF

La acción del clima requiere BIRCH_WOOD una unidad debajo de los pies del jefe. BIRCH_LOG y BIRCH_PLANKS no coinciden. Un fallo bloquea esta acción.

Condiciones basadas en entidades​

isAlive​

Comprueba el estado isValid() de Bukkit de la entidad objetivo. Es una comprobación de validez, no una comparación directa de salud; una entidad inexistente falla.

ClaveDetallesValores
isAliveValidez esperada de la entidad de Bukkit.Boolean
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isAlive: true
Target:
targetType: SELF

La acción del clima solo se ejecuta mientras la entidad de Bukkit del jefe sea válida. Un fallo bloquea esta acción.


hasTags​

Exige todas las etiquetas indicadas en el almacenamiento de EliteMobs de una élite registrada o un jugador. Son cadenas que distinguen mayúsculas de minúsculas y se establecen con acciones como TAG y UNTAG. No se leen etiquetas del marcador de Minecraft y los mobs ordinarios no tienen este almacenamiento. Sin él, hasTags falla y doesNotHaveTags pasa antes de aplicar la inversión.

ClaveDetallesValores
hasTagsEstablece la comprobación de si la entidad tiene una lista de etiquetas.String List
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
hasTags:
- isCool
- hasANiceBeard
Target:
targetType: SELF

La acción del clima exige que el jefe tenga tanto isCool como hasANiceBeard. Un fallo bloquea esta acción.


doesNotHaveTags​

Pasa cuando el objetivo no tiene todas las etiquetas indicadas. Basta con que falte una; no exige que falten todas.

ClaveDetallesValores
doesNotHaveTagsEstablece la comprobación de si la entidad no tiene una lista de etiquetas.String List
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
doesNotHaveTags:
- isStinky
- isSus
Target:
targetType: SELF

Se ejecuta salvo que el jefe tenga tanto isStinky como isSus. Si solo tiene una de ellas, la condición pasa.

Otras condiciones​

randomChance​

Genera un nuevo número aleatorio cada vez que las comprobaciones bloqueantes llegan a esta condición. Usa un número simple entre 0.0 (nunca) y 1.0 (siempre), no un intervalo con ~. runIfRandomChanceIs: false invierte el resultado. En una acción repetida, un fallo cancela las repeticiones restantes.

ClaveDetallesValores
randomChanceProbabilidad de que la condición sea válida.Número entre 0.0 y 1.0
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
randomChance: 0.1
Target: # Not required
targetType: SELF # Not required

La acción del clima tiene un 10% de probabilidad de ejecutarse en cada comprobación. Un fallo bloquea esta acción.

El Target explícito de la condición es opcional porque su valor predeterminado es SELF. Omitirlo no desactiva las demás condiciones del bloque.

Filtrar NEARBY con etiquetas​

Para filtrar NEARBY_MOBS o NEARBY_PLAYERS en función de etiquetas específicas, usa ACTION_TARGET como objetivo de la condición (si la condición se aplica a una acción y no al script en sí). Esto garantiza que el script filtre con precisión solo los mobs/jugadores con las etiquetas especificadas.

Ejemplo
eliteScript:
Example:
Actions:
- action: SET_MOB_AI
Target:
targetType: NEARBY_MOBS
range: 40
bValue: false
Conditions:
conditionType: FILTERING
hasTags:
- TurnOff
Target:
targetType: ACTION_TARGET

Desactiva la IA de las élites registradas con la etiqueta TurnOff dentro de una caja que se extiende 40 bloques en cada eje, excluyendo al jefe. Los mobs ordinarios no tienen este almacenamiento de etiquetas. El ejemplo no tiene Events: llámalo desde otro script o añade un evento para activarlo.

targetCountLowerThan y targetCountGreaterThan​

Compara el número de entidades del objetivo de la condición antes de comprobar etiquetas u otras condiciones por entidad. No cuenta los objetivos filtrados de la acción. Las comparaciones son estrictas: la igualdad no pasa.

ClaveDetallesValores
targetCountLowerThanExige un número de entidades estrictamente menor que el umbral.Entero
ClaveDetallesValores
targetCountGreaterThanExige un número de entidades estrictamente mayor que el umbral.Entero
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
targetCountGreaterThan: 2
Target:
targetType: NEARBY_MOBS
range: 15

La acción del clima requiere más de 2 entidades vivas que no sean jugadores, excluyendo al jefe, en una caja que se extiende 15 bloques en cada eje.

Define explícitamente el Target de la condición para contar la población deseada. Si lo omites, cuenta la selección predeterminada SELF. Usa targetCountGreaterThan: 0 para exigir una selección no vacía.