Saltar al contenido principal

Scripting Lua: Enums y valores

webapp_banner.jpg

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 nil o no hacen nada, y las API con validación pueden generar un error de Lua

Enum Reference

EnumSe usa paraJavadoc
BarColorColor de la barra de jefeBarColor
BarStyleEstilo de la barra de jefeBarStyle
DamageCauseFiltrado por causa de dañoEntityDamageEvent.DamageCause
EnderDragon.PhaseControl de fase del dragón del EndEnderDragon.Phase
EntityEffectEfectos visuales de entidadEntityEffect
EntityTypeAparición de entidadesEntityType
EquipmentSlotRanuras de equipamiento de entidadEquipmentSlot
FireworkEffect.TypeForma del fuego artificialFireworkEffect.Type
MaterialBloques e ítemsMaterial
ParticleEfectos de partículasParticle -- consulta también la lista de partículas válidas para las conversiones de nombres heredados
PotionEffectTypeEfectos de pociónPotionEffectType
SoundReproducción de sonidosSound
Sounds accept two formats

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)
sphereSPHERE
domeDOME
cylinderCYLINDER
cuboidCUBOID
coneCONE
static_raySTATIC_RAY
rotating_rayROTATING_RAY
translating_rayTRANSLATING_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.

FiltroCoincide con
player / playersSolo jugadores
elite / elitesSolo mobs elite
mob / mobsEntidades vivas que no son jugadores (esto incluye a los elites)
livingTodas las entidades vivas, jugadores incluidos (predeterminado)
all / entitiesTodas 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).

ValorEfecto
CLEARCielo despejado
PRECIPITATION / RAINLluvia
THUNDERTormenta

Target types

Los usan las especificaciones de context.script:target().

ValorSe resuelve como
SELFLa entidad del jefe
SELF_SPAWNLa ubicación de aparición del jefe
DIRECT_TARGETLa entidad implicada en el evento actual
NEARBY_PLAYERSJugadores dentro del range del jefe
NEARBY_MOBSMobs que no son jugadores dentro del range
NEARBY_ELITESMobs elite dentro del range
ALL_PLAYERSTodos los jugadores conectados
WORLD_PLAYERSTodos los jugadores en el mundo del jefe
ZONE_FULLEntidades/ubicaciones dentro del volumen de una zona
ZONE_BORDEREntidades/ubicaciones en el borde de una zona
LOCATIONUna ubicación concreta del campo location de la especificación
LOCATIONSVarias ubicaciones concretas de la lista locations de la especificación
LANDING_LOCATIONDonde aterrizó un bloque que cae o una entidad invocada
ACTION_TARGETHereda los objetivos de la acción de EliteScript que la envuelve
INHERIT_SCRIPT_TARGETHereda el objetivo del EliteScript que la llama
INHERIT_SCRIPT_ZONE_FULLDentro de la zona del EliteScript que la llama
INHERIT_SCRIPT_ZONE_BORDEREn 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.


Próximos pasos