Scripting Lua: Enums y valores
Esta página enlaza a los Javadocs de Spigot para cada tipo de enum usado por los métodos Lua de EliteMobs. Use el nombre exacto de la constante enum (ej. "FLAME", "ZOMBIE", "STONE") como cadena en su código Lua.
- La ortografía debe coincidir exactamente con el nombre de la constante enum
- El caso generalmente se normaliza internamente, pero coincida con la ortografía de Javadoc para estar seguro
- El tratamiento de valores no válidos depende del método: algunos registran una advertencia, otros devuelven
nilo no hacen nada, y las API con validación pueden generar un error de Lua
Enum Reference
| Enum | Se usa para | Javadoc |
|---|---|---|
BarColor | Color de la barra de jefe | BarColor |
BarStyle | Estilo de la barra de jefe | BarStyle |
DamageCause | Filtrado por causa de daño | EntityDamageEvent.DamageCause |
EnderDragon.Phase | Control de fase del dragón del End | EnderDragon.Phase |
EntityEffect | Efectos visuales de entidad | EntityEffect |
EntityType | Aparición de entidades | EntityType |
EquipmentSlot | Ranuras de equipamiento de entidad | EquipmentSlot |
FireworkEffect.Type | Forma del fuego artificial | FireworkEffect.Type |
Material | Bloques e ítems | Material |
Particle | Efectos de partículas | Particle -- consulta también la lista de partículas válidas para las conversiones de nombres heredados |
PotionEffectType | Efectos de poción | PotionEffectType |
Sound | Reproducción de sonidos | Sound |
Todos los helpers de sonido de Lua (boss:play_sound_at_self, entity:play_sound_at_entity, world:play_sound_at_location) resuelven la cadena en dos pasos: primero prueban el nombre del enum Sound de Spigot (en mayúsculas, así que "entity_blaze_shoot" funciona), y si eso falla tratan la cadena como una clave de sonido con namespace (en minúsculas, así que tanto "entity.blaze.shoot" como tu propia clave de paquete de recursos "mypack:boss.roar" funcionan).
Eso significa que ya no tienes que elegir un formato -- pero un error tipográfico en cualquiera de las dos formas se ignora en silencio, porque la ruta de respaldo no puede distinguir un nombre de enum incorrecto de un sonido de un paquete personalizado que simplemente no está instalado.
Non-Spigot Values
Estos valores son específicos de EliteMobs y no están en los Javadocs de Spigot:
Zone shapes
Los usan las definiciones de zona nativas (campo kind) y las especificaciones de zona de las utilidades de script (campo shape).
Native (kind) | Script Utility (shape) |
|---|---|
sphere | SPHERE |
dome | DOME |
cylinder | CYLINDER |
cuboid | CUBOID |
cone | CONE |
static_ray | STATIC_RAY |
rotating_ray | ROTATING_RAY |
translating_ray | TRANSLATING_RAY |
Entity filters
Los usan las opciones de consulta de context.zones y context.entities. No distinguen mayúsculas de minúsculas, y cada uno tiene un alias en plural.
| Filtro | Coincide con |
|---|---|
player / players | Solo jugadores |
elite / elites | Solo mobs elite |
mob / mobs | Entidades vivas que no son jugadores (esto incluye a los elites) |
living | Todas las entidades vivas, jugadores incluidos (predeterminado) |
all / entities | Todas las entidades, incluidas las no vivas. Solo lo reconoce context.entities:get_nearby_entities |
Cualquier cosa que no sea una de estas cadenas recae en el comportamiento living en lugar de dar error, así que un error tipográfico como "playr" devuelve en silencio todas las entidades vivas.
context.script:zone({...}) usa un conjunto de filtros distinto y en mayúsculas (PLAYER, ELITE, LIVING) porque se ejecuta sobre el motor de EliteScript.
Weather values
Lo usa context.world:set_world_weather(weather).
| Valor | Efecto |
|---|---|
CLEAR | Cielo despejado |
PRECIPITATION / RAIN | Lluvia |
THUNDER | Tormenta |
Target types
Los usan las especificaciones de context.script:target().
| Valor | Se resuelve como |
|---|---|
SELF | La entidad del jefe |
SELF_SPAWN | La ubicación de aparición del jefe |
DIRECT_TARGET | La entidad implicada en el evento actual |
NEARBY_PLAYERS | Jugadores dentro del range del jefe |
NEARBY_MOBS | Mobs que no son jugadores dentro del range |
NEARBY_ELITES | Mobs elite dentro del range |
ALL_PLAYERS | Todos los jugadores conectados |
WORLD_PLAYERS | Todos los jugadores en el mundo del jefe |
ZONE_FULL | Entidades/ubicaciones dentro del volumen de una zona |
ZONE_BORDER | Entidades/ubicaciones en el borde de una zona |
LOCATION | Una ubicación concreta del campo location de la especificación |
LOCATIONS | Varias ubicaciones concretas de la lista locations de la especificación |
LANDING_LOCATION | Donde aterrizó un bloque que cae o una entidad invocada |
ACTION_TARGET | Hereda los objetivos de la acción de EliteScript que la envuelve |
INHERIT_SCRIPT_TARGET | Hereda el objetivo del EliteScript que la llama |
INHERIT_SCRIPT_ZONE_FULL | Dentro de la zona del EliteScript que la llama |
INHERIT_SCRIPT_ZONE_BORDER | En el borde de la zona del EliteScript que la llama |
Los cuatro últimos solo se resuelven cuando hay un EliteScript envolvente del que heredar, así que desde Lua tienen poca utilidad práctica. Consulta Objetivos de EliteScript para la semántica completa -- context.script usa esa misma implementación.
