Перейти к основному содержимому

Справочник API Lua

Полный справочник методов скриптингового API Lua. Все методы вызываются через синтаксис context.table:method().

Глобальные методы (отмечены GLOBAL) предоставляются Magmacore — общей основной библиотекой. Они применимы к скриптам FreeMinecraftModels и другим потребителям ScriptInstance MagmaCore. Силы боссов EliteMobs повторно используют ту же песочницу Lua, но предоставляют специфичные для боссов таблицы контекста и имена методов; NPC-скрипты EliteMobs работают на том же рантайме MagmaCore и получают полный общий контекст плюс таблицу context.npc, доступную только для NPC. Эти варианты описаны в разделах EliteMobs ниже и в NPC-скриптах.

EliteMobs методы (отмечены ELITEMOBS) предназначены для скриптов сил боссов EliteMobs и NPC-скриптов.

FMM методы (отмечены FMM) предназначены для скриптов предметов и пропсов FreeMinecraftModels.

Если метод требует перечисление Bukkit (Sound, Particle, Material и т.п.), смотрите Spigot Javadocs для допустимых значений. Имена перечислений передаются как строки в верхнем регистре (например, "DIAMOND_SWORD", "ENTITY_ARROW_SHOOT").


Entity Table GLOBAL

Базовые поля, присутствующие во всех таблицах сущностей — игроков, мобов, пропсов, чего угодно.

Properties

ПолеТипОписание
uuidstringUUID сущности
entity_typestringТип сущности (нижний регистр)
is_validboolСущность всё ещё существует в мире
is_deadboolСущность мертва
is_playerboolЯвляется игроком
is_hostileboolЯвляется монстром (Monster)
is_passiveboolЯвляется животным (Animal)
current_locationlocationПозиция сущности (x, y, z, yaw, pitch, world)
worldstringИмя мира

Специфичные для плагинов обогатители могут добавлять дополнительные поля верхнего уровня, когда установлен соответствующий плагин. Поля EliteMobs и FreeMinecraftModels смотрите в разделах-мостах ниже.

Methods

МетодАргументыВозвращаетОписание
teleport(location)location tablenilТелепортировать сущность
remove()nilУдалить сущность из мира
set_silent(enabled)boolnilСделать беззвучной
set_invulnerable(enabled)boolnilСделать неуязвимой
set_gravity(enabled)boolnilУстановить гравитацию
set_glowing(enabled)boolnilУстановить эффект свечения

Bridge: entity.elite

Добавляется обогатителем сущностей EliteMobs, когда установлен EliteMobs. Обогатитель добавляет эти флаги верхнего уровня:

ПолеТипОписание
is_eliteboolЯвляется сущностью EliteMobs
is_custom_bossboolЯвляется кастомным боссом EliteMobs
is_significant_bossboolКастомный босс с множителем здоровья больше 1 (продуманное столкновение)

entity.elite присутствует только когда is_elite равно true.

ПолеТипОписание
levelintУровень элитного моба
namestringОтображаемое имя элиты
healthdoubleТекущее здоровье
max_healthdoubleМаксимальное здоровье
is_custom_bossboolЯвляется кастомным боссом (также доступно на верхнем уровне)
health_multiplierdoubleМножитель здоровья, заданный в конфиге
damage_multiplierdoubleМножитель урона, заданный в конфиге
remove()methodУдалить элитную сущность

Bridge: entity.model

Добавляется обогатителем сущностей FreeMinecraftModels, когда установлен FMM. Обогатитель добавляет эти флаги верхнего уровня:

ПолеТипОписание
is_modeledboolИмеет FMM-модель
is_propboolЯвляется FMM-пропсом

entity.model присутствует только когда is_modeled равно true.

ПолеТипОписание
model_idstringИмя чертежа модели
is_dynamicboolЯвляется ли это FMM DynamicEntity (true) или статичным пропсом (false)
play_animation(name, blend?, loop?)methodВоспроизвести анимацию. blend по умолчанию false, loop по умолчанию false
stop_animations()methodОстановить все анимации
remove()methodУдалить смоделированную сущность

Bridge: player permissions

Добавляется обогатителем сущностей FreeMinecraftModels, когда установлен FMM. Эти поля появляются только в таблицах сущностей-игроков:

Поле / МетодАргументыВозвращаетОписание
has_permission(node)stringboolИмеет ли игрок указанное право
is_opboolЯвляется ли игрок оператором сервера

Living Entity Table GLOBAL

Расширяет Entity Table. Применяется ко всем живым сущностям (мобам и игрокам).

Properties

ПолеТипОписание
healthdoubleТекущее здоровье
maximum_healthdoubleМаксимальное здоровье
namestringОтображаемое имя сущности
is_aliveboolСущность не мертва

Methods

МетодАргументыВозвращаетОписание
damage(amount)doublenilНанести урон сущности
push(x, y, z)double, double, doublenilДобавить вектор скорости
set_facing(x, y, z)double, double, doublenilЗадать направление взгляда
add_potion_effect(type, duration, amplifier)string (PotionEffectType), int, intnilПрименить эффект зелья по имени
remove_potion_effect(type)string (PotionEffectType)nilУдалить эффект зелья по имени
get_scale()numberТекущий масштаб сущности (по умолчанию 1.0 на серверах без атрибута generic.scale)
set_scale(value)doublenilЗадать масштаб сущности через атрибут generic.scale (не работает на серверах ниже 1.20.5)

context.player GLOBAL

Таблица сущности-игрока. Наследует все поля Entity и Living Entity.

Properties

ПолеТипОписание
game_modestringsurvival, creative, adventure, spectator

Methods

МетодАргументыВозвращаетОписание
send_message(text)stringnilОтправить сообщение в чат. Поддерживает цветовые коды
get_held_item()table or nilВозвращает поля type, amount, display_name, либо nil при пустой руке. type — имя Bukkit Material в верхнем регистре
consume_held_item(amount?)int (default 1)nilУменьшить стак в руке на указанное количество
has_item(material, amount?)string (Material), int (default 1)boolПроверить инвентарь на наличие материала
get_target_entity(range?)num (default 50)entity or nilЛучевая трассировка к сущности, на которую смотрит игрок
get_eye_location()locationПозиция глаз игрока
get_look_direction()vectorЕдиничный вектор направления
send_block_change(x, y, z, material, ticks?)int, int, int, string (Material), int (optional)boolОтправить фальшивый блок. Автоматически сбрасывается после указанных тиков
reset_block(x, y, z)int, int, intboolСбросить фальшивый блок на настоящий
sleep(x, y, z)num, num, numnilАнимация сна в кровати в указанной точке
wake_up()nilПроснуться
show_boss_bar(text, color?, progress, ticks?)string, string (BarColor, default WHITE), num, int (optional)nilОтобразить полосу босса. Автоматически скрывается после тиков. Поддерживает цветовые коды
hide_boss_bar()nilУбрать полосу босса
show_action_bar(text, ticks?)string, int (optional)nilПоказать панель действий. Повторяется если ticks больше 0. Поддерживает цветовые коды
show_title(title, subtitle?, fadeIn, stay, fadeOut)string, string (default empty), int, int, intnilПоказать экранный заголовок. Поддерживает цветовые коды

context.world GLOBAL

Операции с миром для скриптов FreeMinecraftModels и других рантаймов ScriptInstance на базе Magmacore. Силы боссов EliteMobs начинают с этой же базовой таблицы и накладывают сверху дополнения и переопределения context.world EliteMobs, перечисленные ниже.

Методы context.world существуют в двух взаимозаменяемых формах: координатной (x, y, z) и в форме таблицы-локации (варианты *_at_location). Обе формы доступны на общих поверхностях, а силы боссов EliteMobs сохраняют общие базовые методы, добавляя специфичные для босса помощники с таблицей-локацией.

Properties

ПолеТипОписание
namestringИмя мира

Methods

МетодАргументыВозвращаетОписание
get_block_at(x, y, z)int, int, intstringИмя Material (в нижнем регистре). Возвращает "air" если чанк не загружен
set_block_at(x, y, z, material)int, int, int, string (Material)boolПоставить блок в очередь, если материал корректен; незагруженные чанки пропускаются
get_highest_block_y(x, z)int, intintY самого верхнего не-воздушного блока
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?=0nilСоздать эффект частиц
play_sound(sound, x, y, z, volume?, pitch?)string (Sound), num, num, num, float?=1, float?=1nilВоспроизвести звук
strike_lightning(x, y, z)num, num, numnilУдарить молнией
get_time()intВремя мира в тиках
set_time(ticks)longnilУстановить время мира
get_nearby_entities(x, y, z, radius)num, num, num, numtableМассив таблиц сущностей
get_nearby_players(x, y, z, radius)num, num, num, numtableМассив таблиц сущностей-игроков
spawn_entity(type, x, y, z)string (EntityType), num, num, numentity or nilЗаспавнить ванильную сущность; возвращает nil если тип сущности некорректен
raycast(fx, fy, fz, dx, dy, dz, max?)num, num, num, num, num, num, num?=50tableВозвращает поля hit_entity, hit_location, hit_block
place_temporary_block(x, y, z, material, ticks?, require_air?)int, int, int, string (Material), int?=0, bool?=falseboolПоставить в очередь замену блока, которая автоматически возвращается через тики. Возвращает false если материал некорректен или чанк не загружен
drop_item(x, y, z, material, amount?)num, num, num, string (Material), int?=1entity or nilЕстественно выронить сущность-предмет на локации; возвращает nil если материал некорректен
spawn_firework(x, y, z, colors, type?, power?)num, num, num, table, string (FireworkEffect.Type)?=BALL, int?=1nilЗапустить фейерверк
strike_lightning_at_location(loc)locationnilУдарить молнией
play_sound_at_location(loc, sound, volume?, pitch?)location, string (Sound), float?=1, float?=1nilВоспроизвести звук
spawn_particle_at_location(loc, particle, count?, dx?, dy?, dz?, speed?)location, string (Particle), int?=1, num?=0, num?=0, num?=0, num?=0nilСоздать эффект частиц
get_block_at_location(loc)locationstringИмя Material (в нижнем регистре). Возвращает "air" если чанк не загружен
set_block_at_location(loc, material)location, string (Material)boolПоставить блок в очередь, если материал корректен; незагруженные чанки пропускаются
place_temporary_block_at_location(loc, material, ticks?, require_air?)location, string (Material), int?=0, bool?=falseboolПоставить в очередь замену блока, которая автоматически возвращается через тики. Возвращает false если материал некорректен или чанк не загружен
get_highest_block_y_at_location(loc)locationint or nilY самого верхнего не-воздушного блока

em helpers GLOBAL

Глобальные конструкторы-помощники, доступные в таблице em во всех рантаймах Lua MagmaCore.

Constructors

МетодАргументыВозвращаетОписание
em.create_location(x, y, z, world?, yaw?, pitch?)num, num, num, string?, num?, num?locationТаблица локации с x, y, z, опциональными world, yaw, pitch и методом add(dx, dy, dz), изменяющим её на месте
em.create_vector(x, y, z)num, num, numvectorТаблица вектора с x, y, z

Zone Builders

Конструкторы зон возвращают обычные таблицы определений зон. Сферы, купола, цилиндры и кубоиды включают :set_center(location). Конусы и лучевые зоны включают :set_origin(location) и :set_destination(location).

МетодАргументыВозвращаетОписание
em.zone.create_sphere_zone(radius)numzone{ kind = "sphere", radius = ... }
em.zone.create_dome_zone(radius)numzone{ kind = "dome", radius = ... }
em.zone.create_cylinder_zone(radius, height)num, numzone{ kind = "cylinder", radius = ..., height = ... }
em.zone.create_cuboid_zone(x, y, z)num, num, numzoneПолуразмеры кубоида
em.zone.create_cone_zone(length, radius)num, numzoneОпределение конуса с сеттерами origin/destination
em.zone.create_static_ray_zone(length, thickness)num, numzoneОпределение статического луча
em.zone.create_rotating_ray_zone(length, point_radius, animation_duration)num, num, numzoneОпределение вращающегося луча
em.zone.create_translating_ray_zone(length, point_radius, animation_duration)num, num, numzoneОпределение перемещающегося луча

em.location GLOBAL

Помощники запросов локаций, доступные через глобальную таблицу em. Реализованы на основе сервисов LocationQueryRegistry и LocationOwnership из Magmacore, которые собирают результаты от зарегистрированных провайдеров (регионы данжей/world-package EliteMobs, WorldGuard, GriefPrevention и т.д.). Все функции принимают таблицу локации ({x, y, z, world}) и возвращают безопасные значения по умолчанию, если локация некорректна.

МетодАргументыВозвращаетОписание
em.location.is_in_dungeon(loc)locationboolНаходится ли локация внутри любого зарегистрированного региона данжа
em.location.is_protected(loc)locationboolСчитает ли какой-либо провайдер локацию защищённой (WorldGuard, GriefPrevention, регионы EM и т.д.)
em.location.owned_by(loc, namespace)location, stringboolПринадлежит ли локация указанному namespace (например, "EliteMobs")
em.location.owners(loc)locationtableМассив строк-неймспейсов, претендующих на владение этой локацией
em.location.kinds_at(loc)locationtableМассив тегов вида в этой локации (например, "elitemobs", "world_package", "open_world_dungeon", категория размера данжа)
em.location.has_kind(loc, kind)location, stringboolИмеет ли локация указанный тег вида

context.boss ELITEMOBS

Таблица сущности-босса для Lua-скриптов сил EliteMobs. Наследует все методы EliteMobs Living Entity. Свойства обновляются через специальные геттеры.

Properties

ПолеТипОписание
namestringОтображаемое имя босса
uuidstringUUID элитной сущности
healthdoubleТекущее здоровье (снимок)
maximum_healthdoubleМаксимальное здоровье (снимок)
current_locationlocationПозиция босса (снимок)
levelintУровень босса
damager_countintКоличество игроков, нанёсших урон этому боссу
is_in_combatboolБосс в бою
existsboolСущность босса существует

Methods

МетодАргументыВозвращаетОписание
is_alive()boolЖива ли сущность босса (живая проверка)
get_health()doubleТекущее здоровье (актуальное)
get_maximum_health()doubleМаксимальное здоровье (актуальное)
get_location()locationТекущая позиция (актуальная)
restore_health(amount)doublenilИсцелить босса
despawn()nilУдалить сущность босса
get_damager_count()intАктуальное число атакующих
add_tag(tag, ticks?)string, int?=0nilДобавить тег, автоматически удаляется через тики если задано
remove_tag(tag)stringnilУдалить тег
has_tag(tag)stringboolПроверить тег
reset_custom_name()nilСбросить имя на значение по умолчанию из конфига
play_sound_at_self(sound, volume?, pitch?)string (ключ звука Minecraft, например "entity.wither.spawn"), float?=1, float?=1nilВоспроизвести звук у босса
play_sound_at_entity(sound, volume?, pitch?)string (ключ звука Minecraft, например "entity.wither.spawn"), float?=1, float?=1nilВоспроизвести звук у босса (псевдоним)
spawn_particle_at_self(particle, count?)string (Particle) or table, int?=1nilСоздать частицы у босса
play_model_animation(name)stringnilВоспроизвести анимацию FMM-модели (требуется модель FMM)
has_mount()-boolЕдет ли этот босс верхом на сущности-маунте
get_mount()-entity or nilСсылка на текущую сущность-маунт, помеченную is_mount = true
set_mount(entity)entity tableboolЗаставляет босса ехать верхом на указанной сущности
clear_mount()-boolЗаставляет босса покинуть текущий транспорт
dismount()-boolПсевдоним для clear_mount()
navigate_to_location(location, speed?, force?, timeout?)location, double?=1, bool?=false, int?=0nilПроложить путь к локации
send_message(text, range?)string, double?=20nilОтправить сообщение находящимся рядом игрокам. Поддерживает цветовые коды
get_nearby_players(range)doubletableМассив таблиц игроков в радиусе
get_target_player()player or nilТекущая цель моба, если это игрок
get_nearby_players_in_zone(zone)zone tabletableИгроки внутри формы зоны
get_ender_dragon_phase()string or nilИмя EnderDragon.Phase
set_ender_dragon_phase(phase)string (EnderDragon.Phase)nilУстановить фазу дракона Края
summon_reinforcement(file, zone?, level?)string, zone or nil, int?=0entity or nilЗаспавнить босса-подкрепление
summon_projectile(type, origin, dest, speed?, options?)string (EntityType), location, location, double?=1, tableentity or nilЗапустить отслеживаемый снаряд; возвращает nil если тип или локации некорректны

summon_projectile options

ОпцияТипПо умолч.Описание
custom_damagenumberПереопределить урон снаряда
detonation_powerstringУровень мощности взрыва
yieldnumberСила огненного шара
incendiarybooltrueОгненный шар поджигает
gravityboolВключить гравитацию
glowingboolfalseСделать светящимся
invulnerableboolfalseСделать неуязвимым
persistentbooltrueСделать постоянным
durationint0Автоудаление через тики
effectstringEntityEffect при спавне
spawn_at_originboolfalseСпавн в точке origin вместо запуска от босса
direction_onlyboolfalseЗадать направление без скорости (огненные шары)
trackbooltrueЗарегистрировать как элитный снаряд
on_landfunctionКолбэк при приземлении снаряда: function(location, entity)
max_ticksint6000Максимум тиков до принудительного срабатывания колбэка приземления

Zone/Particle Methods

МетодАргументыВозвращаетОписание
spawn_particles_in_zone(zone, particle, ...)zone, particle spec, coverage?=1.0nilЗаполнить зону частицами
spawn_particles_in_zone_border(zone, particle, ...)zone, particle spec, coverage?=1.0nilОбвести зону частицами
get_particles_from_self_toward_zone(zone, particle, speed?)zone, string, double?=0.1tableНаправленные частицы от босса к зоне
get_particles_toward_self(zone, particle, speed?)zone, string, double?=0.1tableНаправленные частицы от зоны к боссу
spawn_particles_with_vector(particles)tablenilСоздать массив направленных частиц

Special Power Support

МетодАргументыВозвращаетОписание
start_tracking_fireball_system(speed?)double?=0.5nilЗапустить отслеживающий ИИ огненных шаров
handle_spirit_walk_damage(cause)string (DamageCause)nilОбработать урон spirit walk по причине
shield_wall_is_active()boolАктивна ли стена щитов
initialize_shield_wall(charges?)int?=1nilАктивировать стену щитов
shield_wall_absorb_damage(player, damage)entity table, doubleboolПопытаться поглотить урон
deactivate_shield_wall()nilДеактивировать стену щитов
start_zombie_necronomicon(target, file)entity table, stringnilЗапустить некрономикон по цели

context.npc ELITEMOBS NPC

Таблица NPC для Lua-скриптов NPC EliteMobs. NPC-скрипты находятся в plugins/EliteMobs/npc_scripts/ и подключаются через список scripts: в конфиге NPC. NPC-скрипты работают на том же рантайме MagmaCore, что и все остальные поверхности, и получают полный общий контекст — context.world, context.zones, context.scheduler, context.cooldowns, context.log, context.event, context.player, context.state — плюс таблицу context.npc, доступную только для NPC и описанную здесь.

Properties

ПолеТипОписание
namestringОтображаемое имя NPC
filenamestringИмя файла конфига NPC
uuidstringUUID NPC во время выполнения
activation_radiusdoubleНастроенный радиус активации
current_locationlocationСнимок локации, когда сущность NPC существует
entity_typestringТип сущности Bukkit, когда сущность NPC существует

Methods

МетодАргументыВозвращаетОписание
is_valid()-boolВалидна ли ещё базовая сущность NPC
get_location()-locationТекущая локация NPC или запасной вариант со спавна
get_eye_location()-locationТекущая локация глаз или запасной вариант со спавна
get_activation_radius()-doubleТекущий настроенный радиус активации
get_nearby_players(radius)doubletableТаблицы игроков рядом с NPC
face_direction_or_location(target)vector or locationnilПовернуться в направлении или взглянуть на локацию
say_greeting(player?)player, UUID, name, or nilnilОтправить настроенное приветствие. По умолчанию вызвавшему игроку, если он доступен
say_dialog(player?)player, UUID, name, or nilnilОтправить настроенный диалог. По умолчанию вызвавшему игроку, если он доступен
say_farewell(player?)player, UUID, name, or nilnilОтправить настроенный текст прощания. По умолчанию вызвавшему игроку, если он доступен
play_model_animation(name)stringnilВоспроизвести анимацию кастомной модели, если она доступна; безопасно ничего не делает иначе

Специфичные для NPC хуки включают on_spawn, on_remove, on_game_tick, on_npc_interact, on_npc_proximity_enter и on_npc_proximity_leave. Полный рабочий процесс и детали кулдаунов смотрите в NPC-скриптах EliteMobs.


EliteMobs Living Entity Table ELITEMOBS

Таблицы сущностей, создаваемые внутри скриптов сил EliteMobs (из context.boss, данных событий, колбэков зон и запросов мира), используют расширенную таблицу живой сущности с дополнительными методами поверх глобальной Living Entity. context.boss наследует все эти методы.

Properties

ПолеТипОписание
namestringОтображаемое имя сущности
uuidstringUUID сущности
entity_typestringИмя типа сущности
is_playerboolЯвляется игроком
is_monsterboolЯвляется монстром (Monster)
is_eliteboolЯвляется сущностью EliteMobs
is_validboolСущность всё ещё существует
is_mountboolTrue, когда эта таблица сущности представляет маунт босса
healthdoubleТекущее здоровье (снимок)
maximum_healthdoubleМаксимальное здоровье (снимок)
current_locationlocationПозиция сущности (снимок)
game_modestringИгровой режим (ВЕРХНИЙ РЕГИСТР в EliteMobs: SURVIVAL, CREATIVE, ADVENTURE, SPECTATOR)

Methods

МетодАргументыВозвращаетОписание
is_alive()boolЖива ли сущность (живая проверка)
is_ai_enabled()boolВключён ли ИИ
is_frozen()boolЗаморожен ли босс (только CustomBossEntity)
is_on_ground()boolСтоит ли сущность на земле
is_healing()boolЛечится ли элита
get_location()locationТекущая позиция (актуальная)
get_eye_location()locationПозиция глаз (актуальная)
get_height()doubleВысота сущности
get_health()doubleТекущее здоровье (актуальное)
get_maximum_health()doubleМаксимальное здоровье (актуальное)
get_velocity()vectorТекущий вектор скорости
deal_damage(amount)doublenilНанести обычный урон
deal_custom_damage(amount)doublenilНанести кастомный урон от атаки босса этой силы
deal_damage_from_boss(amount)doublenilНанести урон, приписанный сущности босса этой силы
restore_health(amount)doublenilИсцелить сущность (использует исцеление EliteMobs если элита)
play_sound_at_entity(sound, volume?, pitch?)string (ключ звука Minecraft, например "entity.ender_dragon.growl"), float?=1, float?=1nilВоспроизвести звук у сущности
play_sound_at_self(sound, volume?, pitch?)string (ключ звука Minecraft, например "entity.ender_dragon.growl"), float?=1, float?=1nilВоспроизвести звук у сущности (псевдоним)
spawn_particle_at_self(particle, count?)string (Particle) or table, int?=1nilСоздать частицы у сущности
spawn_particles_at_location(loc, particle, count?)location, particle spec, int?=1nilСоздать частицы в локации
teleport_to_location(location)locationnilТелепортировать сущность
set_velocity_vector(vector)vectornilЗадать скорость
set_gravity(enabled)boolnilУстановить гравитацию
apply_push_vector(vector, additive?, delay?)vector, bool?=false, int?=1nilПрименить скорость после задержки. additive прибавляет к текущей скорости
push_relative_to(location, force?, extraX?, extraY?, extraZ?)location, double?=1, double?=0, double?=0, double?=0nilОттолкнуть сущность от локации
set_custom_name(name)stringnilУстановить кастомное отображаемое имя. Поддерживает цветовые коды
reset_custom_name()nilСбросить имя на значение по умолчанию EliteMobs
set_custom_name_visible(visible)boolnilПереключить видимость имени
set_ai_enabled(enabled, duration?)bool, int?=0nilУстановить состояние ИИ. Автоматически возвращается через duration тиков
set_awareness_enabled(enabled, duration?)bool, int?=0nilУстановить внимательность моба. Автоматически возвращается через duration тиков
face_direction_or_location(target)vector or locationnilПовернуться в направлении или взглянуть на локацию
play_model_animation(name)stringnilВоспроизвести анимацию FMM-модели (требуется модель FMM)
is_inside_vehicle()-boolЕдет ли сущность верхом на другой сущности
has_vehicle()-boolЕсть ли у сущности транспорт
get_vehicle()-entity or nilСсылка на текущую сущность-транспорт
set_vehicle(entity)entity tableboolЗаставляет эту сущность ехать на указанном транспорте
leave_vehicle()-boolЗаставляет эту сущность покинуть текущий транспорт
has_passengers()-boolЕсть ли у этой сущности пассажиры
get_passenger_count()-intЧисло пассажиров
get_passengers()-tableМассив ссылок на сущности-пассажиры
add_passenger(entity)entity tableboolДобавляет пассажира к этой сущности
remove_passenger(entity)entity tableboolУдаляет пассажира с этой сущности
eject_passengers()-boolВысаживает всех пассажиров
set_scale(scale, duration?)double, int?=0nilЗадать масштаб сущности. Автоматически возвращается к 1.0 через duration тиков
set_invulnerable(enabled, duration?)bool, int?=0nilСделать неуязвимым. Автоматически возвращается через duration тиков
set_healing(enabled)boolnilЗадать состояние исцеления элиты
navigate_to_location(location, speed?, force?, timeout?)location, double?=1, bool?=false, int?=0nilПроложить путь к локации (только CustomBossEntity)
add_tag(tag, ticks?)string, int?=0nilДобавить тег, автоматически удалить через тики
remove_tag(tag)stringnilУдалить тег
has_tag(tag)stringboolПроверить тег
overlaps_box_at_location(center, halfX?, halfY?, halfZ?)location, double?=0.5, double?=halfX, double?=halfXboolПересекает ли описывающий бокс сущности бокс в локации
remove_elite()nilУдалить через пайплайн удаления EliteMobs
apply_potion_effect(type, duration, amplifier?)string (PotionEffectType), int, int?=0nilПрименить эффект зелья
set_equipment(slot, material, options?)string (EquipmentSlot), string (Material), tablenilУстановить предмет в слот экипировки
set_fire_ticks(ticks)intnilУстановить тики горения
add_visual_freeze_ticks(ticks?)int?=1nilДобавить визуальные тики заморозки
place_temporary_block(material, ticks?, requireAir?)string (Material), int?=0, bool?=falsenilПоставить временный блок в локации сущности

set_equipment options

ОпцияТипПо умолч.Описание
unbreakableboolfalseСделать предмет неломающимся
enchantmentstableМассив таблиц {type = "ENCHANT_NAME", level = 1}

EliteMobs Player Methods

Игроки в скриптах EliteMobs имеют все методы живой сущности EliteMobs плюс:

МетодАргументыВозвращаетОписание
send_message(text)stringnilОтправить сообщение в чат. Поддерживает цветовые коды
show_action_bar(text)stringnilПоказать текст в панели действий. Поддерживает цветовые коды
show_title(title, subtitle?, fadeIn?, stay?, fadeOut?)string, string?="", int?=10, int?=40, int?=10nilПоказать экранный заголовок. Поддерживает цветовые коды
show_boss_bar(title, color?, style?, duration?)string, string (BarColor)?=WHITE, string (BarStyle)?=SOLID, int?=40nilПоказать полосу босса. Автоматически скрывается через duration тиков. Поддерживает цветовые коды
run_command(command)stringnilВыполнить команду от имени игрока

EliteMobs Entity Reference Table

Не-живые сущности (снаряды, падающие блоки, фейерверки), возвращаемые методами спавна EliteMobs, получают облегчённую таблицу-ссылку:

Поле / МетодАргументыВозвращаетОписание
namestringИмя сущности
uuidstringUUID сущности
entity_typestringИмя типа сущности
is_playerboolВсегда false
is_eliteboolВсегда false
is_valid()boolВалидна ли сущность ещё (живая проверка)
current_locationlocationПозиция (снимок)
get_location()locationТекущая позиция (актуальная)
get_velocity()vectorТекущий вектор скорости
is_on_ground()boolСтоит ли сущность на земле
teleport_to_location(location)locationnilТелепортировать сущность
set_velocity_vector(vector)vectornilЗадать скорость
set_direction_vector(vector)vectornilЗадать направление (только огненные шары)
set_yield(amount)doublenilЗадать силу огненного шара
set_gravity(enabled)boolnilУстановить гравитацию
detonate()nilВзорвать фейерверк
remove()nilУдалить сущность
unregister(reason?)string?=OTHERnilСнять регистрацию из трекера сущностей EliteMobs

context.players ELITEMOBS

Таблица запросов игроков, доступная в Lua-скриптах сил EliteMobs. Предоставляет вспомогательные методы для поиска игроков относительно босса.

МетодАргументыВозвращаетОписание
current_target()player or nilАктор события если игрок, либо текущая цель моба-босса если игрок
nearby_players(radius)doubletableМассив таблиц игроков в радиусе от босса
all_players_in_world()tableМассив таблиц всех игроков в мире босса

context.entities ELITEMOBS

Таблица запросов сущностей, доступная в Lua-скриптах сил EliteMobs. Предоставляет вспомогательные методы для поиска сущностей относительно босса. Все запросы исключают самого босса.

МетодАргументыВозвращаетОписание
get_nearby_entities(radius, filter?)double, string?="living"tableСущности в радиусе. "all"/"entities" возвращает все сущности (включая неживые); любое другое значение возвращает живых сущностей, отфильтрованных по категории: "player(s)", "elite(s)", "mob(s)", либо по умолчанию = все живые
get_entities_in_box(center, halfX, halfY, halfZ, filter?)location, double, double, double, string?="living"tableЖивые сущности внутри осесогласованного бокса (те же значения фильтра, что выше; только режимы кроме all)
get_all_entities(filter?)string?="living"tableВсе живые сущности в мире босса (те же значения фильтра)
get_direct_target_entity()entity or nilПрямая целевая сущность из вызвавшего события
get_boss_spawn_location()locationИзначальная локация спавна босса

context.vectors ELITEMOBS

Утилиты векторной математики, доступные в Lua-скриптах сил EliteMobs.

МетодАргументыВозвращаетОписание
get_vector_between_locations(from, to, options?)location, location, tablevectorВектор от источника к назначению. Опции могут изменить результат
rotate_vector(vector, pitch?, yaw?)vector, double?=0, double?=0vectorПовернуть вектор по pitch и yaw (в градусах)
normalize_vector(vector)vectorvectorНормализовать до единичной длины

context.state GLOBAL

Обычная Lua-таблица, живущая всё время существования экземпляра скрипта. Используйте её для хранения флагов, счётчиков, ID задач, состояний переключателей и любых данных, которые нужно разделять между хуками. context.state — это постоянная таблица, принадлежащая скрипту; большинство остальных таблиц контекста пересоздаются или лениво создаются заново по мере необходимости. FMM кэширует context.prop для каждого пропса ради производительности, но её актуальные поля, такие как current_location, всё равно обновляются при чтении.

context.state.counter = (context.state.counter or 0) + 1

context.cooldowns GLOBAL

Управление кулдаунами. Локальные кулдауны привязаны к экземпляру скрипта; глобальные кулдауны общие для всех скриптов на одной сущности/владельце. Если ключ не указан, по умолчанию используется имя файла скрипта.

МетодАргументыВозвращаетОписание
local_ready(key?)string (optional)boolИстёк ли локальный кулдаун
local_remaining(key?)string (optional)intОставшиеся тики локального кулдауна (0 если готов)
check_local(key?, duration)string (optional), intboolЕсли готов, запускает кулдаун и возвращает true; иначе false
set_local(duration, key?)long, string (optional)nilУстановить локальный кулдаун на duration тиков
global_ready()boolИстёк ли глобальный кулдаун
set_global(duration)longnilУстановить глобальный кулдаун на duration тиков

В Lua-скриптах сил EliteMobs локальные кулдауны общие для всех сил на одной сущности босса, а глобальные кулдауны используют встроенную систему кулдаунов сил босса.

NPC-скрипты EliteMobs используют общий порядок кулдаунов check_local(key?, duration); см. NPC-скрипты.


context.scheduler GLOBAL

Планирование задач. Все задачи автоматически отменяются при выключении скрипта.

Global (Magmacore) variant

Скрипты FreeMinecraftModels и NPC-скрипты EliteMobs используют этот общий вариант. Приведённые ниже имена в стиле EliteMobs являются псевдонимами того же планировщика, поэтому на общих поверхностях допустим любой стиль именования.

МетодАргументыВозвращаетОписание
run_later(ticks, callback)int, functionintВыполнить колбэк через указанное число тиков. Возвращает ID задачи
run_repeating(delay, interval, callback)int, int, functionintВыполнять колбэк каждые interval тиков после начальной задержки. Возвращает ID задачи
cancel(taskId)intnilОтменить запланированную задачу

EliteMobs variant

МетодАргументыВозвращаетОписание
run_after(ticks, callback)int, functionintВыполнить колбэк через указанное число тиков. Возвращает ID задачи
run_every(ticks, callback)int, functionintВыполнять колбэк каждые N тиков. Возвращает ID задачи
cancel_task(taskId)intnilОтменить запланированную задачу

context.log GLOBAL

Утилиты логирования для отладки скриптов.

Global (Magmacore / FMM) variant

МетодАргументыВозвращаетОписание
info(message)stringnilЗаписать info-сообщение
warn(message)stringnilЗаписать предупреждение
error(message)stringnilЗаписать сообщение об ошибке/предупреждение

EliteMobs variant

МетодАргументыВозвращаетОписание
info(message)stringnilЗаписать info-сообщение
warn(message)stringnilЗаписать предупреждение
debug(message)stringnilЗаписать отладочное сообщение (отображается как info с префиксом debug)

context.zones GLOBAL

Создание и отслеживание зон для скриптов FreeMinecraftModels и других рантаймов ScriptInstance на базе Magmacore. Силы боссов EliteMobs используют вариант context.zones EliteMobs ниже.

Global (Magmacore) variant

МетодАргументыВозвращаетОписание
create_sphere(x, y, z, radius)num, num, num, numintСоздать сферическую зону, возвращает дескриптор
create_cylinder(x, y, z, radius, height)num, num, num, num, numintСоздать цилиндрическую зону, возвращает дескриптор
create_cuboid(x, y, z, xSize, ySize, zSize)num, num, num, num, num, numintСоздать кубоидную зону, возвращает дескриптор
watch(handle, on_enter?, on_leave?)int, function?, function?boolВключить отслеживание зоны. Аргументы-функции активируют on_zone_enter / on_zone_leave; тела функций не вызываются напрямую. Хуки зон получают context.player / context.event.player для игрока, пересёкшего границу
unwatch(handle)intnilПрекратить отслеживание зоны

EliteMobs variant

МетодАргументыВозвращаетОписание
get_entities_in_zone(zone, options?)zone table, tabletableПолучить сущности внутри зоны. Опции: filter, mode
get_locations_in_zone(zone, options?)zone table, tabletableПолучить локации внутри зоны. Опции: coverage, mode
zone_contains(zone, location, mode?)zone table, location, string?="full"boolНаходится ли локация в зоне ("full" или "border")
watch_zone(zone, callbacks, options?)zone table, table, table?nilОтслеживать вход/выход зоны. Колбэки: {on_enter = fn, on_leave = fn}. Опции поддерживают filter и mode

context.event GLOBAL

Таблица данных события для хука, вызвавшего текущее выполнение скрипта. Присутствует в хуках, управляемых событиями, и в общих хуках входа/выхода зон MagmaCore, предоставляющих актора-игрока; отсутствует в on_game_tick, запланированных колбэках и хуках жизненного цикла без игрока.

Global (Magmacore) variant

Поле / МетодТипОписание
is_cancelledboolСостояние отмены на момент построения контекста; не обновляется после cancel() / uncancel()
cancel()methodОтменить событие, когда лежащее в основе событие Bukkit отменяемо
uncancel()methodСнять отмену события, когда лежащее в основе событие Bukkit отменяемо
playerentity tableИгрок, участвующий в событии (если есть)

Общие хуки зон заполняют player, но не подкреплены отменяемым событием Bukkit, поэтому cancel() и uncancel() там отсутствуют.

Для таблицы событий EliteMobs (с количеством урона, причинами урона и т.д.) смотрите EliteMobs Event Table.


context.script ELITEMOBS

Мост к системе Elite Script EliteMobs. Позволяет Lua-силам использовать YAML-системы таргетинга, зон и относительных векторов через Lua-таблицы с теми же именами полей, что и YAML-конфиги Elite Script.

Methods

МетодАргументыВозвращаетОписание
target(spec)tabletarget handleСоздать дескриптор цели из spec-таблицы цели Elite Script
zone(spec)tablezone handleСоздать дескриптор зоны из spec-таблицы зоны Elite Script
relative_vector(spec, location?, zone?)table, location, zone handlevector handleСоздать относительный вектор из spec-таблицы вектора Elite Script
damage(target, amount?, multiplier?)target handle, double?=0, double?=1nilНанести урон всем сущностям в цели
push(target, vector, additive?)target handle, vector or vector handle, bool?=falsenilОттолкнуть целевые сущности скоростью
set_facing(target, vector)target handle, vector or vector handlenilЗадать направление взгляда целевых сущностей
spawn_particles(target, particles)target handle, table or stringnilСоздать частицы в локациях цели

Target Handle

Возвращается из context.script:target(spec). Spec-таблица использует те же ключи, что и YAML-конфиги целей Elite Script (например, {targetType = "NEARBY_PLAYERS", range = 20}).

МетодАргументыВозвращаетОписание
entities()tableМассив таблиц сущностей в цели
locations()tableМассив таблиц локаций в цели
first_entity()entity or nilПервая сущность в цели
first_location()location or nilПервая локация в цели

Zone Handle

Возвращается из context.script:zone(spec). Spec-таблица использует те же ключи, что и YAML-конфиги зон Elite Script (например, {shape = "SPHERE", radius = 5, target = {targetType = "SELF"}}).

МетодАргументыВозвращаетОписание
full_target(coverage?)numbertarget handleДескриптор цели для внутренних локаций зоны
border_target(coverage?)numbertarget handleДескриптор цели для граничных локаций зоны
full_locations(coverage?)numbertableМассив внутренних локаций
border_locations(coverage?)numbertableМассив граничных локаций
full_entities()tableСущности внутри зоны
border_entities()tableСущности на границе зоны
contains(location, mode?)location, string?="full"boolНаходится ли локация в зоне
watch(callbacks, mode?)table, string?="full"intОтслеживать вход/выход. Возвращает ID задачи

Vector Handle

Возвращается из context.script:relative_vector(spec). Spec-таблица использует те же ключи, что и YAML-конфиги относительных векторов Elite Script.

МетодАргументыВозвращаетОписание
resolve()vectorВычислить вектор для текущего контекста

context.world (EliteMobs) ELITEMOBS

Специфичная для босса таблица мира для Lua-скриптов сил EliteMobs. Силы боссов начинают с общей таблицы world MagmaCore, поэтому координатные помощники, такие как get_block_at(...), set_block_at(...) и spawn_particle(...), остаются доступными. Методы ниже — это дополнения EliteMobs или специфичные для босса переопределения, в основном формы с таблицей-локацией и помощники для босса.

Block Queries

МетодАргументыВозвращаетОписание
get_block_type_at_location(loc)locationstring or nilИмя Material
get_highest_block_y_at_location(loc)locationint or nilY самого верхнего блока
get_blast_resistance_at_location(loc)locationdoubleЗначение взрывоустойчивости
is_air_at_location(loc)locationboolБлок является воздухом
is_passable_at_location(loc)locationboolБлок проходим
is_passthrough_at_location(loc)locationboolБлок не сплошной
is_on_floor_at_location(loc)locationboolВоздух с твёрдым блоком ниже
is_standing_on_material(loc, material)location, string (Material)boolБлок ниже совпадает с материалом

Block Manipulation

МетодАргументыВозвращаетОписание
set_block_at_location(loc, material, requireAir?)location, string (Material), bool?=falsenilПоставить блок. Если requireAir равно true, заменяет только воздух
place_temporary_block_at_location(loc, material, ticks?, requireAir?)location, string, int?=0, bool?=falsenilПоставить блок, автоудаление через тики. Если requireAir равно true, заменяет только воздух

Spawning

МетодАргументыВозвращаетОписание
spawn_boss_at_location(file, loc?, level?)string, location?=boss loc, int?=boss levelentity or nilЗаспавнить кастомного босса
spawn_custom_boss_at_location(file, loc, options?)string, location, tableentity or nilЗаспавнить босса с опциями (level, silent, add_as_reinforcement, velocity)
spawn_entity_at_location(type, loc, options?)string (EntityType), location, tableentity or nilЗаспавнить ванильную сущность с опциями (velocity, duration, effect, on_land, max_ticks)
spawn_falling_block_at_location(loc, material, options?)location, string (Material), tableentity or nilЗаспавнить падающий блок (drop_item, hurt_entities, velocity, on_land)
spawn_reinforcement_at_location(file, loc, level?, velocity?)string, location, int?=0, vectorentity or nilЗаспавнить подкрепление, привязанное к боссу
spawn_fireworks_at_location(loc, config)location, tableentity or nilЗапустить фейерверк
spawn_splash_potion_at_location(loc, config)location, tableentity or nilБросить взрывное зелье

Effects and Utility

МетодАргументыВозвращаетОписание
play_sound_at_location(loc, sound, volume?, pitch?)location, string (ключ звука Minecraft, например "entity.blaze.shoot"), float?=1, float?=1nilВоспроизвести звук
spawn_particle_at_location(loc, particle, count?)location, string (Particle) or table, int?=1nilСоздать частицы
strike_lightning_at_location(loc)locationnilУдарить молнией (обходит защиту EM)
run_empowered_lightning_task_at_location(loc)locationnilЭффект усиленной молнии
generate_fake_explosion(locations, center?)table of locations, locationnilВизуальный взрыв без урона
spawn_fake_gold_nugget_at_location(loc, velocity, gravity?)location, vector, bool?=falsefake projectile or nilСоздать визуальный снаряд золотого самородка
run_fake_gold_nugget_damage(projectiles)tablenilЗапустить проверку урона по фальшивым снарядам
set_world_time(time) or (loc, time)long, or location + longnilУстановить время мира
set_world_weather(weather, duration?) or (loc, weather, duration?)string (CLEAR, RAIN, PRECIPITATION, THUNDER), int?=6000nilУстановить погоду
run_console_command(command)stringnilВыполнить команду консоли
generate_player_loot(times?)int?=1nilВыполнить столько прокруток лута для атаковавших
drop_bonus_coins(multiplier?)double?=2nilВыронить бонусные монеты у босса

context.settings (EliteMobs)

МетодАргументыВозвращаетОписание
warning_visual_effects_enabled()boolВключены ли предупреждающие VFX в конфиге

EliteMobs Event Table

Таблица context.event передаётся в хуки урона и спавна. Поля различаются в зависимости от типа события.

Поле / МетодТипКогда присутствуетОписание
damage_amountdoubleСобытия уронаСырое количество урона
damage_causestringСобытия уронаИмя DamageCause
damagerentity tableСобытия урона от сущностиСущность, нанёсшая урон
projectileentity tableСобытия урона снарядомСнаряд, нанёсший урон
spawn_reasonstringСобытие спавнаИмя причины спавна
entityentity tableСобытия смерти/зоныРелевантная сущность
cancel_event()methodБольшинство событийОтменить событие
set_damage_amount(amount)method (double)События уронаПереопределить количество урона
multiply_damage_amount(multiplier)method (double)События уронаУмножить текущий урон

context.item FMM

Доступно в скриптах предметов FMM. Определяет конкретный скриптованный предмет из надетых слотов игрока через PDC-тег.

Методы чтения проверяют надетый в данный момент подходящий предмет при вызове. Методы записи ставят свою мутацию в очередь на главный поток Bukkit и возвращают nil.

Properties

ПолеТипОписание
idstringИдентификатор скрипта предмета

Methods

МетодАргументыВозвращаетОписание
material()stringИмя Material
get_amount()intРазмер стака
set_amount(n)intnilПоставить в очередь установку размера стака
consume(n?)int?=1nilПоставить в очередь уменьшение на n, удалить при нуле
get_uses()intСчётчик использований из PDC
set_uses(n)intnilПоставить в очередь установку счётчика использований PDC
get_durability()table or nilВозвращает поля current и max, либо nil если нет полосы прочности
get_durability_percentage()number or nilОставшаяся доля 0.0--1.0, либо nil
use_durability(amount, can_break?)int, bool?=falsenilПоставить в очередь уменьшение прочности на абсолютное значение. При false ограничивается 1
use_durability_percentage(fraction, can_break?)number, bool?=falsenilПоставить в очередь уменьшение прочности на долю от максимума (0.0--1.0)
get_name()string or nilОтображаемое имя
set_name(s)stringnilПоставить в очередь установку отображаемого имени. Поддерживает цветовые коды
get_lore()tableМассив строк лора
set_lore(table)tablenilПоставить в очередь установку лора из массива строк

context.prop FMM

Доступно в скриптах пропсов FMM. Наследует все поля Entity от лежащего в основе armor stand.

Properties

ПолеТипОписание
model_idstringИмя чертежа модели
current_locationlocationТекущая позиция пропса

Methods

МетодАргументыВозвращаетОписание
play_animation(name, blend?, loop?)string, bool?=true, bool?=trueboolВоспроизвести анимацию по имени
stop_animation()nilОстановить все текущие анимации
hurt_visual()nilВспышка красного цвета, без урона
pickup()nilПоставить в очередь удаление пропса и выпадение предмета размещения
has_mount_points()boolИмеет ли пропс кости точек посадки
mount(player)entity tableboolПоставить в очередь проверку посадки; true означает, что базовые ссылки были валидны
dismount(player)entity tableboolПоставить в очередь проверку высадки; true означает, что базовые ссылки были валидны
get_passengers()tableМассив таблиц сущностей-сидящих игроков
spawn_elitemobs_boss(file, x, y, z)string, num, num, numentity or nilЗаспавнить босса EliteMobs (требует EliteMobs)
open_inventory(player, title, rows?)entity table, string, int?=3boolПоставить в очередь открытие постоянного сундука-инвентаря (число рядов ограничено 1--6). Заголовок поддерживает цветовые коды
place_book(player)entity tableboolПоставить в очередь сохранение написанной/записываемой книги из руки игрока на пропсе
read_book(player)entity tableboolПоставить в очередь открытие сохранённой книги для чтения
take_book(player)entity tableboolПоставить в очередь возврат сохранённой книги игроку
has_book()boolСохранена ли книга
drop_inventory()boolПоставить в очередь выпадение всех сохранённых предметов и очистку хранилища
drop_book()boolПоставить в очередь выпадение сохранённой книги и очистку хранилища
is_viewing_inventory(player)entity tableboolОткрыт ли у игрока инвентарь этого пропса
set_persistent_data(key, value)string, stringboolСохранить строку в PDC пропса
get_persistent_data(key)stringstring or nilПолучить строку из PDC пропса

Color Codes

Все методы, отмеченные как поддерживающие цветовые коды, используют ChatColorConverter из Magmacore. Эти форматы можно свободно смешивать в любой строке:

Legacy codes

Используйте & за которым следует символ цвета/форматирования:

КодЦветКодФормат
&0Чёрный&lЖирный
&1Тёмно-синий&mЗачёркнутый
&2Тёмно-зелёный&nПодчёркнутый
&3Тёмная бирюза&oКурсив
&4Тёмно-красный&rСброс
&5Тёмно-фиолетовый
&6Золотой
&7Серый
&8Тёмно-серый
&9Синий
&aЗелёный
&bБирюзовый
&cКрасный
&dСветло-фиолетовый
&eЖёлтый
&fБелый

Hex colors

Точный цвет RGB через 6-значный hex:

&#FF5500          -- префикс амперсанда
<#FF5500> -- синтаксис тега

Gradients

Плавная интерполяция между двумя или более цветами по тексту:

<gradient:#FF0000:#0000FF>Этот текст переходит от красного к синему</gradient>
<g:#FF0000:#00FF00:#0000FF>Трёхцветный градиент</g>

Краткая форма g работает идентично gradient. Можно соединять сколько угодно цветовых остановок.

Rainbow

Прохождение по полному спектру оттенков при полной насыщенности. Опциональный числовой аргумент сдвигает начальный оттенок (фазовое смещение):

<rainbow>Полный радужный текст</rainbow>
<r:0.5>Радуга со сдвинутым начальным оттенком</r>

Common Types

location

{ x = number, y = number, z = number, yaw = number, pitch = number, world = string }

vector

{ x = number, y = number, z = number }

entity table

Любая таблица с полем uuid. Таблицы игроков и сущностей из контекста работают напрямую:

context.player                              -- валидная таблица сущности
context.world:get_nearby_entities(x,y,z,r) -- возвращает массив таблиц сущностей

Next Steps