Saltar al contenido principal

Scripting Lua: Enums y valores

webapp_banner.jpg

Esta página enlaza a los tipos de valores de Spigot usados por los métodos Lua de EliteMobs. Pasa sus nombres de constante, como "FLAME", "ZOMBIE" y "STONE", como cadenas en tu código Lua. Usa valores disponibles en la versión de la API de tu servidor.

  • La ortografía debe coincidir exactamente con el nombre de la constante enum
  • Las mayúsculas y minúsculas suelen normalizarse internamente, pero utiliza la escritura de los Javadocs para evitar problemas
  • 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

Referencia de enumeraciones​

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 entidad; damage_equipment solo acepta HAND, OFF_HAND, HEAD, CHEST, LEGS, FEETEquipmentSlot
FireworkEffect.TypeForma del fuego artificialFireworkEffect.Type
MaterialBloques e ítemsMaterial
ParticleEfectos de partículasParticle. Las conversiones de nombres antiguos se aplican a las acciones de partículas de EliteScript; las funciones nativas de partículas de Lua requieren los nombres actuales de la API.
PotionEffectTypeEfectos de pociónPotionEffectType
SoundReproducción de sonidosSound
Los sonidos aceptan dos formatos

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).

Ambas rutas eliminan los espacios al principio y al final. Una clave sin namespace usa minecraft. Las claves mal formadas se ignoran; las claves con sintaxis válida se envían al cliente sin comprobar si el sonido existe. Por eso, una clave mal escrita o un sonido ausente del paquete de recursos puede no producir ningún sonido.

Valores ajenos a Spigot​

Estos valores son específicos de EliteMobs y no están en los Javadocs de Spigot:

Formas de zona​

Los usan las definiciones de zona nativas (campo kind) y las especificaciones de zona de las utilidades de script (campo shape). Estos valores distinguen mayúsculas de minúsculas. Usa minúsculas para las formas nativas y mayúsculas para las formas de las utilidades de script.

Nativa (kind)Utilidad de script (shape)
sphereSPHERE
domeDOME
cylinderCYLINDER
cuboidCUBOID
coneCONE
static_raySTATIC_RAY
rotating_rayROTATING_RAY
translating_rayTRANSLATING_RAY

Filtros de entidades​

Los usan las opciones de consulta de context.zones y context.entities. No distinguen mayúsculas de minúsculas; los alias aceptados figuran a continuación.

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

Los filtros desconocidos usan living, así que un error como "playr" incluye todos los tipos de entidades vivas dentro del área consultada. Estas consultas nativas excluyen al propio jefe. Las consultas de entidades en zonas buscan en el mundo del jefe; las consultas de cajas buscan en el mundo del centro proporcionado.

get_nearby_entities(radius, filter) comprueba la distancia esférica para los filtros de entidades vivas. Con all o entities, busca en una caja alineada con los ejes que se extiende radius en cada eje y devuelve tablas de referencia a entidades, incluidas las no vivas. Las demás consultas nativas tratan esos dos filtros como living.

context.script:zone({...}) usa un conjunto de filtros distinto y en mayúsculas (PLAYER, ELITE, LIVING) porque se ejecuta sobre el motor de EliteScript.

Valores del clima​

Lo usa context.world:set_world_weather(weather). Los valores se convierten a mayúsculas sin eliminar espacios. Un valor desconocido registra una advertencia y deja el clima sin cambios.

ValorEfecto
CLEARCielo despejado
PRECIPITATION / RAINLluvia
THUNDERTormenta

Tipos de objetivo​

Estos son los valores de objetivo de EliteScript. context.script:target() comparte el resolvedor, pero no proporciona datos de acciones heredadas ni de aterrizaje. Los objetivos de zona deben obtenerse mediante full_target() o border_target() de un identificador de zona.

ValorSe resuelve como
SELFLa entidad del jefe
SELF_SPAWNLa ubicación de aparición del jefe al resolver ubicaciones; el propio jefe al resolver entidades
DIRECT_TARGETEl objetivo directo del evento actual; no selecciona nada si el evento no lo proporciona
NEARBY_PLAYERSJugadores en una caja que se extiende range en cada eje desde el jefe
NEARBY_MOBSEntidades vivas que no son jugadores en esa caja, excluido el jefe
NEARBY_ELITESMobs elite en esa caja, excluido el jefe
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_FULLHereda la zona del EliteScript que lo llama; la selección actual de entidades utiliza su borde. Consulta las limitaciones de las zonas heredadas.
INHERIT_SCRIPT_ZONE_BORDEREn el borde de la zona del EliteScript que lo llama; consulta las limitaciones de las zonas heredadas para la resolución de ubicaciones.

No uses LANDING_LOCATION, ACTION_TARGET ni los tres valores INHERIT_SCRIPT_* con context.script:target(). El identificador Lua carece del estado de acción, herencia o aterrizaje correspondiente; la resolución puede no devolver objetivos o fallar. Una especificación aislada ZONE_FULL o ZONE_BORDER también carece de zona. Consulta Objetivos de EliteScript para la semántica de las acciones YAML.


Próximos pasos​