Referencia completa de métodos para la API de scripting Lua. Todos los métodos se llaman mediante la sintaxis context.table:method().
Los métodos Globales (marcados con GLOBAL) provienen de Magmacore, la biblioteca central compartida — funcionan de forma idéntica en scripts de EliteMobs y FreeMinecraftModels.
Los métodos de EliteMobs (marcados con ELITEMOBS) son específicos de los scripts de poderes de jefes de EliteMobs.
Los métodos de FMM (marcados con FMM) son específicos de los scripts de items y props de FreeMinecraftModels.
Cuando un método requiere un enum de Bukkit (Sound, Particle, Material, etc.), consulta los Javadocs de Spigot para valores válidos. Los nombres de enum se pasan como cadenas en mayúsculas (ej., "DIAMOND_SWORD", "ENTITY_ARROW_SHOOT").
Tabla de Entidad GLOBAL
Campos base presentes en todas las tablas de entidad — jugadores, mobs, props, cualquier cosa.
Propiedades
| Campo | Tipo | Descripción |
|---|
uuid | string | UUID de la entidad |
entity_type | string | Tipo de entidad (minúsculas) |
is_valid | bool | La entidad aún existe en el mundo |
is_dead | bool | La entidad está muerta |
is_player | bool | Es un jugador |
is_hostile | bool | Es un monstruo |
is_passive | bool | Es un animal |
is_elite | bool | Es una entidad de EliteMobs |
is_custom_boss | bool | Es un jefe personalizado de EliteMobs |
is_significant_boss | bool | Jefe personalizado con multiplicador de salud superior a 1 (encuentro diseñado) |
is_modeled | bool | Tiene un modelo FMM |
is_prop | bool | Es un prop de FMM |
current_location | location | Posición de la entidad (x, y, z, yaw, pitch, world) |
world | string | Nombre del mundo |
Métodos
| Método | Args | Retorna | Descripción |
|---|
teleport(location) | location table | nil | Teletransportar entidad |
remove() | — | nil | Eliminar entidad del mundo |
set_silent(enabled) | bool | nil | Establecer silencio |
set_invulnerable(enabled) | bool | nil | Establecer invulnerabilidad |
set_gravity(enabled) | bool | nil | Establecer gravedad |
set_glowing(enabled) | bool | nil | Establecer brillo |
Puente: entity.elite
Solo presente cuando is_elite es true. Se rellena mediante reflexión — no requiere dependencia de EliteMobs.
| Campo | Tipo | Descripción |
|---|
level | int | Nivel del mob elite |
name | string | Nombre visible del elite |
health | double | Salud actual |
max_health | double | Salud máxima |
is_custom_boss | bool | Es un jefe personalizado (también disponible en el nivel superior) |
health_multiplier | double | Multiplicador de salud definido en la configuración |
damage_multiplier | double | Multiplicador de daño definido en la configuración |
remove() | method | Eliminar la entidad elite |
Puente: entity.model
Solo presente cuando is_modeled es true. Se rellena mediante reflexión — no requiere dependencia de FMM.
| Campo | Tipo | Descripción |
|---|
model_id | string | Nombre del modelo base |
play_animation(name, blend?, loop?) | method | Reproducir animación. blend por defecto false, loop por defecto false |
stop_animations() | method | Detener todas las animaciones |
remove() | method | Eliminar la entidad modelada |
Tabla de Entidad Viviente GLOBAL
Extiende la Tabla de Entidad. Se aplica a todas las entidades vivientes (mobs y jugadores).
Propiedades
| Campo | Tipo | Descripción |
|---|
health | double | Salud actual |
maximum_health | double | Salud máxima |
name | string | Nombre visible de la entidad |
is_alive | bool | La entidad no está muerta |
Métodos
| Método | Args | Retorna | Descripción |
|---|
damage(amount) | double | nil | Infligir daño a la entidad |
push(x, y, z) | double, double, double | nil | Añadir vector de velocidad |
set_facing(x, y, z) | double, double, double | nil | Establecer dirección de la mirada |
add_potion_effect(type, duration, amplifier) | string (PotionEffectType), int, int | nil | Aplicar efecto de poción por nombre |
remove_potion_effect(type) | string (PotionEffectType) | nil | Eliminar efecto de poción por nombre |
context.player GLOBAL
Tabla de entidad de jugador. Hereda todos los campos de Entidad y Entidad Viviente.
Propiedades
| Campo | Tipo | Descripción |
|---|
game_mode | string | survival, creative, adventure, spectator |
Métodos
| Método | Args | Retorna | Descripción |
|---|
send_message(text) | string | nil | Enviar mensaje de chat. Soporta códigos de color |
get_held_item() | — | table o nil | Devuelve los campos type, amount, display_name, o nil si la mano está vacía |
consume_held_item(amount?) | int (por defecto 1) | nil | Reducir la pila del item en mano por la cantidad indicada |
has_item(material, amount?) | string (Material), int (por defecto 1) | bool | Verificar material en el inventario |
get_target_entity(range?) | num (por defecto 50) | entity o nil | Raycast hacia la entidad que el jugador está mirando |
get_eye_location() | — | location | Posición de los ojos del jugador |
get_look_direction() | — | vector | Vector de dirección unitario |
send_block_change(x, y, z, material, ticks?) | int, int, int, string (Material), int (opcional) | bool | Enviar bloque falso. Se reinicia automáticamente después de los ticks si se especifica |
reset_block(x, y, z) | int, int, int | bool | Reiniciar bloque falso al real |
sleep(x, y, z) | num, num, num | nil | Animación de dormir en cama en la ubicación |
wake_up() | — | nil | Despertar del sueño |
show_boss_bar(text, color?, progress, ticks?) | string, string (BarColor, por defecto WHITE), num, int (opcional) | nil | Mostrar barra de jefe. Se oculta automáticamente después de los ticks. Soporta códigos de color |
hide_boss_bar() | — | nil | Eliminar barra de jefe |
show_action_bar(text, ticks?) | string, int (opcional) | nil | Mostrar barra de acción. Se repite si los ticks son mayores que 0. Soporta códigos de color |
show_title(title, subtitle?, fadeIn, stay, fadeOut) | string, string (por defecto vacío), int, int, int | nil | Mostrar pantalla de título. Soporta códigos de color |
context.world GLOBAL
Operaciones del mundo. Disponible en todos los tipos de script.
Propiedades
| Campo | Tipo | Descripción |
|---|
name | string | Nombre del mundo |
Métodos
| Método | Args | Retorna | Descripción |
|---|
get_block_at(x, y, z) | int, int, int | string | Nombre de Material (minúsculas) |
set_block_at(x, y, z, material) | int, int, int, string (Material) | bool | Colocar bloque |
get_highest_block_y(x, z) | int, int | int | Y del bloque más alto que no es aire |
spawn_particle(particle, x, y, z, count?, dx?, dy?, dz?, speed?) | string (Particle), num, num, num, int?=1, num?=0, num?=0, num?=0, num?=0 | nil | Generar efecto de partículas |
play_sound(sound, x, y, z, volume?, pitch?) | string (Sound), num, num, num, float?=1, float?=1 | nil | Reproducir sonido |
strike_lightning(x, y, z) | num, num, num | nil | Lanzar rayo |
get_time() | — | int | Tiempo del mundo en ticks |
set_time(ticks) | long | nil | Establecer tiempo del mundo |
get_nearby_entities(x, y, z, radius) | num, num, num, num | table | Array de tablas de entidad |
get_nearby_players(x, y, z, radius) | num, num, num, num | table | Array de tablas de entidad de jugador |
spawn_entity(type, x, y, z) | string (EntityType), num, num, num | entity | Generar entidad vanilla |
raycast(fx, fy, fz, dx, dy, dz, max?) | num, num, num, num, num, num, num?=50 | table | Devuelve los campos hit_entity, hit_location, hit_block |
place_temporary_block(x, y, z, material, ticks?, require_air?) | int, int, int, string (Material), int?=0, bool?=false | bool | Colocar bloque que se revierte automáticamente después de los ticks |
drop_item(x, y, z, material, amount?) | num, num, num, string (Material), int?=1 | entity | Soltar item de forma natural en la ubicación |
spawn_firework(x, y, z, colors, type?, power?) | num, num, num, table, string (FireworkEffect.Type)?=BALL, int?=1 | nil | Generar fuego artificial |
context.boss ELITEMOBS
Tabla de entidad de jefe para scripts de poderes Lua de EliteMobs. Hereda todos los métodos de Entidad Viviente de EliteMobs. Las propiedades se actualizan mediante getters dedicados.
Propiedades
| Campo | Tipo | Descripción |
|---|
name | string | Nombre visible del jefe |
uuid | string | UUID de la entidad elite |
health | double | Salud actual (instantánea) |
maximum_health | double | Salud máxima (instantánea) |
current_location | location | Posición del jefe (instantánea) |
level | int | Nivel del jefe |
damager_count | int | Número de jugadores que dañaron a este jefe |
is_in_combat | bool | El jefe está en combate |
exists | bool | La entidad del jefe existe |
Métodos
| Método | Args | Retorna | Descripción |
|---|
is_alive() | — | bool | Si la entidad del jefe está viva (verificación en vivo) |
get_health() | — | double | Salud actual (en vivo) |
get_maximum_health() | — | double | Salud máxima (en vivo) |
get_location() | — | location | Posición actual (en vivo) |
restore_health(amount) | double | nil | Curar al jefe |
despawn() | — | nil | Eliminar entidad del jefe |
get_damager_count() | — | int | Conteo de atacantes en vivo |
add_tag(tag, ticks?) | string, int?=0 | nil | Añadir etiqueta, se elimina automáticamente después de los ticks si se establece |
remove_tag(tag) | string | nil | Eliminar etiqueta |
has_tag(tag) | string | bool | Verificar etiqueta |
reset_custom_name() | — | nil | Reiniciar nombre al predeterminado de configuración |
play_sound_at_self(sound, volume?, pitch?) | string (Sound), float?=1, float?=1 | nil | Reproducir sonido en el jefe |
play_sound_at_entity(sound, volume?, pitch?) | string (Sound), float?=1, float?=1 | nil | Reproducir sonido en el jefe (alias) |
spawn_particle_at_self(particle, count?) | string (Particle) o table, int?=1 | nil | Generar partículas en el jefe |
play_model_animation(name) | string | nil | Reproducir animación de modelo FMM (requiere modelo FMM) |
navigate_to_location(location, speed?, force?, timeout?) | location, double?=1, bool?=false, int?=0 | nil | Buscar camino hacia la ubicación |
send_message(text, range?) | string, double?=20 | nil | Enviar mensaje a jugadores cercanos. Soporta códigos de color |
get_nearby_players(range) | double | table | Array de tablas de jugador dentro del rango |
get_target_player() | — | player o nil | Objetivo actual del mob si es un jugador |
get_nearby_players_in_zone(zone) | zone table | table | Jugadores dentro de la forma de la zona |
get_ender_dragon_phase() | — | string o nil | Nombre de EnderDragon.Phase |
set_ender_dragon_phase(phase) | string (EnderDragon.Phase) | nil | Establecer fase del ender dragon |
summon_reinforcement(file, zone?, level?) | string, zone o nil, int?=0 | entity o nil | Generar jefe de refuerzo |
summon_projectile(type, origin, dest, speed?, options?) | string (EntityType), location, location, double?=1, table | entity | Generar proyectil rastreado |
Opciones de summon_projectile
| Opción | Tipo | Por defecto | Descripción |
|---|
custom_damage | number | — | Sobrescribir daño del proyectil |
detonation_power | string | — | Nivel de poder explosivo |
yield | number | — | Rendimiento de bola de fuego |
incendiary | bool | true | La bola de fuego prende fuego |
gravity | bool | — | Habilitar gravedad |
glowing | bool | false | Establecer brillo |
invulnerable | bool | false | Establecer invulnerabilidad |
persistent | bool | true | Establecer persistente |
duration | int | 0 | Eliminar automáticamente después de ticks |
effect | string | — | EntityEffect a reproducir al generarse |
spawn_at_origin | bool | false | Generar en el origen en lugar de lanzar desde el jefe |
direction_only | bool | false | Establecer dirección sin velocidad (bolas de fuego) |
track | bool | true | Registrar como proyectil elite |
on_land | function | — | Callback cuando el proyectil aterriza: function(location, entity) |
max_ticks | int | 6000 | Ticks máximos antes de forzar callback de aterrizaje |
Métodos de Zona/Partículas
| Método | Args | Retorna | Descripción |
|---|
spawn_particles_in_zone(zone, particle, ...) | zone, particle spec, coverage?=1.0 | nil | Rellenar zona con partículas |
spawn_particles_in_zone_border(zone, particle, ...) | zone, particle spec, coverage?=1.0 | nil | Delinear zona con partículas |
get_particles_from_self_toward_zone(zone, particle, speed?) | zone, string, double?=0.1 | table | Partículas direccionales del jefe a la zona |
get_particles_toward_self(zone, particle, speed?) | zone, string, double?=0.1 | table | Partículas direccionales de la zona al jefe |
spawn_particles_with_vector(particles) | table | nil | Generar array de partículas direccionales |
Soporte de Poderes Especiales
| Método | Args | Retorna | Descripción |
|---|
start_tracking_fireball_system(speed?) | double?=0.5 | nil | Iniciar IA de rastreo de bolas de fuego |
handle_spirit_walk_damage(cause) | string (DamageCause) | nil | Manejar daño de caminata espiritual por causa |
shield_wall_is_active() | — | bool | Si el muro de escudos está activo |
initialize_shield_wall(charges?) | int?=1 | nil | Activar muro de escudos |
shield_wall_absorb_damage(player, damage) | entity table, double | bool | Intentar absorber daño |
deactivate_shield_wall() | — | nil | Desactivar muro de escudos |
start_zombie_necronomicon(target, file) | entity table, string | nil | Iniciar necronomicón en el objetivo |
Tabla de Entidad Viviente de EliteMobs ELITEMOBS
Las tablas de entidad creadas dentro de scripts de poderes de EliteMobs (desde context.boss, datos de eventos, callbacks de zonas y consultas del mundo) usan una tabla de entidad viviente extendida con métodos adicionales más allá de la Entidad Viviente global. context.boss hereda todos estos.
Propiedades
| Campo | Tipo | Descripción |
|---|
name | string | Nombre visible de la entidad |
uuid | string | UUID de la entidad |
entity_type | string | Nombre del tipo de entidad |
is_player | bool | Es un jugador |
is_monster | bool | Es un monstruo |
is_elite | bool | Es una entidad de EliteMobs |
is_valid | bool | La entidad aún existe |
health | double | Salud actual (instantánea) |
maximum_health | double | Salud máxima (instantánea) |
current_location | location | Posición de la entidad (instantánea) |
game_mode | string | Modo de juego (solo jugadores) |
Métodos
| Método | Args | Retorna | Descripción |
|---|
is_alive() | — | bool | Si la entidad está viva (verificación en vivo) |
is_ai_enabled() | — | bool | Si la IA está habilitada |
is_frozen() | — | bool | Si el jefe está congelado (solo CustomBossEntity) |
is_on_ground() | — | bool | Si la entidad está en el suelo |
is_healing() | — | bool | Si el elite se está curando |
get_location() | — | location | Posición actual (en vivo) |
get_eye_location() | — | location | Posición de los ojos (en vivo) |
get_height() | — | double | Altura de la entidad |
get_health() | — | double | Salud actual (en vivo) |
get_maximum_health() | — | double | Salud máxima (en vivo) |
get_velocity() | — | vector | Vector de velocidad actual |
deal_damage(amount) | double | nil | Infligir daño genérico |
deal_custom_damage(amount) | double | nil | Infligir daño de ataque de jefe personalizado desde el jefe del poder |
deal_damage_from_boss(amount) | double | nil | Infligir daño atribuido a la entidad jefe del poder |
restore_health(amount) | double | nil | Curar entidad (usa curación de EliteMobs si es elite) |
play_sound_at_entity(sound, volume?, pitch?) | string (Sound), float?=1, float?=1 | nil | Reproducir sonido en la entidad |
play_sound_at_self(sound, volume?, pitch?) | string (Sound), float?=1, float?=1 | nil | Reproducir sonido en la entidad (alias) |
spawn_particle_at_self(particle, count?) | string (Particle) o table, int?=1 | nil | Generar partículas en la entidad |
spawn_particles_at_location(loc, particle, count?) | location, particle spec, int?=1 | nil | Generar partículas en la ubicación |
teleport_to_location(location) | location | nil | Teletransportar entidad |
set_velocity_vector(vector) | vector | nil | Establecer velocidad |
set_gravity(enabled) | bool | nil | Establecer gravedad |
apply_push_vector(vector, additive?, delay?) | vector, bool?=false, int?=1 | nil | Aplicar velocidad después de un retraso. additive añade a la velocidad existente |
push_relative_to(location, force?, extraX?, extraY?, extraZ?) | location, double?=1, double?=0, double?=0, double?=0 | nil | Empujar entidad lejos de la ubicación |
set_custom_name(name) | string | nil | Establecer nombre personalizado. Soporta códigos de color |
reset_custom_name() | — | nil | Reiniciar nombre al predeterminado de EliteMobs |
set_custom_name_visible(visible) | bool | nil | Alternar visibilidad del nombre |
set_ai_enabled(enabled, duration?) | bool, int?=0 | nil | Establecer estado de IA. Se revierte automáticamente después de los ticks de duración |
set_awareness_enabled(enabled, duration?) | bool, int?=0 | nil | Establecer conciencia del mob. Se revierte automáticamente después de los ticks de duración |
face_direction_or_location(target) | vector o location | nil | Mirar hacia una dirección o ubicación |
play_model_animation(name) | string | nil | Reproducir animación de modelo FMM (requiere modelo FMM) |
set_scale(scale, duration?) | double, int?=0 | nil | Establecer escala de la entidad. Se revierte automáticamente a 1.0 después de los ticks de duración |
set_invulnerable(enabled, duration?) | bool, int?=0 | nil | Establecer invulnerabilidad. Se revierte automáticamente después de los ticks de duración |
set_healing(enabled) | bool | nil | Establecer estado de curación del elite |
navigate_to_location(location, speed?, force?, timeout?) | location, double?=1, bool?=false, int?=0 | nil | Buscar camino hacia la ubicación (solo CustomBossEntity) |
add_tag(tag, ticks?) | string, int?=0 | nil | Añadir etiqueta, se elimina automáticamente después de los ticks |
remove_tag(tag) | string | nil | Eliminar etiqueta |
has_tag(tag) | string | bool | Verificar etiqueta |
overlaps_box_at_location(center, halfX?, halfY?, halfZ?) | location, double?=0.5, double?=halfX, double?=halfX | bool | Si la caja de colisión de la entidad se superpone con una caja en la ubicación |
remove_elite() | — | nil | Eliminar mediante el pipeline de eliminación de EliteMobs |
apply_potion_effect(type, duration, amplifier?) | string (PotionEffectType), int, int?=0 | nil | Aplicar efecto de poción |
set_equipment(slot, material, options?) | string (EquipmentSlot), string (Material), table | nil | Establecer item en ranura de equipamiento |
set_fire_ticks(ticks) | int | nil | Establecer ticks de fuego |
add_visual_freeze_ticks(ticks?) | int?=1 | nil | Añadir ticks visuales de congelación |
place_temporary_block(material, ticks?, visual?) | string (Material), int?=0, bool?=false | nil | Colocar bloque temporal en la ubicación de la entidad |
Opciones de set_equipment
| Opción | Tipo | Por defecto | Descripción |
|---|
unbreakable | bool | false | Hacer el item irrompible |
enchantments | table | — | Array de tablas {type = "ENCHANT_NAME", level = 1} |
Métodos de Jugador de EliteMobs
Los jugadores en scripts de EliteMobs tienen todos los métodos de entidad viviente de EliteMobs más:
| Método | Args | Retorna | Descripción |
|---|
send_message(text) | string | nil | Enviar mensaje de chat. Soporta códigos de color |
show_action_bar(text) | string | nil | Mostrar texto en barra de acción. Soporta códigos de color |
show_title(title, subtitle?, fadeIn?, stay?, fadeOut?) | string, string?="", int?=10, int?=40, int?=10 | nil | Mostrar pantalla de título. Soporta códigos de color |
show_boss_bar(title, color?, style?, duration?) | string, string (BarColor)?=WHITE, string (BarStyle)?=SOLID, int?=40 | nil | Mostrar barra de jefe. Se oculta automáticamente después de los ticks de duración. Soporta códigos de color |
run_command(command) | string | nil | Ejecutar comando como jugador |
Tabla de Referencia de Entidad de EliteMobs
Las entidades no vivientes (proyectiles, bloques cayendo, fuegos artificiales) devueltas por los métodos de generación de EliteMobs obtienen una tabla de referencia ligera:
| Campo / Método | Args | Retorna | Descripción |
|---|
name | — | string | Nombre de la entidad |
uuid | — | string | UUID de la entidad |
entity_type | — | string | Nombre del tipo de entidad |
is_player | — | bool | Siempre false |
is_elite | — | bool | Siempre false |
is_valid() | — | bool | Si la entidad aún es válida (verificación en vivo) |
current_location | — | location | Posición (instantánea) |
get_location() | — | location | Posición actual (en vivo) |
get_velocity() | — | vector | Vector de velocidad actual |
is_on_ground() | — | bool | Si la entidad está en el suelo |
teleport_to_location(location) | location | nil | Teletransportar entidad |
set_velocity_vector(vector) | vector | nil | Establecer velocidad |
set_direction_vector(vector) | vector | nil | Establecer dirección (solo bolas de fuego) |
set_yield(amount) | double | nil | Establecer rendimiento de bola de fuego |
set_gravity(enabled) | bool | nil | Establecer gravedad |
detonate() | — | nil | Detonar fuego artificial |
remove() | — | nil | Eliminar entidad |
unregister(reason?) | string?=OTHER | nil | Desregistrar del rastreador de entidades de EliteMobs |
context.players ELITEMOBS
Tabla de consulta de jugadores disponible en scripts de poderes de EliteMobs. Proporciona métodos auxiliares para encontrar jugadores relativos al jefe.
| Método | Args | Retorna | Descripción |
|---|
current_target() | — | player o nil | Actor del evento si es jugador, o el objetivo actual del mob del jefe si es jugador |
nearby_players(radius) | double | table | Array de tablas de jugador dentro del radio del jefe |
all_players_in_world() | — | table | Array de todas las tablas de jugador en el mundo del jefe |
context.entities ELITEMOBS
Tabla de consulta de entidades disponible en scripts de poderes de EliteMobs. Proporciona métodos auxiliares para encontrar entidades relativas al jefe. Todas las consultas excluyen al jefe mismo.
| Método | Args | Retorna | Descripción |
|---|
get_nearby_entities(radius, filter?) | double, string?="living" | table | Entidades dentro del radio. Filtro: "living", "all", "entities" |
get_entities_in_box(center, halfX, halfY, halfZ, filter?) | location, double, double, double, string?="living" | table | Entidades dentro de una caja alineada a los ejes |
get_all_entities(filter?) | string?="living" | table | Todas las entidades en el mundo del jefe |
get_direct_target_entity() | — | entity o nil | Entidad objetivo directa del evento desencadenante |
get_boss_spawn_location() | — | location | Ubicación de generación original del jefe |
context.vectors ELITEMOBS
Utilidades de matemáticas vectoriales disponibles en scripts de poderes de EliteMobs.
| Método | Args | Retorna | Descripción |
|---|
get_vector_between_locations(from, to, options?) | location, location, table | vector | Vector desde el origen al destino. Las opciones pueden modificar el resultado |
rotate_vector(vector, pitch?, yaw?) | vector, double?=0, double?=0 | vector | Rotar vector por pitch y yaw (grados) |
normalize_vector(vector) | vector | vector | Normalizar a longitud unitaria |
context.cooldowns GLOBAL
Gestión de tiempos de reutilización. Los cooldowns locales son por instancia de script; los cooldowns globales se comparten entre todos los scripts de la misma entidad/propietario. Si no se proporciona una clave, se usa por defecto el nombre de archivo del script.
| Método | Args | Retorna | Descripción |
|---|
local_ready(key?) | string (opcional) | bool | Si el cooldown local ha expirado |
local_remaining(key?) | string (opcional) | int | Ticks restantes del cooldown local (0 si está listo) |
check_local(key?, duration) | string (opcional), int | bool | Si está listo, inicia el cooldown y devuelve true; de lo contrario false |
set_local(duration, key?) | long, string (opcional) | nil | Establecer cooldown local por la duración en ticks |
global_ready() | — | bool | Si el cooldown global ha expirado |
set_global(duration) | long | nil | Establecer cooldown global por la duración en ticks |
En los scripts de poderes de EliteMobs, los cooldowns locales se comparten entre todos los poderes de la misma entidad jefe, y los cooldowns globales usan el sistema de cooldown de poderes integrado del jefe.
context.scheduler GLOBAL
Programación de tareas. Todas las tareas se cancelan automáticamente cuando el script se detiene.
Variante Global (Magmacore)
| Método | Args | Retorna | Descripción |
|---|
run_later(ticks, callback) | int, function | int | Ejecutar callback después de los ticks. Devuelve ID de tarea |
run_repeating(delay, interval, callback) | int, int, function | int | Ejecutar callback cada intervalo de ticks después del retraso inicial. Devuelve ID de tarea |
cancel(taskId) | int | nil | Cancelar una tarea programada |
Variante EliteMobs
| Método | Args | Retorna | Descripción |
|---|
run_after(ticks, callback) | int, function | int | Ejecutar callback después de los ticks. Devuelve ID de tarea |
run_every(ticks, callback) | int, function | int | Ejecutar callback cada N ticks. Devuelve ID de tarea |
cancel_task(taskId) | int | nil | Cancelar una tarea programada |
context.log GLOBAL
Utilidades de registro para depuración de scripts.
| Método | Args | Retorna | Descripción |
|---|
info(message) | string | nil | Registrar mensaje informativo |
warn(message) | string | nil | Registrar mensaje de advertencia |
error(message) | string | nil | Registrar mensaje de error/advertencia |
debug(message) | string | nil | Registrar mensaje de depuración (aparece como info con prefijo debug) |
context.zones GLOBAL
Creación y monitoreo de zonas. Disponible en todos los tipos de script.
Variante Global (Magmacore)
| Método | Args | Retorna | Descripción |
|---|
create_sphere(x, y, z, radius) | num, num, num, num | int | Crear zona esférica, devuelve handle |
create_cylinder(x, y, z, radius, height) | num, num, num, num, num | int | Crear zona cilíndrica, devuelve handle |
create_cuboid(x, y, z, xSize, ySize, zSize) | num, num, num, num, num, num | int | Crear zona cuboide, devuelve handle |
watch(handle, on_enter?, on_leave?) | int, function, function | bool | Comenzar a rastrear eventos de entrada/salida de jugadores en la zona |
unwatch(handle) | int | nil | Dejar de rastrear la zona |
Variante EliteMobs
| Método | Args | Retorna | Descripción |
|---|
get_entities_in_zone(zone, options?) | zone table, table | table | Obtener entidades dentro de la zona. Opciones: filter, mode |
get_locations_in_zone(zone, options?) | zone table, table | table | Obtener ubicaciones dentro de la zona. Opciones: coverage, mode |
zone_contains(zone, location, mode?) | zone table, location, string?="full" | bool | Si la ubicación está dentro de la zona ("full" o "border") |
watch_zone(zone, callbacks, mode?) | zone table, table, string?="full" | int | Vigilar zona para entrada/salida. Callbacks: {on_enter = fn, on_leave = fn} |
context.event GLOBAL
Tabla de datos del evento para el hook que activó la ejecución actual del script. Solo presente durante hooks activados por eventos (no en on_tick).
Variante Global (Magmacore)
| Campo / Método | Tipo | Descripción |
|---|
is_cancelled | bool | Si el evento está actualmente cancelado |
cancel() | method | Cancelar el evento |
uncancel() | method | Descancelar el evento |
player | entity table | Jugador involucrado en el evento (si hay alguno) |
Para la tabla de eventos de EliteMobs (que proporciona cantidades de daño, causas de daño, etc.), consulta la Tabla de Eventos de EliteMobs.
context.script ELITEMOBS
Puente al sistema de Elite Script de EliteMobs. Permite que los poderes Lua usen los sistemas de targeting, zonas y vectores relativos basados en YAML mediante tablas Lua con los mismos nombres de campo que las configuraciones YAML de Elite Script.
Métodos
| Método | Args | Retorna | Descripción |
|---|
target(spec) | table | target handle | Crear un handle de objetivo desde una tabla de especificación de objetivo de Elite Script |
zone(spec) | table | zone handle | Crear un handle de zona desde una tabla de especificación de zona de Elite Script |
relative_vector(spec, location?, zone?) | table, location, zone handle | vector handle | Crear un vector relativo desde una especificación de vector de Elite Script |
damage(target, amount?, multiplier?) | target handle, double?=0, double?=1 | nil | Infligir daño a todas las entidades en el objetivo |
push(target, vector, additive?) | target handle, vector o vector handle, bool?=false | nil | Empujar entidades objetivo con velocidad |
set_facing(target, vector) | target handle, vector o vector handle | nil | Establecer dirección de las entidades objetivo |
spawn_particles(target, particles) | target handle, table o string | nil | Generar partículas en las ubicaciones del objetivo |
Target Handle
Devuelto por context.script:target(spec). La tabla de especificación usa las mismas claves que las configuraciones YAML de objetivo de Elite Script (ej., {targetType = "NEARBY_PLAYERS", range = 20}).
| Método | Args | Retorna | Descripción |
|---|
entities() | — | table | Array de tablas de entidad en el objetivo |
locations() | — | table | Array de tablas de ubicación en el objetivo |
first_entity() | — | entity o nil | Primera entidad en el objetivo |
first_location() | — | location o nil | Primera ubicación en el objetivo |
Zone Handle
Devuelto por context.script:zone(spec). La tabla de especificación usa las mismas claves que las configuraciones YAML de zona de Elite Script (ej., {shape = "SPHERE", radius = 5, target = {targetType = "SELF"}}).
| Método | Args | Retorna | Descripción |
|---|
full_target(coverage?) | number | target handle | Handle de objetivo para ubicaciones interiores de la zona |
border_target(coverage?) | number | target handle | Handle de objetivo para ubicaciones del borde de la zona |
full_locations(coverage?) | number | table | Array de ubicaciones interiores |
border_locations(coverage?) | number | table | Array de ubicaciones del borde |
full_entities() | — | table | Entidades dentro de la zona |
border_entities() | — | table | Entidades en el borde de la zona |
contains(location, mode?) | location, string?="full" | bool | Si la ubicación está en la zona |
watch(callbacks, mode?) | table, string?="full" | int | Vigilar entrada/salida. Devuelve ID de tarea |
Vector Handle
Devuelto por context.script:relative_vector(spec). La tabla de especificación usa las mismas claves que las configuraciones YAML de vectores relativos de Elite Script.
| Método | Args | Retorna | Descripción |
|---|
resolve() | — | vector | Calcular el vector para el contexto actual |
context.world (EliteMobs) ELITEMOBS
Tabla de mundo extendida para scripts de poderes de EliteMobs. Añade generación específica de jefes, verificaciones de bloques y efectos sobre la tabla de mundo global.
Consultas de Bloques
| Método | Args | Retorna | Descripción |
|---|
get_block_type_at_location(loc) | location | string o nil | Nombre de Material |
get_highest_block_y_at_location(loc) | location | int o nil | Y del bloque más alto |
get_blast_resistance_at_location(loc) | location | double | Valor de resistencia a explosiones |
is_air_at_location(loc) | location | bool | El bloque es aire |
is_passable_at_location(loc) | location | bool | El bloque es transitable |
is_passthrough_at_location(loc) | location | bool | El bloque no es sólido |
is_on_floor_at_location(loc) | location | bool | Aire con bloque sólido debajo |
is_standing_on_material(loc, material) | location, string (Material) | bool | El bloque debajo coincide con el material |
Manipulación de Bloques
| Método | Args | Retorna | Descripción |
|---|
set_block_at_location(loc, material, visual?) | location, string (Material), bool?=false | nil | Colocar bloque. visual=true para bloque falso |
place_temporary_block_at_location(loc, material, ticks?, visual?) | location, string, int?=0, bool?=false | nil | Colocar bloque, se elimina automáticamente después de los ticks |
Generación
| Método | Args | Retorna | Descripción |
|---|
spawn_boss_at_location(file, loc?, level?) | string, location?=boss loc, int?=boss level | entity o nil | Generar jefe personalizado |
spawn_custom_boss_at_location(file, loc, options?) | string, location, table | entity o nil | Generar jefe con opciones (level, silent, add_as_reinforcement, velocity) |
spawn_entity_at_location(type, loc, options?) | string (EntityType), location, table | entity | Generar entidad vanilla con opciones (velocity, duration, effect, on_land, max_ticks) |
spawn_falling_block_at_location(loc, material, options?) | location, string (Material), table | entity | Generar bloque cayendo (drop_item, hurt_entities, velocity, on_land) |
spawn_reinforcement_at_location(file, loc, level?, velocity?) | string, location, int?=0, vector | entity o nil | Generar refuerzo vinculado al jefe |
spawn_fireworks_at_location(loc, config) | location, table | entity o nil | Generar fuego artificial |
spawn_splash_potion_at_location(loc, config) | location, table | entity o nil | Generar poción de salpicadura |
Efectos y Utilidades
| Método | Args | Retorna | Descripción |
|---|
play_sound_at_location(loc, sound, volume?, pitch?) | location, string (Sound), float?=1, float?=1 | nil | Reproducir sonido |
spawn_particle_at_location(loc, particle, count?) | location, string (Particle) o table, int?=1 | nil | Generar partículas |
strike_lightning_at_location(loc) | location | nil | Lanzar rayo (ignora protección de EM) |
run_empowered_lightning_task_at_location(loc) | location | nil | Efecto de rayo potenciado |
generate_fake_explosion(locations, center?) | table of locations, location | nil | Explosión visual sin daño |
spawn_fake_gold_nugget_at_location(loc, velocity, gravity?) | location, vector, bool?=false | fake projectile | Generar proyectil visual de pepita de oro |
run_fake_gold_nugget_damage(projectiles) | table | nil | Ejecutar verificación de daño en proyectiles falsos |
set_world_time(time) or (loc, time) | long, o location + long | nil | Establecer tiempo del mundo |
set_world_weather(weather, duration?) or (loc, weather, duration?) | string (CLEAR, RAIN, PRECIPITATION, THUNDER), int?=6000 | nil | Establecer clima |
run_console_command(command) | string | nil | Ejecutar comando de consola |
generate_player_loot(level?) | int?=1 | nil | Generar botín para atacantes |
drop_bonus_coins(multiplier?) | double?=2 | nil | Soltar monedas bonus en el jefe |
context.settings (EliteMobs)
| Método | Args | Retorna | Descripción |
|---|
warning_visual_effects_enabled() | — | bool | Si los efectos visuales de advertencia están habilitados en la configuración |
Tabla de Eventos de EliteMobs
La tabla context.event se pasa a los hooks de daño y generación. Los campos varían según el tipo de evento.
| Campo / Método | Tipo | Presente cuando | Descripción |
|---|
damage_amount | double | Eventos de daño | Cantidad de daño bruto |
damage_cause | string | Eventos de daño | Nombre de DamageCause |
damager | entity table | Eventos de daño por entidad | Entidad que infligió el daño |
projectile | entity table | Eventos de daño por proyectil | Proyectil que infligió el daño |
spawn_reason | string | Evento de generación | Nombre de la razón de generación |
entity | entity table | Eventos de muerte/zona | Entidad relevante |
cancel_event() | method | La mayoría de eventos | Cancelar el evento |
set_damage_amount(amount) | method (double) | Eventos de daño | Sobrescribir cantidad de daño |
multiply_damage_amount(multiplier) | method (double) | Eventos de daño | Multiplicar daño actual |
context.item FMM
Accesible en scripts de items de FMM. Resuelve el item con script específico desde las ranuras equipadas del jugador mediante etiqueta PDC.
Propiedades
| Campo | Tipo | Descripción |
|---|
id | string | Identificador de script del item |
Métodos
| Método | Args | Retorna | Descripción |
|---|
material() | — | string | Nombre de Material |
get_amount() | — | int | Tamaño de la pila |
set_amount(n) | int | nil | Establecer tamaño de la pila |
consume(n?) | int?=1 | nil | Decrementar cantidad en n, eliminar si llega a cero |
get_uses() | — | int | Contador de usos almacenado en PDC |
set_uses(n) | int | nil | Establecer contador de usos en PDC |
get_durability() | — | table o nil | Devuelve campos current y max, o nil si no hay barra de durabilidad |
get_durability_percentage() | — | number o nil | Fracción restante de 0.0 a 1.0, o nil |
use_durability(amount, can_break?) | int, bool?=false | nil | Reducir durabilidad por cantidad fija. Cuando es false, se limita a 1 restante |
use_durability_percentage(fraction, can_break?) | number, bool?=false | nil | Reducir durabilidad por fracción del máximo (0.0 a 1.0) |
get_name() | — | string o nil | Nombre visible |
set_name(s) | string | nil | Establecer nombre visible. Soporta códigos de color |
get_lore() | — | table | Array de cadenas de lore |
set_lore(table) | table | nil | Establecer lore desde array de cadenas |
context.prop FMM
Accesible en scripts de props de FMM. Hereda todos los campos de Entidad del armor stand subyacente.
Propiedades
| Campo | Tipo | Descripción |
|---|
model_id | string | Nombre del modelo base |
current_location | location | Posición actual del prop |
Métodos
| Método | Args | Retorna | Descripción |
|---|
play_animation(name, blend?, loop?) | string, bool?=true, bool?=true | bool | Reproducir animación nombrada |
stop_animation() | — | nil | Detener todas las animaciones actuales |
hurt_visual() | — | nil | Destello de tinte rojo, sin daño |
pickup() | — | nil | Eliminar prop y soltar item de colocación |
has_mount_points() | — | bool | Si el prop tiene huesos de punto de montaje |
mount(player) | entity table | bool | Montar jugador en el primer asiento disponible |
dismount(player) | entity table | bool | Desmontar jugador |
get_passengers() | — | table | Array de tablas de entidad para jugadores montados |
spawn_elitemobs_boss(file, x, y, z) | string, num, num, num | entity o nil | Generar jefe de EliteMobs (requiere EliteMobs) |
open_inventory(player, title, rows?) | entity table, string, int?=3 | bool | Abrir inventario de cofre persistente (1 a 6 filas). El título soporta códigos de color |
place_book(player) | entity table | bool | Almacenar el libro escrito del jugador en el prop |
read_book(player) | entity table | bool | Abrir libro almacenado para lectura |
take_book(player) | entity table | bool | Devolver libro almacenado al jugador |
has_book() | — | bool | Si hay un libro almacenado |
drop_inventory() | — | bool | Soltar todos los items almacenados y limpiar |
drop_book() | — | bool | Soltar libro almacenado y limpiar |
is_viewing_inventory(player) | entity table | bool | Si el jugador tiene abierto el inventario de este prop |
set_persistent_data(key, value) | string, string | bool | Almacenar cadena en el PDC del prop |
get_persistent_data(key) | string | string o nil | Recuperar cadena del PDC del prop |
Códigos de Color
Todos los métodos marcados como compatibles con códigos de color usan el ChatColorConverter de Magmacore. Estos formatos se pueden mezclar libremente en cualquier cadena:
Códigos legacy
Usa & seguido de un carácter de color/formato:
| Código | Color | Código | Formato |
|---|
&0 | Negro | &l | Negrita |
&1 | Azul Oscuro | &m | Tachado |
&2 | Verde Oscuro | &n | Subrayado |
&3 | Aguamarina Oscuro | &o | Cursiva |
&4 | Rojo Oscuro | &r | Reiniciar |
&5 | Púrpura Oscuro | | |
&6 | Oro | | |
&7 | Gris | | |
&8 | Gris Oscuro | | |
&9 | Azul | | |
&a | Verde | | |
&b | Aguamarina | | |
&c | Rojo | | |
&d | Púrpura Claro | | |
&e | Amarillo | | |
&f | Blanco | | |
Colores hex
Color RGB exacto usando hex de 6 dígitos:
&#FF5500 -- prefijo ampersand
<#FF5500> -- sintaxis de etiqueta
Gradientes
Interpolar suavemente entre dos o más colores a lo largo del texto:
<gradient:#FF0000:#0000FF>Este texto se difumina de rojo a azul</gradient>
<g:#FF0000:#00FF00:#0000FF>Gradiente de tres colores</g>
La forma corta g funciona de manera idéntica a gradient. Puedes encadenar tantos puntos de color como desees.
Arcoíris
Recorre todo el espectro de tonalidades. Saturación opcional (0--100):
<rainbow>Texto arcoíris completo</rainbow>
<r:50>Arcoíris pastel (50% de saturación)</r>
Tipos Comunes
location
{ x = number, y = number, z = number, yaw = number, pitch = number, world = string }
vector
{ x = number, y = number, z = number }
entity table
Cualquier tabla con un campo uuid. Las tablas de jugador y entidad del contexto funcionan directamente:
context.player -- tabla de entidad válida
context.world:get_nearby_entities(x,y,z,r) -- devuelve array de tablas de entidad