Referencia de la API de Lua
Esta referencia describe los constructores de tablas y los contextos Lua de MagmaCore, FreeMinecraftModels y EliteMobs. Las tablas compartidas y las de poderes de jefe de EliteMobs tienen contratos distintos; utiliza la sección correspondiente al script que escribes.
La mayoría de los métodos admiten tanto table.method(...) como table:method(...). Las funciones globales em.create_*, em.zone.create_* y em.location.* requieren punto, igual que los métodos de modificación de daño del evento de jefe indicados más adelante. Los campos compartidos que reflejan el estado actual se consultan de forma diferida: vuelve a leerlos para actualizar su valor y no les asignes valores, pues eso oculta la consulta. Una ubicación u otra instantánea ya guardada en una variable Lua no se actualiza sola.
Los métodos que procesan colores usan la sintaxis compartida de códigos de color, incluidos chat, títulos, barras, nombres personalizados y títulos de inventario de props.
Tabla de entidad
La tabla de entidad de MagmaCore es la base para los valores genéricos de entidad; las tablas de entidad viviente, de jugador y de prop de FreeMinecraftModels la heredan.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
uuid | string | UUID de la entidad. |
entity_type | string | Tipo de entidad de Bukkit en minúsculas. |
is_valid | bool | Valor de validez en vivo. |
is_dead | bool | Estado de muerte en vivo. |
current_location | table/nil | Ubicación {x, y, z, yaw, pitch, world} en vivo. |
world | string/nil | Nombre del mundo en vivo. |
is_player | bool | Si la entidad es un jugador. |
is_hostile | bool | Si la entidad implementa Monster de Bukkit. |
is_passive | bool | Si la entidad implementa Animals de Bukkit. |
is_on_ground | bool | Estado actual de contacto con el suelo. |
is_flying | bool | Estado actual de vuelo del jugador; false para otros tipos de entidad. |
in_block | bool | Estado actual de incrustación, exclusivo de flechas. |
attachment_location | table/nil | Centro del bloque que contiene la ubicación actual de una flecha incrustada; nil cuando la flecha no está dentro de un bloque. |
attachment_block | table/nil | Centro del bloque que realmente golpeó una flecha perteneciente a una acción de encantamiento activa. Devuelve nil si no hay un impacto incrustado válido registrado, o después de que la flecha se aleje, cambie de mundo o termine su acción. Identifica el bloque golpeado; no proporciona un destino de movimiento sin colisiones. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
teleport(location) | table | nil | Teletransporta a una tabla de ubicación. |
remove() | — | nil | Elimina la entidad si sigue siendo válida. |
set_silent(enabled) | bool | nil | Establece el estado silencioso. |
set_invulnerable(enabled) | bool | nil | Establece el estado invulnerable. |
set_gravity(enabled) | bool | nil | Establece el estado de gravedad. |
set_glowing(enabled) | bool | nil | Establece el estado de brillo. |
set_velocity(x, y, z) | number, number, number | nil | Sustituye la velocidad; los componentes deben ser finitos. |
set_fall_distance(distance) | number | nil | Establece una distancia de caída finita y no negativa. |
set_shooter(uuid) | string | bool | Método exclusivo de proyectiles; asigna una entidad resuelta que implemente ProjectileSource de Bukkit. |
set_direction(x, y, z) | number, number, number | nil | Método exclusivo de bolas de fuego; establece una dirección de vuelo finita y no nula. |
set_pickup(status) | string | nil | Método exclusivo de flechas; ALLOWED, DISALLOWED o CREATIVE_ONLY. |
can_receive_hostile_effect(actor_uuid) | string | bool | Comprueba si el objetivo puede recibir un efecto hostil del jugador conectado. Los proveedores pueden aplicar sus propias restricciones de combate. |
has_clear_movement_path(location) | table | bool | Comprueba de antemano un arrastre dentro del mismo mundo frente a colisiones, límites del mundo y chunks cargados. Las entidades que no son jugadores también rechazan regiones protegidas. No mueve la entidad. |
movement_path_status(location) | table | string | Devuelve clear, blocked, protected o unavailable; protected se aplica a entidades que no son jugadores. Las comprobaciones de colisión barren de forma conservadora la caja delimitadora de la entidad. |
Un trayecto libre para un jugador no autoriza la entrada ni el combate. El movimiento real sigue sujeto a los listeners de movimiento, incluidas las restricciones de entrada a regiones; la protección de construcción por sí sola no impide desplazarse a los jugadores.
Los argumentos de ubicación compartidos requieren x, y y z. Si se omite el mundo, se usa el de la entidad; un nombre de mundo que no se resuelve también conserva ese valor por defecto. Las consultas independientes em.location.* requieren un mundo cargado y usan cero para las coordenadas omitidas. Ni la comprobación de movimiento ni can_receive_hostile_effect se aplican automáticamente a las llamadas directas de teletransporte, velocidad o daño.
can_receive_hostile_effect requiere un jugador actor válido y conectado, y un objetivo válido, vivo, del mismo mundo y que no sea jugador. Rechaza soportes para armaduras, entidades invulnerables, entidades marcadas como NPC y animales domesticados. EliteMobs puede añadir restricciones de autorización de combate. Los UUID inválidos pueden provocar errores en set_shooter y set_owner; los nombres inválidos del enum de recogida también provocan errores.
Tabla de entidad: enriquecimiento de EliteMobs
El componente de EliteMobs añade estos valores a las tablas de entidad de MagmaCore. Los indicadores de seguimiento y la presencia de elite se determinan al construir la tabla; solo los campos indicados como actuales se actualizan al consultarlos. El adaptador opcional de EliteMobs de FreeMinecraftModels añade información de élites, pero no elite_player.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
is_elite | bool | Si EliteMobs rastreaba la entidad al construir la tabla. |
is_custom_boss | bool | Si el elite rastreado es un jefe personalizado. |
is_significant_boss | bool | Si es un jefe personalizado con un multiplicador de salud superior a 1. |
elite | table/nil | Datos anidados de EliteMobs, presentes solo para un élite resuelto. |
elite.level | int | Instantánea del nivel del elite. |
elite.name | string/nil | Instantánea del nombre mostrado del elite. |
elite.health | number | Salud en vivo. |
elite.max_health | number | Salud máxima en vivo. |
elite.is_custom_boss | bool | Si el elite es un jefe personalizado. |
elite.health_multiplier | number | Instantánea del multiplicador de salud configurado. |
elite.damage_multiplier | number | Instantánea del multiplicador de daño configurado. |
elite_player | table/nil | Tabla exclusiva de jugadores, resuelta de forma diferida cuando existen datos de jugador de EliteMobs. |
elite_player.tier | number | Categoría de combate del jugador calculada a partir de la XP de habilidades sin actualizar las consultas de encantamientos. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
elite.remove() | — | nil | Elimina el elite a través del pipeline de eliminación de EliteMobs. |
Tabla de entidad: enriquecimiento de FreeMinecraftModels
El componente de FreeMinecraftModels añade estas instantáneas; model existe solo cuando is_modeled es verdadero al construir la tabla. Los valores exclusivos de jugadores aparecen solo en sus tablas. Los métodos de modelo y permisos consultan los objetos subyacentes al llamarlos. En los scripts de EliteMobs, el adaptador opcional de FreeMinecraftModels de EliteMobs añade is_modeled, is_prop y model, pero no is_op ni has_permission.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
is_modeled | bool | Si FreeMinecraftModels resuelve una entidad modelada. |
is_prop | bool | Si la entidad es un prop de FreeMinecraftModels respaldado por un soporte para armaduras. |
model | table/nil | Datos de modelo anidados, presentes solo para una entidad modelada. |
model.model_id | string/nil | Identificador del blueprint del modelo. |
model.is_dynamic | bool | Si la entidad modelada es dinámica. |
is_op | bool | Instantánea del estado de operador del servidor, solo para jugadores. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
model.play_animation(name, blend?=false, loop?=false) | string, bool?=false, bool?=false | bool | Devuelve si se aceptó la reproducción, incluidas las solicitudes de ataque en cola o suprimidas; la muerte terminal rechaza la reproducción. |
model.stop_animations() | — | nil | Vacía la cola de reproducción y vuelve a idle cuando está disponible; no afecta a la muerte terminal. |
model.remove() | — | nil | Elimina la entidad modelada. |
has_permission(node) | string | bool | Comprobación de permiso, solo para jugadores. |
Tabla de entidad viviente
La tabla de entidad viviente de MagmaCore hereda todas las propiedades y métodos de la tabla de entidad.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
health | number | Salud en vivo. |
maximum_health | number | Salud máxima en vivo. |
name | string/nil | Nombre de entidad de Bukkit en vivo. |
is_alive | bool | Inverso en vivo del estado de muerte de Bukkit. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
damage(amount) | number | nil | Inflige daño de Bukkit. |
push(x, y, z) | number, number, number | nil | Añade inmediatamente un vector a la velocidad actual. |
set_facing(x, y, z) | number, number, number | nil | Teletransporta sin cambiar de posición, con la orientación indicada. |
add_potion_effect(type, duration, amplifier) | string (PotionEffectType), int, int | nil | Añade un efecto de poción cuando el tipo se resuelve. |
remove_potion_effect(type) | string (PotionEffectType) | nil | Elimina un efecto de poción cuando el tipo se resuelve. |
get_scale() | — | number | Devuelve el valor efectivo del atributo de escala, incluidos los modificadores, o 1.0 cuando no está disponible. |
set_scale(value) | number | nil | Establece el valor base del atributo de escala cuando el servidor lo admite. |
set_ai(enabled) | bool | nil | Activa o desactiva la IA de la entidad viva. |
set_owner(player_uuid) | string | bool | Domestica una entidad domesticable para un jugador conectado; también elimina la ira de los lobos. False para entidades no compatibles o jugadores no disponibles. |
has_potion_effect(type) | string | bool | Comprueba un nombre de efecto de poción de Bukkit; false cuando el nombre no se resuelve. |
Tabla de jugador
La tabla de jugador de MagmaCore hereda todas las propiedades y métodos de la tabla de entidad viviente.
En los scripts de FMM, la tabla de jugador también expone
is_holding_elitemobs_item(filename). Comprueba la etiqueta de nombre de archivo
de EliteMobs del objeto de la mano principal, independientemente de su nombre
visible o traducción, y devuelve false si la mano está vacía, es otro objeto o
la integración de EliteMobs no está disponible. Incluye .yml en el nombre,
por ejemplo player:is_holding_elitemobs_item("shroomwhispers_shears.yml").
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
game_mode | string | Instantánea del modo de juego de Bukkit en minúsculas. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
send_message(text) | string | nil | Envía texto procesado por el analizador de color de MagmaCore. |
chat(text) | string | nil | Hace que el jugador escriba en el chat mediante Bukkit, incluida la ejecución de comandos con prefijo de barra como ese jugador. El texto pasa por el analizador de color. |
get_held_item() | — | table/nil | Devuelve una instantánea {type, amount, display_name} del objeto de la mano principal, o nil si está vacía. type está en mayúsculas; sin nombre personalizado, display_name usa el nombre del material. |
consume_held_item(amount?=1) | int?=1 | nil | Encola la reducción de la pila que esté en la mano principal al ejecutarse la tarea; no devuelve un resultado de pago ni conserva el objeto comprobado. Usa una cantidad positiva; los valores negativos no se rechazan. |
has_item(material, amount?=1) | string (Material), int?=1 | bool | Comprueba si el inventario contiene la cantidad solicitada. |
get_target_entity(range?=50) | number?=50 | table/nil | Traza desde los ojos contra bloques y entidades, excluyendo al jugador, con tamaño de rayo de entidad 0.5; ignora fluidos y bloques transitables. |
get_eye_location() | — | table | Devuelve la ubicación de los ojos. |
get_look_direction() | — | table | Devuelve una dirección unitaria {x, y, z}. |
send_block_change(x, y, z, material, ticks?=-1) | int, int, int, string (Material), int?=-1 | bool | Encola un bloque visible solo para el cliente y su restauración opcional tras ticks positivos; los materiales inválidos o que no son bloques devuelven false. True significa encolado. |
reset_block(x, y, z) | int, int, int | bool | Encola la restauración del bloque real para este jugador. |
sleep(x, y, z) | number, number, number | nil | Encola la colocación de una cama blanca real e intenta dormir; al despertar o desconectarse, restaura el BlockData original. No restaura el contenido de las entidades de bloque. |
wake_up() | — | nil | Encola el despertar del jugador cuando está durmiendo. |
show_boss_bar(text, color?=WHITE, progress, ticks?=-1) | string, string (BarColor)?=WHITE, number, int?=-1 | nil | Reemplaza la barra sólida activa del jugador; limita progress a 0..1, usa blanco para un color inválido y puede ocultarla tras ticks positivos. Pasa nil como color para mantener progress en su tercera posición obligatoria. |
hide_boss_bar() | — | nil | Elimina la barra de jefe de Lua activa del jugador. |
show_action_bar(text, ticks?=-1) | string, int?=-1 | nil | Envía una vez, o repite cada 40 ticks hasta que termine una duración positiva. |
show_title(title, subtitle?="", fade_in, stay, fade_out) | string, string?="", int, int, int | nil | Muestra un título con el texto de título y subtítulo procesados por color. |
Las barras compartidas pertenecen al jugador dentro de la copia de MagmaCore del plugin anfitrión. No están aisladas por script: un nuevo show_boss_bar sustituye la barra actual del jugador, y un nuevo show_action_bar cancela la barra de acción repetitiva actual. Un temporizador de caducidad solo elimina la barra o la barra de acción que lo inició, así que una caducidad anterior ya no borra una más reciente. Estos temporizadores y los cambios de bloques encolados no pertenecen a context.scheduler. Los cambios y restauraciones de bloques leen el mundo del jugador al ejecutarse; no dependas de que restauren el bloque deseado tras un cambio de mundo. La limpieza del sueño comprueba por primera vez tras 20 ticks y después cada 10.
Tabla de mundo
La tabla de mundo de MagmaCore se expone como context.world y captura su mundo al construirse. Los poderes de jefe de EliteMobs la heredan y aplican las sustituciones documentadas más adelante. Las consultas cercanas devuelven arrays que empiezan en uno y usan cajas alineadas con los ejes, con radius como cada semiextensión; no excluyen al propietario del script ni filtran los modos de juego.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Instantánea del nombre del mundo. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
get_block_at(x, y, z) | int, int, int | string | Devuelve un nombre de Material en minúsculas, o air sin cargar un chunk descargado. |
set_block_at(x, y, z, material) | int, int, int, string (Material) | bool | Encola la colocación del bloque; los materiales inválidos devuelven false y la tarea encolada omite los chunks descargados. |
get_highest_block_y(x, z) | int, int | int | Devuelve la Y del bloque más alto. |
spawn_particle(particle, x, y, z, count?=1, dx?=0, dy?=0, dz?=0, speed?=0) | string (Particle), number, number, number, int?=1, number?=0, number?=0, number?=0, number?=0 | nil | Genera una partícula; los nombres inválidos no hacen nada. |
play_sound(sound, x, y, z, volume?=1, pitch?=1) | string (Sound), number, number, number, number?=1, number?=1 | nil | Reproduce un sonido registrado o una clave de sonido de paquete de recursos con espacio de nombres en minúsculas. |
strike_lightning(x, y, z) | number, number, number | nil | Lanza un rayo. |
get_time() | — | int | Devuelve la hora del mundo en ticks. |
set_time(ticks) | int | nil | Establece la hora del mundo. |
get_nearby_entities(x, y, z, radius) | number, number, number, number | table | Devuelve tablas de entidad o de entidad viviente cercanas. |
get_nearby_players(x, y, z, radius) | number, number, number, number | table | Devuelve tablas de jugador cercanas. |
spawn_entity(type, x, y, z) | string (EntityType), number, number, number | table/nil | Genera una entidad vanilla; los nombres de enum desconocidos devuelven nil, pero un tipo válido que no pueda generarse puede provocar un error. |
raycast(from_x, from_y, from_z, dir_x, dir_y, dir_z, max_distance?=50, fluid_mode?=NEVER, blocks_only?=false, loaded_only?=false) | seis números, number?, string?, bool?, bool? | table/nil | Devuelve hit_entity, hit_location y hit_block; los modos de fluidos son NEVER, SOURCE_ONLY, ALWAYS. Con loaded_only, rechaza los chunks descargados dentro del rectángulo delimitador del rayo y devuelve nil. |
place_temporary_block(x, y, z, material, ticks?=0, require_air?=false) | int, int, int, string (Material), int?=0, bool?=false | bool | Coloca un bloque temporal; los materiales inválidos o los chunks descargados devuelven false. |
drop_item(x, y, z, material, amount?=1) | number, number, number, string (Material), int?=1 | table/nil | Suelta un objeto de forma natural y devuelve su tabla de entidad; los materiales inválidos devuelven nil. |
spawn_firework(x, y, z, colors, type?=BALL, power?=1) | number, number, number, table, string (FireworkEffect.Type)?=BALL, int?=1 | nil | Encola un fuego artificial usando nombres de constantes Color de Bukkit, con blanco por defecto cuando ninguno se resuelve. |
strike_lightning_at_location(location) | table | nil | Lanza un rayo en el mundo de la tabla de ubicación. |
play_sound_at_location(location, sound, volume?=1, pitch?=1) | table, string (Sound), number?=1, number?=1 | nil | Reproduce un sonido registrado o una clave de sonido de paquete de recursos con espacio de nombres en minúsculas. |
spawn_particle_at_location(location, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0) | table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0 | nil | Genera mediante esta tabla de mundo. Proporciona una ubicación del mismo mundo. |
get_block_at_location(location) | table | string | Devuelve un nombre de material en minúsculas, o air para una ubicación inválida o un chunk descargado. |
set_block_at_location(location, material) | table, string (Material) | bool | Encola la colocación del bloque en el mundo de la tabla de ubicación. |
place_temporary_block_at_location(location, material, ticks?=0, require_air?=false) | table, string (Material), int?=0, bool?=false | bool | Coloca un bloque temporal en el mundo de la tabla de ubicación. |
get_highest_block_y_at_location(location) | table | int/nil | Devuelve la Y del bloque más alto, o nil para una ubicación inválida. |
terrain_impact_at_location(location, options?) | table, table? | table/nil | Muestra un impacto visual temporal en el terreno; opciones: radius=4.5 (0.5–6), intensity=1 (0–1), duration_ticks=35 (1–200), view_range=48 (1–96), seed; devuelve un identificador de control o nil. |
terrain_impact(x, y, z, options?) | number, number, number, table? | table/nil | Muestra el mismo impacto visual en unas coordenadas de este mundo. |
impact.is_active() | — | bool | Comprueba si el impacto está activo; impact.id es su identificador de texto. |
impact.remove() | — | bool | Elimina un impacto activo; false si ya está inactivo o falla la eliminación. |
get_entity(uuid) | string | table/nil | Resuelve una entidad válida en el registro de entidades cargadas de este mundo. Usa una cadena UUID válida. |
block_is_passable(x, y, z) | int, int, int | bool/nil | Devuelve la transitabilidad del bloque, o nil para chunks descargados o coordenadas fuera de los límites de altura. |
location_is_protected(location) | table | bool | Consulta los proveedores de protección registrados; si se omite el mundo, usa este. |
spawn_dust(location, count, red, green, blue) | table, int, int, int, int | nil | Genera DUST de tamaño fijo con componentes RGB de 0 a 255 y dispersión de 0.1 por eje; omite los chunks descargados. Usa una ubicación de este mundo. |
Un raycast sin impacto devuelve una tabla vacía con campos de impacto nil. Un impacto en bloque incluye hit_block = {x, y, z, material}, con material en minúsculas. El trazado combinado usa tamaño de rayo de entidad 0.5 y no filtra entidades. loaded_only=true comprueba todo el rectángulo delimitador y puede rechazar un rayo aunque el chunk descargado no esté en su trayectoria exacta. Los nombres de fluido inválidos provocan errores.
Los nombres de partículas compartidas se convierten a mayúsculas antes de buscarlos. Estos métodos posicionales no tienen argumento de datos, por lo que las partículas que los requieren pueden provocar errores; usa spawn_dust para polvo RGB compartido. Las consultas del bloque más alto y los métodos de aparición no tienen una comprobación general de chunks cargados. La colocación de bloques no comprueba automáticamente la protección de regiones. Un resultado true no demuestra que una edición encolada o una comprobación require_air hayan tenido éxito.
Los bloques temporales con ticks positivos guardan el BlockData original y lo restauran cuando termina el temporizador, cuando se descarga el chunk o el mundo, o cuando se apaga el plugin. La restauración solo ocurre mientras el bloque siga conteniendo el bloque temporal, así que no se sobrescribe una edición posterior. Volver a colocar un bloque temporal sobre un bloque que todavía contiene uno reinicia su temporizador y conserva el primer original guardado. Se omiten los bloques con entidades de bloque, como cofres y carteles, los chunks descargados y los bloques que ya mantiene otro propietario de bloques temporales. Romper un bloque temporal no suelta nada y termina el rastreo sin restaurarlo; colocar un bloque en esa posición también termina el rastreo. Los ticks no positivos colocan el bloque de forma permanente y sin rastrearlo. Estas operaciones no son un sistema de reversión limitado al script.
Adiciones de mundo compartidas de EliteMobs
EliteMobs registra estas utilidades en sus tablas de mundo compartidas, incluidos los scripts de NPC. Requieren que el chunk de destino esté cargado. La firma compartida de spawn_boss_at_location exige ubicación y nivel; los poderes de jefe la sustituyen por la forma de argumentos opcionales indicada más adelante.
| Método | Argumentos | Devuelve | Descripción |
|---|---|---|---|
lightning_effect_at_location(location) | table | nil | Muestra un rayo sin su daño normal, usando el bypass de aparición de rayos de EliteMobs. |
spawn_npc_at_location(file, location) | string, table | table/nil | Genera un NPC configurado y devuelve un manejador con remove(), o nil si la aparición no es válida. |
spawn_boss_at_location(file, location, level) | string, table, int | table/nil | Genera un jefe personalizado configurado y devuelve una tabla compartida de entidad viva, o nil si no está disponible. |
context.world: adiciones de FreeMinecraftModels
FreeMinecraftModels registra estos métodos en su propia tabla de mundo de MagmaCore, por lo que aparecen en context.world en sus scripts de props. Todos los métodos devuelven false cuando EliteMobs no está habilitado o no se resuelve el jugador. Las utilidades de botín recurren a la ubicación del jugador cuando falta su argumento de ubicación o no es utilizable.
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
start_elitemobs_transport(player, route_id) | player, string | bool | Inicia una ruta guardada de transporte de EliteMobs para un jugador del mismo mundo; false si el jugador o la integración no están disponibles. |
drop_elitemobs_procedural_loot(player, level, location?) | table/string, int, table? | bool | Suelta un objeto de EliteMobs generado proceduralmente para el jugador; devuelve false cuando las caídas de objetos procedurales están deshabilitadas. |
drop_elitemobs_random_loot(player, level, location?) | table/string, int, table? | bool | Tira las tablas de botín de EliteMobs para el jugador en el nivel indicado. |
drop_elitemobs_custom_loot(player, file, level, location?) | table/string, string, int, table? | bool | Suelta un archivo de objeto personalizado concreto de EliteMobs para el jugador; devuelve false cuando el archivo no se resuelve. |
El argumento player acepta una tabla de jugador, una cadena UUID o un nombre exacto de jugador. El argumento location acepta una tabla de ubicación o una tabla de entidad que contenga current_location. El botín procedural sigue el ajuste de entrega directa al inventario de EliteMobs, incluido dejar el excedente junto al jugador; no siempre cae en la ubicación solicitada.
Tabla auxiliar em
MagmaCore expone esta tabla globalmente antes de ejecutar cualquier hook. Sus constructores solo crean datos; no registran vigilancias, cargan mundos ni validan formas completas. Usa punto para las funciones globales. Los métodos de las ubicaciones y zonas devueltas también admiten dos puntos, modifican su tabla y devuelven esa misma tabla. Los setters de zona conservan por referencia la tabla de ubicación proporcionada.
Propiedades
Los constructores auxiliares devuelven las tablas de datos compactas que se muestran a continuación.
| Campo | Tipo | Descripción |
|---|---|---|
location.x | number | Coordenada X devuelta por em.create_location. |
location.y | number | Coordenada Y devuelta por em.create_location. |
location.z | number | Coordenada Z devuelta por em.create_location. |
location.world | string/nil | Nombre del mundo cuando se proporciona a em.create_location. |
location.yaw | number/nil | Yaw cuando se proporciona a em.create_location. |
location.pitch | number/nil | Pitch cuando se proporciona a em.create_location. |
vector.x | number | Componente X devuelto por em.create_vector. |
vector.y | number | Componente Y devuelto por em.create_vector. |
vector.z | number | Componente Z devuelto por em.create_vector. |
zone.kind | string | sphere, dome, cylinder, cuboid, cone, static_ray, rotating_ray o translating_ray. |
zone.radius | number/nil | Radio de la esfera, cúpula, cilindro o cono. |
zone.height | number/nil | Altura del cilindro. |
zone.x | number/nil | Tamaño X del cuboide. |
zone.y | number/nil | Tamaño Y del cuboide. |
zone.z | number/nil | Tamaño Z del cuboide. |
zone.length | number/nil | Longitud del cono o del rayo. |
zone.thickness | number/nil | Grosor del rayo estático. |
zone.point_radius | number/nil | Radio de punto del rayo rotatorio o de traslación. |
zone.animation_duration | number/nil | Duración de la animación del rayo rotatorio o de traslación. |
zone.origin | table/nil | Ubicación establecida por set_center o set_origin. |
zone.destination | table/nil | Ubicación establecida por set_destination. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
em.create_location(x, y, z, world?, yaw?, pitch?) | number, number, number, string?, number?, number? | table | Devuelve una tabla de ubicación. |
em.create_vector(x, y, z) | number, number, number | table | Devuelve una tabla de vector {x, y, z}. |
location.add(dx?=0, dy?=0, dz?=0) | number?=0, number?=0, number?=0 | table | Suma en el sitio y devuelve la misma tabla de ubicación. |
em.zone.create_sphere_zone(radius) | number | table | Devuelve una definición de esfera con set_center(location). |
em.zone.create_dome_zone(radius) | number | table | Devuelve una definición de cúpula con set_center(location). |
em.zone.create_cylinder_zone(radius, height) | number, number | table | Devuelve una definición de cilindro con set_center(location). |
em.zone.create_cuboid_zone(x, y, z) | number, number, number | table | Devuelve una definición de cuboide con set_center(location). |
em.zone.create_cone_zone(length, radius) | number, number | table | Devuelve una definición de cono con set_origin(location) y set_destination(location). |
em.zone.create_static_ray_zone(length, thickness) | number, number | table | Devuelve una definición de rayo estático con setters de origen y destino. |
em.zone.create_rotating_ray_zone(length, point_radius, animation_duration) | number, number, number | table | Devuelve una definición de rayo rotatorio con setters de origen y destino. |
em.zone.create_translating_ray_zone(length, point_radius, animation_duration) | number, number, number | table | Devuelve una definición de rayo de traslación con setters de origen y destino. |
zone.set_center(location) | table | table | Establece el centro como zone.origin y devuelve la misma tabla de zona. |
zone.set_origin(location) | table | table | Establece el origen y devuelve la misma tabla de zona. |
zone.set_destination(location) | table | table | Establece el destino y devuelve la misma tabla de zona. |
em.location.is_in_dungeon(location) | table | bool | Comprueba las regiones de mazmorra registradas y los propietarios que declaran el tipo dungeon. |
em.location.is_protected(location) | table | bool | Comprueba los adaptadores integrados de WorldGuard/GriefPrevention y los propietarios de protección registrados por plugins. |
em.location.owned_by(location, namespace) | table, string | bool | Comprueba la propiedad por espacio de nombres de plugin. |
em.location.owners(location) | table | table | Devuelve un array de cadenas de espacios de nombres propietarios. |
em.location.kinds_at(location) | table | table | Devuelve un array de cadenas de tipos de propiedad. |
em.location.has_kind(location, kind) | table, string | bool | Comprueba un tipo de propiedad. |
En em.location.*, world debe ser el nombre de un mundo cargado o una tabla con name; no se recurre al mundo del propietario. Un mundo omitido o no resuelto devuelve false o un array vacío, y las coordenadas omitidas usan cero. Los espacios de nombres de propietario distinguen mayúsculas; los tipos no. Ser propietario no implica pertenencia a una mazmorra ni protección. Las consultas reflejan los proveedores registrados, no todos los plugins de protección posibles; un adaptador de región registrado que falla informa de protección. Los arrays de propietarios y tipos no tienen un orden garantizado.
Contexto de un programa Mind
Los callbacks nativos de Mind usan este contexto en lugar del contexto habitual de poderes o NPC. Los programas de comportamiento basados en archivos también se cargan desde plugins/EliteMobs/behaviors/; consulta la configuración de comportamiento de jefes. Las integraciones de EliteMobs registran las definiciones ai.program y ai.module mediante EliteMindService; guardarlas en el directorio habitual powers no registra un programa Mind.
| Campo | Tipo | Descripción |
|---|---|---|
tick, generation | number | Tick actual del juego y generación del runtime. |
entity | table | Tabla compartida de entidad viva del actor. |
memory, perception, actuator, actions | table | Servicios siguientes, limitados al callback actual. |
| Método | Argumentos | Devuelve | Descripción |
|---|---|---|---|
memory.get(key) | string | value/nil | Lee una clave de memoria declarada. |
memory.set(key, value, ttl_ticks?) | string, value, int? | nil | Establece una memoria declarada con su tipo configurado y una caducidad opcional. |
memory.forget(key) | string | nil | Elimina una memoria declarada. |
memory.contains(key) | string | bool | Comprueba si existe un valor de memoria declarado. |
perception.current_target() | — | table/nil | Devuelve el objetivo actual como tabla compartida de entidad viva. |
perception.nearest_player(radius) | number | table/nil | Devuelve el jugador más cercano dentro del radio. |
perception.can_see(entity_or_uuid) | table/string | bool | Comprueba la línea de visión hacia una entidad viva. |
perception.navigation() | — | table | Devuelve destination_active, navigation_in_progress, consecutive_stuck_ticks, el campo opcional destination y el campo opcional last_progress con tick y position. |
actuator.move_to(location, speed?=1) | table, number?=1 | bool | Solicita navegar hasta una ubicación del mismo mundo con una velocidad finita y positiva; false si no se inició la búsqueda de ruta. |
actuator.stop_moving() | — | nil | Detiene la navegación. |
actuator.look_at(location) | table | nil | Mira hacia una ubicación. |
actuator.jump() | — | nil | Solicita un salto. |
actuator.set_target(entity_or_uuid) | table/string | bool | Establece una entidad viva como objetivo; false si no puede resolverla. |
actuator.clear_target() | — | nil | Borra el objetivo. |
actuator.attack(entity_or_uuid) | table/string | bool | Solicita un ataque; false si no puede resolver el objetivo. |
actuator.stop_all() | — | nil | Detiene el movimiento, el objetivo y el ataque que cubren los controles que tiene este comportamiento. |
actions.request(identifier, payload?) | string, table? | string | Solicita una acción semántica y devuelve su resultado en minúsculas; los datos admiten valores escalares, tablas de UUID de entidades y tablas de posición world/x/y/z. |
Cada callback construye las secciones de servicio al acceder por primera vez y las reutiliza durante ese callback. Las claves de memoria deben declararse; una clave no declarada provoca un error. Un resultado satisfactorio de actuator.set_target o actuator.attack significa que se resolvió una entidad viva y se remitió la solicitud, no que se completara la navegación o el ataque. Los datos de acción admiten los valores escalares y de entidad/posición compatibles, no tablas Lua anidadas arbitrarias. Los identificadores de acción deben ser claves en minúsculas con espacio de nombres de 128 caracteres como máximo; los datos admiten como máximo 16 entradas con claves en minúsculas de 64 caracteres como máximo, y los valores de texto están limitados a 256 caracteres. Todos los métodos del actuador salvo stop_all, y también actions.request, provocan un error si el comportamiento que llama no tiene el control correspondiente. Los sensores no pueden usar en absoluto el actuador ni las acciones. Los programas de comportamiento escritos en Lua se describen en Programas de Comportamiento.
Global ai
MagmaCore instala esta global en todos los entornos Lua. Los constructores solo etiquetan la tabla que reciben; EliteMobs compila las tablas etiquetadas a partir de los archivos de programas de comportamiento.
| Campo | Tipo | Descripción |
|---|---|---|
ai.controls.move, look, jump, target, attack, use_item, action | string | Nombres de control para el array controls de un comportamiento; use_item no tiene método de actuador en Lua. |
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
ai.program(definition) | table | table | Etiqueta una definición de programa con id, revision y los opcionales modules, memories, sensors, behaviors, budget y runaway. |
ai.module(definition) | table | table | Etiqueta una definición de módulo con id, revision y los opcionales dependencies, memories, sensors y behaviors. |
ai.sensor(definition) | table | table | Etiqueta un sensor con id, interval?=1 y sense(c). |
ai.behavior(definition) | table | table | Etiqueta un comportamiento con id, priority?=0, controls, can_start, can_continue, start, tick y stop(c, reason). |
context.mind_action: hook de poderes de EliteMobs
Disponible durante on_mind_action(context). El hook devuelve "accepted", "deferred" o "rejected"; los poderes asignados se recorren en orden de asignación hasta que uno acepta.
| Campo | Tipo | Descripción |
|---|---|---|
key | string | Identificador de la acción semántica con espacio de nombres. |
payload | table | Copia Lua de los datos de acción; editarla no modifica la solicitud original. Los UUID son cadenas y las posiciones son tablas {world, x, y, z}. |
game_tick, generation | number | Tick de la acción y generación del runtime. |
context.state
Cada instancia de script de MagmaCore recibe una tabla Lua simple que persiste durante toda la vida de esa instancia. Úsala para contadores, banderas, IDs de tareas y valores compartidos entre hooks.
context.state.counter = (context.state.counter or 0) + 1
context.log
Métodos de MagmaCore, FreeMinecraftModels y NPC de EliteMobs
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
info(message) | string | nil | Registra un mensaje informativo con el prefijo Lua compartido. |
warn(message) | string | nil | Registra una advertencia. |
error(message) | string | nil | Registra a través del canal de advertencia compartido. |
Métodos de poderes de jefe de EliteMobs
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
info(message) | string | nil | Registra un mensaje informativo de poder de jefe. |
warn(message) | string | nil | Registra una advertencia. |
debug(message) | string | nil | Registra un mensaje informativo con el prefijo de depuración de poder Lua. |
context.scheduler
Las tareas programadas pertenecen a la instancia del script y se cancelan cuando esta se apaga. Ambas familias de nombres siguientes están disponibles en las superficies compartidas de MagmaCore y en los poderes de jefe de EliteMobs.
Los callbacks reciben un contexto nuevo, normalmente sin event ni el player que lo desencadenó. Captura los valores o UUID necesarios antes de programarlos y después resuelve la entidad actual. Conservar el contexto original no conserva de forma segura su evento resuelto de forma diferida. Durante una pausa, las tareas únicas vencidas esperan y las repetitivas omiten ejecuciones sin recuperarlas después. Un error de callback cierra el script. El cierre cancela las tareas y vigilancias propias; no deshace ediciones arbitrarias de entidades o mundos ni cancela todos los temporizadores independientes de las utilidades.
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
run_later(ticks, callback) | int, function | int | Ejecuta una vez tras el retardo y devuelve el ID de tarea de Bukkit. |
run_repeating(delay, interval, callback) | int, int, function | int | Ejecuta repetidamente tras un retardo inicial y devuelve el ID de tarea. |
cancel(task_id) | int | nil | Cancela una tarea propia. |
run_after(ticks, callback) | int, function | int | Alias de run_later. |
run_every(interval, callback) | int, function | int | Ejecuta repetidamente sin retardo inicial y devuelve el ID de tarea. |
cancel_task(task_id) | int | nil | Alias de cancel. |
context.cooldowns
Omitir la clave local usa __lua: seguido del nombre de archivo del script. Las claves explícitas se usan exactamente como se proporcionan. Los almacenes locales de MagmaCore pertenecen al adaptador propietario del script: FMM crea uno distinto por script de prop, mientras que todos los scripts de un NPC de EliteMobs comparten adaptador y pueden coincidir en una clave local explícita. Los cooldowns globales de FMM se comparten entre los scripts del mismo prop; los de NPC se comparten en su adaptador.
Los poderes de jefe usan el almacén compartido del jefe para las claves locales y su cooldown de poder integrado para el estado global. Los temporizadores locales y los globales compartidos de MagmaCore miden tiempo real a 50 ms por tick, incluidas las pausas y los TPS bajos. Los cooldowns globales de jefe cuentan ticks del servidor y conservan la caducidad más tardía: un set_global más corto nunca acorta un cooldown global activo, y una duración no positiva no hace nada. Consultar o establecer un cooldown local no consulta ni establece automáticamente el global.
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
local_ready(key?) | string? | bool | Comprueba si el cooldown local indexado está listo. |
local_remaining(key?) | string? | int | Devuelve los ticks restantes, o 0 cuando está listo. |
check_local(key, duration) | string/nil, int | bool | Si está listo, inicia el cooldown y devuelve true. Pasa nil para la clave por defecto. |
set_local(duration, key?) | int, string? | nil | Establece o limpia el cooldown local; una duración no positiva lo limpia. |
global_ready() | — | bool | Comprueba si el cooldown global del propietario está listo. |
set_global(duration) | int | nil | Establece el cooldown global en ticks. En las superficies compartidas de MagmaCore, una duración no positiva lo limpia. |
context.zones: superficie compartida de MagmaCore
Los scripts de FreeMinecraftModels, los scripts de NPC de EliteMobs y otros consumidores de MagmaCore por defecto reciben manejadores de zona enteros en el mundo del propietario actual del script.
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
create_sphere(x, y, z, radius) | number, number, number, number | int/nil | Registra una esfera y devuelve su manejador, o nil cuando el propietario no tiene mundo. |
create_cylinder(x, y, z, radius, height) | number, number, number, number, number | int/nil | Registra un cilindro y devuelve su manejador, o nil cuando el propietario no tiene mundo. |
create_cuboid(x, y, z, x_size, y_size, z_size) | number, number, number, number, number, number | int/nil | Registra un cuboide y devuelve su manejador, o nil cuando el propietario no tiene mundo. |
watch(handle, on_enter?, on_leave?) | int, function?, function? | bool/nil | Habilita el seguimiento de límites para un manejador conocido. La presencia de la función habilita el hook on_zone_enter u on_zone_leave correspondiente; el cuerpo de la función proporcionada no se llama directamente. |
unwatch(handle) | int | nil | Detiene el seguimiento y elimina el manejador. |
Las vigilancias genéricas comprueban puntos de ubicación de jugadores. En esta ruta, los tamaños de los cuboides son semiextensiones (si Z es cero, se sustituye por X cuando X no es cero); esto no establece el mismo volumen que las consultas de solapamiento de entidades o de muestreo de ubicaciones de EliteMobs. Las zonas conservan sus coordenadas y mundo de creación, mientras cada tick examina los jugadores del mundo actual del propietario. Los hooks genéricos de zona exponen al jugador que cruza mediante context.player y context.event.player.
La creación inicia inmediatamente el seguimiento de pertenencia, antes de que watch instale los despachadores de hooks. Instalar la vigilancia después no emite una entrada para quien ya estaba rastreado dentro. Omitir un callback en una segunda llamada a watch no elimina un despachador anterior. Las desconexiones y unwatch no garantizan un hook de salida. Las zonas se comprueban antes de on_game_tick.
context.event: superficie compartida de MagmaCore
Esta tabla existe mientras un hook compartido tiene un evento de Bukkit o un actor actual. No está presente en callbacks programados ni en hooks sin ninguno de esos dos valores.
| Campo o método | Tipo | Descripción |
|---|---|---|
is_cancelled | bool | Estado de cancelación capturado al resolver por primera vez la subtabla de evento; llamar a cancel() o uncancel() no actualiza este campo. |
cancel() | método | Cancela el evento actual. Presente solo cuando implementa Cancellable de Bukkit. |
uncancel() | método | Descancela el evento actual. Presente solo cuando implementa Cancellable de Bukkit. |
player | table | Tabla de entidad viviente del actor actual cuando hay uno disponible. |
Los hooks genéricos de zona proporcionan un actor pero ningún evento cancelable de Bukkit, así que exponen is_cancelled = false y player sin cancel() ni uncancel().
context.item
Los scripts de acción de encantamiento exponen esta tabla cuando el origen capturado tiene una ranura de inventario y un objeto. Se dirige a esa ranura exacta y compara el material y los metadatos del objeto actual con la copia capturada, ignorando el daño y la cantidad de la pila. No busca en el inventario del jugador ni sigue la identidad única de un objeto: un reemplazo equivalente en la ranura capturada también coincide. Puede ser nil para munición consumida. Es distinto del entorno retirado de objetos equipados de FreeMinecraftModels.
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
get_durability() | — | table/nil | Durabilidad restante {current, max}; nil si el objeto no está disponible o no tiene durabilidad. |
get_durability_percentage() | — | number/nil | Durabilidad restante dividida por el máximo del material; normalmente 0..1, aunque metadatos con daño excesivo externo pueden quedar fuera del intervalo. |
use_durability(amount, can_break?=false) | int, bool? | bool | Modifica el daño; las cantidades negativas reparan. Por defecto conserva al menos un punto de durabilidad; can_break=true puede consumir la pila. |
use_durability_percentage(fraction, can_break?=false) | number, bool? | bool | Aplica ceil(max_durability * fraction) de daño con la misma política de rotura. |
consume(amount) | entero positivo | bool | Consume de la pila capturada solo cuando quedan suficientes objetos. |
La durabilidad usa el máximo del material, no un componente personalizado de daño máximo. Estos cambios directos no aplican cálculos de desgaste vanilla, Irrompibilidad, comprobaciones de objetos irrompibles ni eventos de daño al objeto del jugador. Los porcentajes requieren valores finitos y un resultado dentro del intervalo de enteros; las fracciones negativas reparan. La rotura consume toda la pila capturada. Para el ciclo de vida y contexto completo, consulta los encantamientos personalizados.
context.prop
Los scripts de props de FreeMinecraftModels reciben esta tabla, que hereda la tabla de entidad de MagmaCore cuando existe una entidad de respaldo.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
model_id | string/nil | Nombre del blueprint del modelo, o nil cuando no existe blueprint. |
current_location | table/nil | Ubicación en vivo del prop. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
play_animation(name, blend?=true, loop?=true) | string, bool?=true, bool?=true | bool | Reproduce la animación indicada. |
stop_animation() | — | nil | Vacía la cola de reproducción y vuelve a idle cuando está disponible; no afecta al estado terminal de muerte. |
hurt_visual() | — | nil | Reproduce el efecto visual rojo de daño sin infligir daño. |
pickup() | — | nil | Encola la eliminación permanente y suelta un objeto de colocación. |
has_mount_points() | — | bool | Comprueba si el prop tiene huesos de punto de montura. |
mount(player) | table | bool | Encola el montaje de un jugador resuelto en el primer asiento disponible. |
dismount(player) | table | bool | Encola el desmontaje de un jugador resuelto de este prop. |
get_passengers() | — | table | Devuelve las tablas de entidad de los jugadores montados. |
spawn_elitemobs_boss(file, x, y, z) | string, number, number, number | table/nil | Genera un jefe personalizado de EliteMobs cuando EliteMobs está habilitado. |
open_inventory(player, title, rows?=3) | table, string, int?=3 | bool | Encola la apertura del almacenamiento persistente con las filas limitadas de 1 a 6. |
place_book(player) | table | bool | Encola el guardado de un libro escrito o escribible que el jugador tenga en la mano, cuando el prop no tiene ninguno. |
read_book(player) | table | bool | Encola la apertura de un libro escrito guardado. |
take_book(player) | table | bool | Encola la devolución del libro guardado al jugador. |
has_book() | — | bool | Comprueba si el prop guarda un libro. |
drop_inventory() | — | bool | Encola el vaciado del almacenamiento persistente y suelta sus objetos. |
drop_book() | — | bool | Encola el vaciado y la caída del libro guardado. |
is_viewing_inventory(player) | table | bool | Comprueba si el jugador está viendo el inventario rastreado de este prop. |
set_persistent_data(key, value) | string, string | bool | Guarda una cadena bajo la clave fmm_lua_ con ámbito de prop. |
get_persistent_data(key) | string | string/nil | Devuelve la cadena guardada, o nil. |
En las operaciones de prop encoladas, true significa que pasaron las comprobaciones iniciales de jugador y entidad de respaldo, no que hubiera asiento, se guardara un libro o se abriera una interfaz. take_book elimina el almacenamiento antes de insertar el libro y no deja caer el excedente del inventario. Todos los que ven un mismo prop comparten un único inventario activo, que se guarda cuando lo cierra el último; mientras está abierto, las llamadas posteriores reutilizan su título y tamaño. Un contenido guardado mayor que las filas solicitadas se abre con su tamaño guardado, así que no se pierde ninguna ranura. Los datos se guardan en el soporte para armaduras; un objeto de colocación recién generado no garantiza conservarlos al recoger el prop.
En on_projectile_hit, los scripts de props también reciben context.projectile, una Tabla de entidad compartida para el proyectil. El hook no se dispara si otro plugin ya canceló el impacto. context.event envuelve el evento de impacto cancelable de FreeMinecraftModels, y context.event.player es el tirador cuando es una entidad viva, incluidos los mobs; context.player solo se establece cuando el proyectil lo disparó un jugador.
context.npc
Los scripts de NPC de EliteMobs heredan los contextos compartidos de MagmaCore y añaden esta tabla específica de NPC.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Nombre mostrado del NPC configurado. |
filename | string | Nombre del archivo de configuración del NPC. |
uuid | string | UUID del NPC en tiempo de ejecución. |
activation_radius | number | Radio de activación configurado. |
current_location | table | Instantánea de la ubicación, presente solo mientras exista la entidad viviente de respaldo. |
entity_type | string | Tipo de entidad de Bukkit en mayúsculas, presente solo mientras exista la entidad viviente de respaldo. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
is_valid() | — | bool | Comprueba si el NPC es válido. |
remove() | — | nil | Elimina el NPC mediante el ciclo de vida que lo gestiona. |
get_location() | — | table | Devuelve la ubicación actual del NPC, recurriendo a su ubicación de aparición. La tabla también incluye un vector direction. |
get_eye_location() | — | table | Devuelve la ubicación actual de los ojos, recurriendo a la ubicación de aparición. La tabla también incluye un vector direction. |
get_activation_radius() | — | number | Devuelve el radio de activación configurado actual. |
get_nearby_players(radius) | number | table | Devuelve tablas de jugadores del mismo mundo dentro de un radio 3D desde los pies del NPC, sin filtrar el modo de juego. |
face_direction_or_location(target) | table | nil | Orienta hacia un vector o una ubicación del mismo mundo; se ignora mientras la patrulla se mueve activamente. |
say_greeting(player?) | table/string? | nil | Envía el saludo configurado, usando por defecto al jugador que lo desencadenó cuando está disponible. Se acepta una tabla de jugador, un UUID o un nombre. |
say_dialog(player?) | table/string? | nil | Envía el diálogo configurado con la misma resolución de jugador. |
say_farewell(player?) | table/string? | nil | Envía la despedida configurada con la misma resolución de jugador. |
play_model_animation(name) | string | nil | Reproduce una animación de modelo cuando existe un modelo personalizado. |
patrol_pause() | — | bool | Pausa la patrulla configurada. |
patrol_resume() | — | bool | Reanuda la patrulla tras una espera o marcha de script. |
walk_to(x, y, z) | number, number, number | bool | Camina hasta un desplazamiento del origen y reanuda la patrulla. |
hold(x, y, z) | number, number, number | bool | Camina hasta un desplazamiento y permanece allí. |
teleport(x, y, z) | number, number, number | bool | Se teletransporta a un desplazamiento que procesa entidades. |
Tabla de ubicación de poderes de EliteMobs
Las tablas de poderes de jefe de EliteMobs devuelven esta forma de ubicación desde get_location(), get_eye_location(), current_location y otros resultados de ubicación. Una ubicación ausente devuelve una tabla vacía.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
x, y, z | number | Coordenadas. |
yaw, pitch | number | Rotación. |
world | string/nil | Nombre del mundo cuando la ubicación tiene mundo. |
direction | table | Vector unitario {x, y, z} de orientación. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
add(dx?=0, dy?=0, dz?=0) | number?=0, number?=0, number?=0 | table | Suma a las coordenadas en la propia tabla y devuelve la misma tabla; direction no se actualiza. |
Tabla de referencia de entidad de poderes de EliteMobs
Los métodos de poderes de jefe de EliteMobs devuelven esta tabla ligera para entidades no vivientes como proyectiles, fuegos artificiales y bloques que caen.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Instantánea del nombre de la entidad. |
uuid | string | UUID de la entidad. |
entity_type | string | Instantánea del tipo de entidad de Bukkit en mayúsculas. |
is_player | bool | Siempre false. |
is_elite | bool | Siempre false. |
is_mount | bool | False salvo que un jefe marque como true una tabla de montura devuelta. |
current_location | table | Instantánea de la ubicación. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
is_valid() | — | bool | Comprueba la validez en vivo. |
get_location() | — | table | Devuelve la ubicación en vivo. |
get_velocity() | — | table | Devuelve la velocidad en vivo. |
is_on_ground() | — | bool | Comprueba el estado en vivo de contacto con el suelo. |
teleport_to_location(location) | table | nil | Teletransporta cuando la ubicación se resuelve. |
set_velocity_vector(vector) | table | nil | Establece la velocidad cuando el vector se resuelve. |
set_direction_vector(vector) | table | nil | Establece la dirección de una bola de fuego cuando corresponde. |
set_yield(amount) | number | nil | Establece la potencia de la bola de fuego cuando corresponde. |
set_gravity(enabled) | bool | nil | Establece la gravedad. |
detonate() | — | nil | Detona cuando la entidad es un fuego artificial. |
remove() | — | nil | Elimina la entidad. |
unregister(reason?=OTHER) | string?=OTHER | nil | Da de baja usando DEATH, PHASE_BOSS_RESET, PHASE_BOSS_PHASE_END, CHUNK_UNLOAD, WORLD_UNLOAD, SHUTDOWN, EFFECT_TIMEOUT, BOSS_TIMEOUT, NPC_TIMEOUT, OTHER, UNSPECIFIED_WATCHDOG_REMOVAL, REMOVE_COMMAND, KILL_COMMAND, REINFORCEMENT_CULL, ENTITY_REPLACEMENT o ARENA_RESET. |
is_inside_vehicle() | — | bool | Comprueba si la entidad va montada en un vehículo. |
has_vehicle() | — | bool | Comprueba si existe un vehículo. |
get_vehicle() | — | table/nil | Devuelve la referencia al vehículo actual. |
set_vehicle(vehicle) | table | bool | Hace que esta entidad monte el vehículo resuelto. |
leave_vehicle() | — | bool | Abandona el vehículo actual. |
has_passengers() | — | bool | Comprueba si existen pasajeros. |
get_passenger_count() | — | int | Devuelve el número de pasajeros. |
get_passengers() | — | table | Devuelve las referencias a los pasajeros. |
add_passenger(passenger) | table | bool | Añade el pasajero resuelto. |
remove_passenger(passenger) | table | bool | Elimina el pasajero resuelto. |
eject_passengers() | — | bool | Expulsa a todos los pasajeros. |
Tabla de entidad viviente de poderes de EliteMobs
Los valores de entidades vivientes de los poderes de jefe de EliteMobs usan esta tabla aparte; las tablas de jefe y de jugador de poderes de EliteMobs la heredan.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Instantánea del nombre de la entidad. |
uuid | string | UUID de la entidad. |
entity_type | string | Instantánea del tipo de entidad de Bukkit en mayúsculas. |
is_player | bool | Si la entidad es un jugador. |
is_monster | bool | Si la entidad implementa Monster de Bukkit. |
is_elite | bool | Si EliteMobs rastrea la entidad. |
is_mount | bool | Si el jefe personalizado rastreado es una montura. |
is_valid | bool | Instantánea de validez. |
health | number | Instantánea de salud. |
maximum_health | number | Instantánea de salud máxima. |
current_location | table | Instantánea de la ubicación. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
is_alive() | — | bool | Comprueba la validez en vivo y el estado de muerte. |
is_ai_enabled() | — | bool | Devuelve el estado en vivo de la IA. |
is_frozen() | — | bool | Devuelve la opción de congelación del jefe personalizado de EliteMobs, o false. |
get_location() | — | table | Devuelve la ubicación en vivo. |
get_eye_location() | — | table | Devuelve la ubicación en vivo de los ojos. |
get_height() | — | number | Devuelve la altura de la entidad de Bukkit. |
get_health() | — | number | Devuelve la salud en vivo. |
get_maximum_health() | — | number | Devuelve la salud máxima en vivo. |
get_velocity() | — | table | Devuelve la velocidad en vivo. |
deal_damage(amount) | number | nil | Inflige daño genérico de Bukkit. |
deal_custom_damage(amount) | number | nil | Envía daño personalizado directo desde el jefe a un objetivo vivo; omite al propio jefe, a los objetivos invulnerables o muertos y a los jugadores que no estén en Supervivencia/Aventura. Sujeto a la política de instancia y a la cancelación del evento de daño. |
deal_damage_from_boss(amount) | number | nil | Inflige daño de Bukkit atribuido al jefe del poder. |
restore_health(amount) | number | nil | Cura a través de EliteMobs cuando está rastreado; en caso contrario limita la salud de Bukkit al máximo. |
play_sound_at_entity(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | Reproduce un sonido registrado o personalizado con espacio de nombres en la entidad. El segundo argumento puede ser en su lugar {volume, pitch}. |
play_sound_at_self(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | Alias que reproduce en la entidad. El segundo argumento puede ser en su lugar {volume, pitch}. |
spawn_particle_at_self(particle, count?=1) | string (Particle)/table, int?=1 | nil | Genera una partícula a partir de una cadena o de una tabla de especificación de partícula en la entidad. |
spawn_particles_at_location(location, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0) | table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0 | nil | Genera una partícula en una ubicación. |
teleport_to_location(location) | table | nil | Teletransporta cuando la ubicación se resuelve. |
set_velocity_vector(vector) | table | nil | Establece la velocidad cuando el vector se resuelve. |
set_gravity(enabled) | bool | nil | Establece la gravedad. |
is_on_ground() | — | bool | Comprueba el estado en vivo de contacto con el suelo. |
apply_push_vector(vector, additive?=false, delay?=1) | table, bool?=false, int?=1 | nil | Aplica velocidad tras un retardo, opcionalmente sumándola a la velocidad actual. |
set_custom_name(name) | string | nil | Establece un nombre personalizado procesado por color. |
reset_custom_name() | — | nil | Restaura el nombre de EliteMobs cuando está rastreado; en caso contrario, el nombre de Bukkit. |
set_custom_name_visible(visible) | bool | nil | Establece la visibilidad del nombre personalizado. |
set_ai_enabled(enabled, duration?=0) | bool, int?=0 | nil | Establece la IA como cambio propio; un número positivo de ticks restaura el valor sustituido. true termina el cambio de IA activo de este poder, si lo hay, en lugar de aplicar un valor nuevo. |
set_awareness_enabled(enabled, duration?=0) | bool, int?=0 | nil | Establece la percepción del mob como cambio propio; un número positivo de ticks restaura el valor sustituido. true termina el cambio de percepción activo de este poder, si lo hay, en lugar de aplicar un valor nuevo. |
face_direction_or_location(target) | table | nil | Orienta hacia un vector o hacia una ubicación del mismo mundo. |
play_model_animation(name) | string | nil | Reproduce una animación de modelo personalizado cuando está disponible. |
set_scale(scale, duration?=0) | number, int?=0 | nil | Establece la escala base como cambio propio; un número positivo de ticks restaura el valor sustituido. |
set_invulnerable(enabled, duration?=0) | bool, int?=0 | nil | Establece la invulnerabilidad como cambio propio; un número positivo de ticks restaura el valor sustituido. |
remove_elite() | — | nil | Elimina un elite rastreado a través del pipeline de eliminación de EliteMobs. |
is_healing() | — | bool | Comprueba el estado de curación del elite rastreado. |
set_healing(enabled) | bool | nil | true marca un elite rastreado como en curación si todavía no lo está; false solo borra la curación que estableció este poder. Al apagarse el poder, se borra la curación que siga siendo suya. |
navigate_to_location(location, speed?=1, force?=false, timeout?=0) | table, number?=1, bool?=false, int?=0 | nil | Hace navegar a un jefe personalizado rastreado. |
add_tag(tag, duration?=0) | string, int?=0 | nil | Añade una etiqueta y la elimina tras un número positivo de ticks. |
remove_tag(tag) | string | nil | Elimina una etiqueta. |
has_tag(tag) | string | bool | Comprueba una etiqueta de entidad, elite o jugador. |
push_relative_to(location, force?=1, extra_x?=0, extra_y?=0, extra_z?=0) | table, number?=1, number?=0, number?=0, number?=0 | nil | Sustituye inmediatamente la velocidad por un vector normalizado hacia fuera multiplicado por force, más desplazamientos en los ejes del mundo. Usa un origen del mismo mundo. |
overlaps_box_at_location(center, half_x?=0.5, half_y?=half_x, half_z?=half_x) | table, number?=0.5, number?, number? | bool | Comprueba la caja delimitadora de la entidad contra la caja solicitada. |
is_inside_vehicle() | — | bool | Comprueba si la entidad va montada en un vehículo. |
has_vehicle() | — | bool | Comprueba si existe un vehículo. |
get_vehicle() | — | table/nil | Devuelve la referencia al vehículo actual. |
set_vehicle(vehicle) | table | bool | Hace que esta entidad monte el vehículo resuelto. |
leave_vehicle() | — | bool | Abandona el vehículo actual. |
has_passengers() | — | bool | Comprueba si existen pasajeros. |
get_passenger_count() | — | int | Devuelve el número de pasajeros. |
get_passengers() | — | table | Devuelve las referencias a los pasajeros. |
add_passenger(passenger) | table | bool | Añade el pasajero resuelto. |
remove_passenger(passenger) | table | bool | Elimina el pasajero resuelto. |
eject_passengers() | — | bool | Expulsa a todos los pasajeros. |
apply_potion_effect(type, duration, amplifier?=0) | string (PotionEffectType), int, int?=0 | nil | Resuelve un nombre de poción de Bukkit convertido a mayúsculas y lo aplica si la política de instancia lo permite. Los amplificadores empiezan en cero. |
set_equipment(slot, material, options?) | string (EquipmentSlot), string (Material), table? | nil | Establece el equipamiento; las opciones admiten entradas unbreakable y enchantments con type y level. |
damage_equipment(slot, amount) | string, int | int | Solicita 1–64 puntos de daño de durabilidad en HAND, OFF_HAND, HEAD, CHEST, LEGS o FEET; devuelve el daño realmente aplicado. Respeta la cancelación del evento de daño al objeto del jugador y los objetos irrompibles; puede romper el objeto. |
set_fire_ticks(ticks) | int | nil | Establece los ticks de fuego si la política de instancia lo permite. |
add_visual_freeze_ticks(ticks?=1) | int?=1 | nil | Añade ticks de congelación de Minecraft si la política de instancia lo permite; puede causar daño de congelación y no bloquea la IA ni el movimiento. |
place_temporary_block(material, ticks?=0, require_air?=false) | string (Material), int?=0, bool?=false | nil | Coloca un bloque temporal en la entidad. |
Los cambios de IA, percepción, escala e invulnerabilidad pertenecen al poder que los hace. Cada uno registra el valor que sustituyó. Una duración positiva restaura ese valor tras los ticks indicados; una duración de 0 mantiene el cambio hasta que el poder se apaga, lo que también lo restaura. Cuando varios poderes cambian la misma propiedad, al terminar un cambio se restaura el cambio restante más reciente, o el valor original si no queda ninguno. Si otro plugin o comando cambia la propiedad entretanto, se conserva su valor y no se restaura nada. Pausar un poder no termina estos cambios. El apply_push_vector retardado y los temporizadores de eliminación de etiquetas siguen ejecutándose independientemente del planificador propio del script. reset_custom_name restaura el nombre de un élite rastreado; para una entidad Bukkit normal usa su nombre actual, no uno original guardado.
Tabla de jugador de poderes de EliteMobs
Los valores de jugador de los poderes de jefe de EliteMobs heredan todas las propiedades y métodos de la tabla de entidad viviente de poderes de EliteMobs.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
game_mode | string | Instantánea del modo de juego de Bukkit en mayúsculas. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
send_message(text) | string | nil | Envía texto de chat procesado por color. |
show_action_bar(text) | string | nil | Envía una barra de acción procesada por color. |
show_title(title, subtitle?="", fade_in?=10, stay?=40, fade_out?=10) | string, string?="", int?=10, int?=40, int?=10 | nil | Muestra un título procesado por color. |
show_boss_bar(title, color?=WHITE, style?=SOLID, duration?=40) | string, string (BarColor)?=WHITE, string (BarStyle)?=SOLID, int?=40 | nil | Muestra una barra de jefe y la elimina tras un número positivo de ticks. |
run_command(command) | string | nil | Ejecuta un comando como el jugador. |
context.boss
Los poderes de jefe de EliteMobs reciben esta tabla, que hereda todas las propiedades y métodos de la tabla de entidad viviente de poderes de EliteMobs y sustituye las filas aquí listadas con semántica de nivel elite.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Instantánea del nombre mostrado del elite o del nombre de archivo del script. |
uuid | string | UUID del elite. |
health | number | Instantánea de la salud del elite. |
maximum_health | number | Instantánea de la salud máxima del elite. |
current_location | table | Instantánea de la ubicación del elite. |
level | int | Instantánea del nivel del elite. |
damager_count | int | Instantánea del número de atacantes. |
is_in_combat | bool | Instantánea del estado de combate. |
exists | bool | Instantánea de la existencia del elite. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
is_alive() | — | bool | Comprueba la entidad viviente y el estado de existencia en EliteMobs. |
get_health() | — | number | Devuelve la salud en vivo del elite. |
get_maximum_health() | — | number | Devuelve la salud máxima en vivo del elite. |
get_location() | — | table | Devuelve la ubicación en vivo del elite. |
restore_health(amount) | number | nil | Cura a través de la entidad de EliteMobs. |
add_tag(tag, duration?=0) | string, int?=0 | nil | Añade una etiqueta de elite y la elimina tras un número positivo de ticks. |
remove_tag(tag) | string | nil | Elimina una etiqueta de elite. |
has_tag(tag) | string | bool | Comprueba una etiqueta de elite. |
reset_custom_name() | — | nil | Restaura el nombre mostrado del elite. |
play_sound_at_self(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | Reproduce un sonido registrado o personalizado con espacio de nombres en la ubicación del elite. El segundo argumento puede ser en su lugar {volume, pitch}. |
play_sound_at_entity(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | Alias que reproduce en la ubicación del elite. El segundo argumento puede ser en su lugar {volume, pitch}. |
spawn_particle_at_self(particle, count?=1) | string (Particle)/table, int?=1 | nil | Genera una partícula en la ubicación del elite. |
play_model_animation(name) | string | nil | Reproduce la animación del modelo del jefe personalizado cuando está disponible. |
navigate_to_location(location, speed?=1, force?=false, timeout?=0) | table, number?=1, bool?=false, int?=0 | nil | Hace navegar a un jefe personalizado. |
get_damager_count() | — | int | Devuelve el número de atacantes en vivo. |
despawn() | — | nil | Elimina el elite con el motivo OTHER. |
remove() | — | nil | Alias de despawn(). |
patrol_pause() | — | bool | Pausa la patrulla configurada. |
patrol_resume() | — | bool | Reanuda la patrulla tras una espera o marcha de script. |
walk_to(x, y, z) | number, number, number | bool | Camina hasta un desplazamiento del origen y reanuda la patrulla. |
hold(x, y, z) | number, number, number | bool | Camina hasta un desplazamiento y permanece allí. |
teleport(x, y, z) | number, number, number | bool | Se teletransporta a un desplazamiento que procesa entidades. |
get_ender_dragon_phase() | — | string/nil | Devuelve el nombre de EnderDragon.Phase, o nil. |
set_ender_dragon_phase(phase) | string (EnderDragon.Phase) | nil | Establece una fase válida del dragón del End. |
has_mount() | — | bool | Comprueba si el jefe tiene un vehículo de montura vivo. |
get_mount() | — | table/nil | Devuelve la referencia a la montura marcada con is_mount = true. |
set_mount(mount) | table | bool | Hace que el jefe monte la entidad resuelta. |
clear_mount() | — | bool | Abandona el vehículo actual. |
dismount() | — | bool | Alias de clear_mount(). |
start_tracking_fireball_system(speed?=0.5) | number?=0.5 | nil | En un jefe de tipo monstruo, lanza bolas de fuego rastreadoras hacia jugadores en Supervivencia/Aventura a 20 bloques o menos en cada eje en el tick siguiente y cada 160 ticks mientras tenga objetivo. El poder es dueño de esta tarea: pausarlo la pausa, y perder el objetivo o apagarse la detiene. La velocidad debe ser finita y positiva. |
handle_spirit_walk_damage(cause) | string (DamageCause) | nil | Ejecuta el manejo de daño de Spirit Walk. |
shield_wall_is_active() | — | bool | Comprueba el estado del muro de escudos. |
initialize_shield_wall(openingDirection?=1) | int?=1 | nil | Inicializa reservas por dirección iguales al nivel del jefe. Apertura: 1 norte, 2 este, 3 sur, 4 oeste; otros enteros protegen todos los lados. No cambia un muro ya activo. |
shield_wall_absorb_damage(player, damage) | table, number | bool | Resta daño de la reserva del lado del atacante si era positiva; true indica que el script debe cancelar el evento de daño. No lo cancela automáticamente. |
deactivate_shield_wall() | — | nil | Detiene la tarea independiente del muro y elimina su estado y efectos. Cerrar Lua por sí solo no lo desactiva. |
start_zombie_necronomicon(target, chant) | table, string | nil | Inicia el controlador independiente para un objetivo vivo. La cadena es texto mostrado, no un archivo; invoca los archivos fijos de zombi/esqueleto del necronomicón al nivel del lanzador. |
send_message(text, range?=20) | string, number?=20 | nil | Envía texto procesado por color a los jugadores dentro del radio. |
get_nearby_players(range) | number | table | Devuelve tablas de jugador de poderes de EliteMobs cercanas. |
get_nearby_elites(radius) | number | table | Devuelve hasta 32 élites vivas registradas del mismo mundo, excluyendo al jefe; ordenadas por distancia y luego por UUID en caso de empate. El radio debe ser mayor que 0 y como máximo 64. |
get_target_player() | — | table/nil | Devuelve el objetivo actual del mob cuando es un jugador. |
get_nearby_players_in_zone(zone) | table | table | Devuelve los jugadores contenidos en la zona. |
spawn_particles_in_zone(zone, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0, coverage?=1) | table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0, number?=1 | nil | Muestrea el interior de la zona y genera partículas. |
spawn_particles_in_zone_border(zone, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0, coverage?=1) | table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0, number?=1 | nil | Muestrea el borde de la zona y genera partículas. |
get_particles_from_self_toward_zone(zone, particle, speed?=0.1) | table, string (Particle), number?=0.1 | table | Construye especificaciones de partículas direccionales desde el jefe hacia los puntos muestreados de la zona. |
get_particles_toward_self(zone, particle, speed) | table, string (Particle), number | table | Construye especificaciones de partículas direccionales hacia el jefe; el constructor en vivo lee actualmente la velocidad del último argumento proporcionado. |
spawn_particles_with_vector(particles) | table | nil | Genera un array de especificaciones de partículas direccionales. |
summon_reinforcement(file, zone_or_location?, duration?=0) | string, table?, int?=0 | table/nil | Invoca un refuerzo en un punto muestreado de la zona, en una ubicación o en el jefe; una duración positiva lo elimina después de ese número de ticks. |
summon_projectile(type, origin, destination, speed?=1, options?) | string (EntityType), table, table, number?=1, table? | table/nil | Genera un proyectil; las opciones admiten custom_damage, detonation_power, yield, incendiary, gravity, glowing, invulnerable, persistent, duration, effect de EntityEffect, spawn_at_origin, direction_only, track, on_land y max_ticks. |
context.players: poderes de jefe de EliteMobs
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
current_target() | — | table/nil | Devuelve el actor del evento cuando es un jugador; en caso contrario, el objetivo actual del mob del jefe cuando es un jugador. |
nearby_players(radius) | number | table | Devuelve las tablas de jugador dentro del radio del jefe. |
all_players_in_world() | — | table | Devuelve todas las tablas de jugador del mundo actual del jefe. |
context.entities: poderes de jefe de EliteMobs
Las consultas de colecciones excluyen al propio jefe. Los filtros de entidades vivientes aceptan player/players, elite/elites, mob/mobs o cualquier otro valor para todas las entidades vivientes. No filtran por Supervivencia/Aventura ni por pertenencia a una instancia de mazmorra. La consulta de objetivo directo devuelve el proporcionado por el hook independientemente de esos filtros de colección.
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
get_nearby_entities(radius, filter?="living") | number, string? | table | Los filtros de entidades vivas usan un radio 3D desde los pies. all o entities usa en cambio la consulta de caja alineada con los ejes de Bukkit e incluye entidades no vivas. |
get_entities_in_box(center, half_x, half_y, half_z, filter?="living") | table, number, number, number, string? | table | Devuelve entidades vivas cuya ubicación de pies está dentro de la caja, incluido su límite. |
get_all_entities(filter?="living") | string? | table | Devuelve las entidades vivientes coincidentes en el mundo del jefe. |
get_direct_target_entity() | — | table/nil | Devuelve el objetivo directo proporcionado por el hook actual. |
get_boss_spawn_location() | — | table | Devuelve la ubicación de aparición original del jefe. |
context.vectors: poderes de jefe de EliteMobs
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
get_vector_between_locations(source, destination, options?) | table, table, table? | table | Devuelve el vector entre ubicaciones del mismo mundo, o {x=0,y=0,z=0} para entradas inválidas o de mundos distintos. Las opciones admiten normalize, multiplier y el vector offset. |
rotate_vector(vector, pitch?=0, yaw?=0) | table, number?=0, number?=0 | table | Devuelve el vector rotado por pitch y yaw en grados. |
normalize_vector(vector) | table | table | Devuelve un vector unitario; un vector cero sigue siendo cero. |
context.zones: poderes de jefe de EliteMobs
Los poderes de jefe de EliteMobs sustituyen la superficie compartida de zonas con manejadores enteros por consultas de definición de zona de Elite Script.
La pertenencia de entidades, la contención de puntos y las ubicaciones muestreadas para partículas son operaciones distintas y pueden diferir en los límites. coverage cambia las ubicaciones muestreadas, no la selección de entidades. watch_zone captura una forma y llama a cada callback con una tabla de entidad, no un contexto; empieza tras un tick e informa de las entidades ya presentes como entradas. Detener una vigilancia no emite callbacks de salida.
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
get_entities_in_zone(zone, options?) | table, table? | table | Devuelve las entidades vivientes coincidentes. Las opciones admiten filter y mode = "full" o "border". |
get_locations_in_zone(zone, options?) | table, table? | table | Devuelve ubicaciones muestreadas. Las opciones admiten coverage y mode = "full" o "border". |
zone_contains(zone, location, mode?="full") | table, table, string? | bool | Comprueba si la ubicación está en la forma completa o en el borde. |
watch_zone(zone, callbacks, options?) | table, table, table? | nil | Vigila con callbacks {on_enter, on_leave}. Las opciones admiten filter y mode; la vigilancia propia se detiene con el script. |
context.script: poderes de jefe de EliteMobs
Este puente acepta las mismas claves de tabla que la configuración YAML de objetivo, zona y vector relativo de Elite Script.
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
target(spec) | table | manejador de objetivo | Crea un manejador de objetivo. |
zone(spec) | table | manejador de zona | Crea un manejador de zona. |
relative_vector(spec, location?, zone?) | table, table?, manejador de zona? | manejador de vector | Crea un manejador de vector relativo, usando por defecto al jefe como ubicación de acción. |
damage(target, amount?=0, multiplier?=1) | manejador de objetivo, number?=0, number?=1 | nil | Envía daño Bukkit atribuido al jefe. Los golpes a jugadores entran en el escalado de combate de EliteMobs con el multiplicador; los demás no aplican ese multiplicador. |
push(target, vector, additive?=false) | manejador de objetivo, table/manejador de vector, bool?=false | nil | Tras un tick mediante una tarea propia, sustituye o suma velocidad a los objetivos capturados; usa un único vector resuelto para todos y convierte un vector ausente/no finito en cero. |
set_facing(target, vector) | manejador de objetivo, table/manejador de vector | nil | Orienta las entidades objetivo resueltas a lo largo del vector. |
spawn_particles(target, particles) | manejador de objetivo, table/string | nil | Genera la especificación de partículas en las ubicaciones objetivo resueltas. |
Estas llamadas no ejecutan automáticamente una lista de acciones, condiciones, cooldowns, avisos retardados ni repeticiones de Elite Script. Los manejadores conservan el contexto de evento y objetivo directo de su creación; evita reutilizar los que dependen de eventos entre hooks independientes. first_entity() significa el primer resultado del resolutor, no necesariamente la entidad más cercana.
Métodos del manejador de objetivo
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
entities() | — | table | Resuelve y devuelve tablas de entidad. |
locations() | — | table | Resuelve y devuelve tablas de ubicación. |
first_entity() | — | table/nil | Devuelve la primera entidad resuelta. |
first_location() | — | table/nil | Devuelve la primera ubicación resuelta. |
Métodos del manejador de zona
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
full_target(coverage?) | number? | manejador de objetivo | Crea un manejador de objetivo para el interior de la forma. |
border_target(coverage?) | number? | manejador de objetivo | Crea un manejador de objetivo para el borde. |
full_locations(coverage?) | number? | table | Resuelve las ubicaciones muestreadas del interior. |
border_locations(coverage?) | number? | table | Resuelve las ubicaciones muestreadas del borde. |
full_entities() | — | table | Resuelve las entidades dentro de la forma. |
border_entities() | — | table | Resuelve las entidades en el borde. |
contains(location, mode?="full") | table, string? | bool | Comprueba la pertenencia a la forma completa o al borde. |
watch(callbacks, mode?="full") | table, string? | int | Inicia una vigilancia propia {on_enter, on_leave} y devuelve su ID de tarea. |
Métodos del manejador de vector relativo
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
resolve() | — | table | Resuelve el vector para el contexto actual. |
Tabla de eventos de poderes de EliteMobs
Los valores de evento de los poderes de jefe de EliteMobs exponen campos y métodos de forma condicional según el tipo de evento.
Propiedades
| Campo | Tipo | Descripción |
|---|---|---|
damage_amount | number/nil | Instantánea de la cantidad de daño del evento. |
damage_cause | string/nil | Nombre de DamageCause cuando el evento de daño expone uno. |
damager | table/nil | Referencia directa al causante del evento de daño por entidad; en un impacto de proyectil es el proyectil, no quien lo disparó. |
projectile | table/nil | Referencia al proyectil cuando el atacante es un proyectil. |
spawn_reason | string/nil | Motivo de aparición del elite. |
entity | table/nil | Refuerzo dañado, entidad del evento de muerte o entidad del evento de zona, según el hook. |
is_damage_transfer | bool/nil | Solo para daño de jugador a élite: indica si este hook procesa un golpe transferido explícitamente. |
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
cancel_event() | — | nil | Cancela un EliteDamageEvent u otro evento cancelable. |
set_damage_amount(amount) | number | nil | Reemplaza el daño de un EliteDamageEvent; requiere context.event.set_damage_amount(...), con punto. |
multiply_damage_amount(multiplier) | number | nil | Multiplica el daño de un EliteDamageEvent; requiere context.event.multiply_damage_amount(...), con punto. |
get_damage_amount() | — | number | Devuelve la cantidad actual de EliteDamageEvent después de las modificaciones. |
transfer_damage(target, amount) | referencia de entidad, number | bool | Solo para daño de jugador a élite: envía daño finito no negativo a otro élite vivo permitido por la política de instancia. Cero, entradas canceladas, transferencias anidadas y el objetivo original devuelven false; un receptor no élite provoca un error. True significa enviado, no daño garantizado. No resta ni cancela el daño original. |
context.world: adiciones y sustituciones de EliteMobs
Los poderes de jefe heredan la tabla de mundo compartida, incluidas las utilidades compartidas de EliteMobs de efecto de rayo y aparición de NPC, y después añaden o sustituyen los métodos siguientes. Los métodos de coordenadas heredados conservan el comportamiento compartido. Los métodos de ubicación específicos de jefe usan su conversor: una ubicación ausente o que no sea tabla recurre al jefe, las coordenadas omitidas usan cero y un mundo nombrado explícitamente debe resolverse.
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
play_sound_at_location(location, sound, volume?=1, pitch?=1) | table, string (Sound), number?=1, number?=1 | nil | Sustitución que acepta sonidos registrados o personalizados con espacio de nombres a través del soporte de EliteMobs. |
spawn_particle_at_location(location, particle, count?=1) | table, string (Particle)/table, int?=1 | nil | Sustitución que acepta una tabla de especificación de partícula de EliteMobs. |
set_block_at_location(location, material, require_air?=false) | table, string (Material), bool?=false | nil | Sustitución que coloca el bloque de forma permanente mediante el gestor de bloques temporales, sin temporizador ni rastreo. |
place_temporary_block_at_location(location, material, ticks?=0, require_air?=false) | table, string (Material), int?=0, bool?=false | nil | Sustitución que usa la colocación de bloques temporales de EliteMobs. |
get_block_type_at_location(location) | table | string/nil | Devuelve un nombre de Material en mayúsculas, o nil para una ubicación inválida. |
get_highest_block_y_at_location(location) | table | int/nil | Sustitución que devuelve la Y del bloque más alto, o nil. |
get_blast_resistance_at_location(location) | table | number | Devuelve la resistencia a explosiones del bloque, con 0 por defecto para una ubicación inválida. |
is_air_at_location(location) | table | bool | Comprueba si el bloque objetivo es aire. |
is_passable_at_location(location) | table | bool | Comprueba la transitabilidad según Bukkit. |
is_passthrough_at_location(location) | table | bool | Comprueba si el material no es sólido. |
is_on_floor_at_location(location) | table | bool | Comprueba que el objetivo no sea sólido y que haya un bloque sólido debajo. |
is_standing_on_material(location, material) | table, string (Material) | bool | Comprueba el bloque de debajo. |
strike_lightning_at_location(location) | table | nil | Sustitución que habilita el bypass de rayos de EliteMobs antes de lanzarlo. |
run_empowered_lightning_task_at_location(location) | table | nil | Emite 60 iteraciones de aviso de forma independiente, seguidas de un rayo real y una bola de fuego descendente de potencia 5. Causa daño; pausar o cerrar Lua no la cancela. |
set_world_time(time) / set_world_time(location, time) | int/table, int? | nil | Establece la hora del mundo del jefe o la del mundo de la ubicación proporcionada. |
set_world_weather(weather, duration?=6000) / set_world_weather(location, weather, duration?=6000) | string/table, string/int?, int?=6000 | nil | Establece CLEAR, PRECIPITATION, RAIN o THUNDER. |
run_console_command(command) | string | nil | Ejecuta un comando como la consola. |
spawn_boss_at_location(file, location?, level?) | string, table?, int? | table/nil | Genera un jefe personalizado en la ubicación proporcionada o actual y con el nivel proporcionado o actual. |
spawn_custom_boss_at_location(file, location, options?) | string, table, table? | table/nil | Genera un jefe personalizado; las opciones admiten silent, level, add_as_reinforcement y velocity. |
spawn_entity_at_location(type, location, options?) | string (EntityType), table, table? | table/nil | Genera una entidad vainilla; las opciones admiten velocity, duration, effect de EntityEffect, on_land y max_ticks. |
spawn_falling_block_at_location(location, material, options?) | table, string (Material), table? | table/nil | Genera un bloque que cae; las opciones admiten drop_item, hurt_entities, velocity y on_land. |
spawn_reinforcement_at_location(file, location, duration?=0, velocity?) | string, table, int?=0, table? | table/nil | Invoca un refuerzo vinculado al jefe; una duración positiva lo elimina después de ese número de ticks. |
spawn_fireworks_at_location(location, options) | table, table | table/nil | Genera un fuego artificial; las opciones admiten effects, type, flicker, trail, colors, fade_colors, power, velocity y shot_at_angle, con nombres de FireworkEffect.Type para type. |
spawn_splash_potion_at_location(location, options) | table, table | table/nil | Genera una poción arrojadiza; las entradas de effects aceptan type de PotionEffectType, duration, amplifier y overwrite, además de velocity en el nivel superior. |
generate_fake_explosion(locations, source?) | table, table? | nil | Elimina bloques reales y crea escombros que causan daño cuando la regeneración de explosiones está activada. La restauración empieza tras 1200 ticks; cerrar Lua no la revierte. Usa posiciones del mundo del jefe. |
spawn_fake_gold_nugget_at_location(location, velocity, gravity?=false) | table, table, bool?=false | table/nil | Genera un proyectil falso de pepita de oro. |
run_fake_gold_nugget_damage(projectiles) | table | nil | Ejecuta la pasada de daño de los proyectiles falsos. |
generate_player_loot(times?=1) | int?=1 | nil | Genera botín de jugador para los atacantes elegibles. |
drop_bonus_coins(multiplier?=2) | number?=2 | nil | Suelta monedas de bonificación para los atacantes elegibles. |
Tabla de proyectil falso de EliteMobs
spawn_fake_gold_nugget_at_location devuelve esta tabla cuando la generación tiene éxito.
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
get_location() | — | table | Devuelve la ubicación del proyectil falso. |
set_gravity(enabled) | bool | nil | Establece la gravedad del proyectil falso. |
remove() | — | nil | Elimina el proyectil falso. |
is_removed() | — | bool | Comprueba si fue eliminado. |
context.settings
Los poderes de jefe de EliteMobs reciben esta tabla de ajustes del mismo constructor de tabla de mundo.
Métodos
| Método | Args | Devuelve | Descripción |
|---|---|---|---|
warning_visual_effects_enabled() | — | bool | Devuelve el ajuste actual de efectos visuales de advertencia. |