Полный справочник методов Lua-скриптового API. Все методы вызываются через синтаксис context.table:method().
Методы с пометкой GLOBAL (Глобальные) предоставляются Magmacore, общей базовой библиотекой — они работают одинаково в скриптах EliteMobs и FreeMinecraftModels.
Методы с пометкой ELITEMOBS (EliteMobs) специфичны для скриптов способностей боссов EliteMobs.
Методы с пометкой FMM (FMM) специфичны для скриптов предметов и пропов FreeMinecraftModels.
Если метод требует перечисление Bukkit (Sound, Particle, Material и т.д.), см. Spigot Javadocs для допустимых значений. Имена перечислений передаются строками в верхнем регистре (например, "DIAMOND_SWORD", "ENTITY_ARROW_SHOOT").
Таблица сущности GLOBAL
Базовые поля, присутствующие во всех таблицах сущностей — игроки, мобы, пропы и всё остальное.
Свойства
| Поле | Тип | Описание |
|---|
uuid | string | UUID сущности |
entity_type | string | Тип сущности (нижний регистр) |
is_valid | bool | Сущность всё ещё существует в мире |
is_dead | bool | Сущность мертва |
is_player | bool | Является игроком |
is_hostile | bool | Является Monster |
is_passive | bool | Является Animal |
is_elite | bool | Является сущностью EliteMobs |
is_custom_boss | bool | Является пользовательским боссом EliteMobs |
is_significant_boss | bool | Пользовательский босс с множителем здоровья больше 1 (спроектированная встреча) |
is_modeled | bool | Имеет модель FMM |
is_prop | bool | Является пропом FMM |
current_location | location | Позиция сущности (x, y, z, yaw, pitch, world) |
world | string | Имя мира |
Методы
| Метод | Аргументы | Возвращает | Описание |
|---|
teleport(location) | таблица location | nil | Телепортировать сущность |
remove() | — | nil | Удалить сущность из мира |
set_silent(enabled) | bool | nil | Установить беззвучность |
set_invulnerable(enabled) | bool | nil | Установить неуязвимость |
set_gravity(enabled) | bool | nil | Установить гравитацию |
set_glowing(enabled) | bool | nil | Установить свечение |
Мост: entity.elite
Присутствует только когда is_elite равно true. Заполняется через рефлексию — зависимость от EliteMobs не требуется.
| Поле | Тип | Описание |
|---|
level | int | Уровень элитного моба |
name | string | Отображаемое имя элиты |
health | double | Текущее здоровье |
max_health | double | Максимальное здоровье |
is_custom_boss | bool | Является пользовательским боссом (также доступно на верхнем уровне) |
health_multiplier | double | Множитель здоровья из конфигурации |
damage_multiplier | double | Множитель урона из конфигурации |
remove() | method | Удалить сущность элиты |
Мост: entity.model
Присутствует только когда is_modeled равно true. Заполняется через рефлексию — зависимость от FMM не требуется.
| Поле | Тип | Описание |
|---|
model_id | string | Имя чертежа модели |
play_animation(name, blend?, loop?) | method | Воспроизвести анимацию. blend по умолчанию false, loop по умолчанию false |
stop_animations() | method | Остановить все анимации |
remove() | method | Удалить моделированную сущность |
Таблица живой сущности GLOBAL
Расширяет Таблицу сущности. Применяется ко всем живым сущностям (мобам и игрокам).
Свойства
| Поле | Тип | Описание |
|---|
health | double | Текущее здоровье |
maximum_health | double | Максимальное здоровье |
name | string | Отображаемое имя сущности |
is_alive | bool | Сущность жива |
Методы
| Метод | Аргументы | Возвращает | Описание |
|---|
damage(amount) | double | nil | Нанести урон сущности |
push(x, y, z) | double, double, double | nil | Добавить вектор скорости |
set_facing(x, y, z) | double, double, double | nil | Установить направление взгляда |
add_potion_effect(type, duration, amplifier) | string (PotionEffectType), int, int | nil | Применить эффект зелья по имени |
remove_potion_effect(type) | string (PotionEffectType) | nil | Удалить эффект зелья по имени |
context.player GLOBAL
Таблица сущности игрока. Наследует все поля Сущности и Живой сущности.
Свойства
| Поле | Тип | Описание |
|---|
game_mode | string | survival, creative, adventure, spectator |
Методы
| Метод | Аргументы | Возвращает | Описание |
|---|
send_message(text) | string | nil | Отправить сообщение в чат. Поддерживает цветовые коды |
get_held_item() | — | table или nil | Возвращает поля type, amount, display_name, или nil если рука пуста |
consume_held_item(amount?) | int (по умолчанию 1) | nil | Уменьшить стак предмета в руке на amount |
has_item(material, amount?) | string (Material), int (по умолчанию 1) | bool | Проверить инвентарь на наличие материала |
get_target_entity(range?) | num (по умолчанию 50) | entity или nil | Raycast для сущности, на которую смотрит игрок |
get_eye_location() | — | location | Позиция глаз игрока |
get_look_direction() | — | vector | Единичный вектор направления |
send_block_change(x, y, z, material, ticks?) | int, int, int, string (Material), int (необязательно) | bool | Отправить фальшивый блок. Автосброс после ticks если указано |
reset_block(x, y, z) | int, int, int | bool | Сбросить фальшивый блок к реальному |
sleep(x, y, z) | num, num, num | nil | Анимация сна в кровати по координатам |
wake_up() | — | nil | Разбудить спящего |
show_boss_bar(text, color?, progress, ticks?) | string, string (BarColor, по умолчанию WHITE), num, int (необязательно) | nil | Показать полосу босса. Автоскрытие после ticks. Поддерживает цветовые коды |
hide_boss_bar() | — | nil | Убрать полосу босса |
show_action_bar(text, ticks?) | string, int (необязательно) | nil | Показать панель действий. Повтор если ticks больше 0. Поддерживает цветовые коды |
show_title(title, subtitle?, fadeIn, stay, fadeOut) | string, string (по умолчанию пусто), int, int, int | nil | Показать экран заголовка. Поддерживает цветовые коды |
context.world GLOBAL
Операции с миром. Доступны во всех типах скриптов.
Свойства
| Поле | Тип | Описание |
|---|
name | string | Имя мира |
Методы
| Метод | Аргументы | Возвращает | Описание |
|---|
get_block_at(x, y, z) | int, int, int | string | Имя Material (нижний регистр) |
set_block_at(x, y, z, material) | int, int, int, string (Material) | bool | Разместить блок |
get_highest_block_y(x, z) | int, int | int | Y самого высокого не воздушного блока |
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 | Создать эффект частиц |
play_sound(sound, x, y, z, volume?, pitch?) | string (Sound), num, num, num, float?=1, float?=1 | nil | Воспроизвести звук |
strike_lightning(x, y, z) | num, num, num | nil | Ударить молнией |
get_time() | — | int | Время мира в тиках |
set_time(ticks) | long | nil | Установить время мира |
get_nearby_entities(x, y, z, radius) | num, num, num, num | table | Массив таблиц сущностей |
get_nearby_players(x, y, z, radius) | num, num, num, num | table | Массив таблиц сущностей игроков |
spawn_entity(type, x, y, z) | string (EntityType), num, num, num | entity | Создать ванильную сущность |
raycast(fx, fy, fz, dx, dy, dz, max?) | num, num, num, num, num, num, num?=50 | table | Возвращает поля 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 | Разместить блок, автоматически возвращающийся после ticks |
drop_item(x, y, z, material, amount?) | num, num, num, string (Material), int?=1 | entity | Выбросить сущность предмета естественным образом в местоположении |
spawn_firework(x, y, z, colors, type?, power?) | num, num, num, table, string (FireworkEffect.Type)?=BALL, int?=1 | nil | Создать фейерверк |
context.boss ELITEMOBS
Таблица сущности босса для Lua-скриптов способностей EliteMobs. Наследует все методы Живой сущности EliteMobs. Свойства обновляются через выделенные геттеры.
Свойства
| Поле | Тип | Описание |
|---|
name | string | Отображаемое имя босса |
uuid | string | UUID сущности элиты |
health | double | Текущее здоровье (снимок) |
maximum_health | double | Максимальное здоровье (снимок) |
current_location | location | Позиция босса (снимок) |
level | int | Уровень босса |
damager_count | int | Количество игроков, нанёсших урон этому боссу |
is_in_combat | bool | Босс в бою |
exists | bool | Сущность босса существует |
Методы
| Метод | Аргументы | Возвращает | Описание |
|---|
is_alive() | — | bool | Жива ли сущность босса (проверка в реальном времени) |
get_health() | — | double | Текущее здоровье (живое) |
get_maximum_health() | — | double | Максимальное здоровье (живое) |
get_location() | — | location | Текущая позиция (живая) |
restore_health(amount) | double | nil | Исцелить босса |
despawn() | — | nil | Удалить сущность босса |
get_damager_count() | — | int | Количество атакующих в реальном времени |
add_tag(tag, ticks?) | string, int?=0 | nil | Добавить тег, автоудаление после ticks если задано |
remove_tag(tag) | string | nil | Удалить тег |
has_tag(tag) | string | bool | Проверить тег |
reset_custom_name() | — | nil | Сбросить имя к значению по умолчанию из конфигурации |
play_sound_at_self(sound, volume?, pitch?) | string (Sound), float?=1, float?=1 | nil | Воспроизвести звук у босса |
play_sound_at_entity(sound, volume?, pitch?) | string (Sound), float?=1, float?=1 | nil | Воспроизвести звук у босса (алиас) |
spawn_particle_at_self(particle, count?) | string (Particle) или table, int?=1 | nil | Создать частицы у босса |
play_model_animation(name) | string | nil | Воспроизвести анимацию модели FMM (требуется модель FMM) |
navigate_to_location(location, speed?, force?, timeout?) | location, double?=1, bool?=false, int?=0 | nil | Перемещение к местоположению через pathfinding |
send_message(text, range?) | string, double?=20 | nil | Отправить сообщение ближайшим игрокам. Поддерживает цветовые коды |
get_nearby_players(range) | double | table | Массив таблиц игроков в радиусе |
get_target_player() | — | player или nil | Текущая цель моба, если это игрок |
get_nearby_players_in_zone(zone) | таблица zone | table | Игроки внутри формы зоны |
get_ender_dragon_phase() | — | string или nil | Имя EnderDragon.Phase |
set_ender_dragon_phase(phase) | string (EnderDragon.Phase) | nil | Установить фазу дракона Края |
summon_reinforcement(file, zone?, level?) | string, zone или nil, int?=0 | entity или nil | Создать босса-подкрепление |
summon_projectile(type, origin, dest, speed?, options?) | string (EntityType), location, location, double?=1, table | entity | Создать отслеживаемый снаряд |
Параметры summon_projectile
| Параметр | Тип | По умолчанию | Описание |
|---|
custom_damage | number | — | Переопределить урон снаряда |
detonation_power | string | — | Уровень взрывной мощности |
yield | number | — | Мощность огненного шара |
incendiary | bool | true | Поджигающий огненный шар |
gravity | bool | — | Включить гравитацию |
glowing | bool | false | Установить свечение |
invulnerable | bool | false | Установить неуязвимость |
persistent | bool | true | Установить постоянство |
duration | int | 0 | Автоудаление после тиков |
effect | string | — | EntityEffect для воспроизведения при создании |
spawn_at_origin | bool | false | Создать в точке начала вместо запуска от босса |
direction_only | bool | false | Задать направление без скорости (огненные шары) |
track | bool | true | Зарегистрировать как элитный снаряд |
on_land | function | — | Обратный вызов при приземлении снаряда: function(location, entity) |
max_ticks | int | 6000 | Максимум тиков до принудительного обратного вызова приземления |
Методы зон/частиц
| Метод | Аргументы | Возвращает | Описание |
|---|
spawn_particles_in_zone(zone, particle, ...) | zone, particle spec, coverage?=1.0 | nil | Заполнить зону частицами |
spawn_particles_in_zone_border(zone, particle, ...) | zone, particle spec, coverage?=1.0 | nil | Обрисовать зону частицами |
get_particles_from_self_toward_zone(zone, particle, speed?) | zone, string, double?=0.1 | table | Направленные частицы от босса к зоне |
get_particles_toward_self(zone, particle, speed?) | zone, string, double?=0.1 | table | Направленные частицы от зоны к боссу |
spawn_particles_with_vector(particles) | table | nil | Создать направленный массив частиц |
Поддержка специальных способностей
| Метод | Аргументы | Возвращает | Описание |
|---|
start_tracking_fireball_system(speed?) | double?=0.5 | nil | Запустить ИИ отслеживающего огненного шара |
handle_spirit_walk_damage(cause) | string (DamageCause) | nil | Обработать урон прогулки духа по причине |
shield_wall_is_active() | — | bool | Активна ли стена щитов |
initialize_shield_wall(charges?) | int?=1 | nil | Активировать стену щитов |
shield_wall_absorb_damage(player, damage) | таблица entity, double | bool | Попытаться поглотить урон |
deactivate_shield_wall() | — | nil | Деактивировать стену щитов |
start_zombie_necronomicon(target, file) | таблица entity, string | nil | Запустить некрономикон на цели |
Таблица живой сущности EliteMobs ELITEMOBS
Таблицы сущностей, созданные внутри скриптов способностей EliteMobs (из context.boss, данных событий, обратных вызовов зон и запросов мира), используют расширенную таблицу живой сущности с дополнительными методами помимо глобальной Живой сущности. context.boss наследует все эти методы.
Свойства
| Поле | Тип | Описание |
|---|
name | string | Отображаемое имя сущности |
uuid | string | UUID сущности |
entity_type | string | Имя типа сущности |
is_player | bool | Является игроком |
is_monster | bool | Является Monster |
is_elite | bool | Является сущностью EliteMobs |
is_valid | bool | Сущность всё ещё существует |
health | double | Текущее здоровье (снимок) |
maximum_health | double | Максимальное здоровье (снимок) |
current_location | location | Позиция сущности (снимок) |
game_mode | string | Режим игры (только для игроков) |
Методы
| Метод | Аргументы | Возвращает | Описание |
|---|
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) | double | nil | Нанести обычный урон |
deal_custom_damage(amount) | double | nil | Нанести урон пользовательской атакой босса способности |
deal_damage_from_boss(amount) | double | nil | Нанести урон, приписанный сущности босса способности |
restore_health(amount) | double | nil | Исцелить сущность (использует исцеление EliteMobs если элита) |
play_sound_at_entity(sound, volume?, pitch?) | string (Sound), float?=1, float?=1 | nil | Воспроизвести звук у сущности |
play_sound_at_self(sound, volume?, pitch?) | string (Sound), float?=1, float?=1 | nil | Воспроизвести звук у сущности (алиас) |
spawn_particle_at_self(particle, count?) | string (Particle) или table, int?=1 | nil | Создать частицы у сущности |
spawn_particles_at_location(loc, particle, count?) | location, particle spec, int?=1 | nil | Создать частицы в местоположении |
teleport_to_location(location) | location | nil | Телепортировать сущность |
set_velocity_vector(vector) | vector | nil | Задать скорость |
set_gravity(enabled) | bool | nil | Задать гравитацию |
apply_push_vector(vector, additive?, delay?) | vector, bool?=false, int?=1 | nil | Применить скорость после задержки. additive добавляет к существующей |
push_relative_to(location, force?, extraX?, extraY?, extraZ?) | location, double?=1, double?=0, double?=0, double?=0 | nil | Оттолкнуть сущность от местоположения |
set_custom_name(name) | string | nil | Установить пользовательское отображаемое имя. Поддерживает цветовые коды |
reset_custom_name() | — | nil | Сбросить имя к значению по умолчанию EliteMobs |
set_custom_name_visible(visible) | bool | nil | Переключить видимость имени |
set_ai_enabled(enabled, duration?) | bool, int?=0 | nil | Установить состояние ИИ. Автовозврат после duration тиков |
set_awareness_enabled(enabled, duration?) | bool, int?=0 | nil | Установить осведомлённость моба. Автовозврат после duration тиков |
face_direction_or_location(target) | vector или location | nil | Повернуться в направлении или к местоположению |
play_model_animation(name) | string | nil | Воспроизвести анимацию модели FMM (требуется модель FMM) |
set_scale(scale, duration?) | double, int?=0 | nil | Установить масштаб сущности. Автовозврат к 1.0 после duration тиков |
set_invulnerable(enabled, duration?) | bool, int?=0 | nil | Установить неуязвимость. Автовозврат после duration тиков |
set_healing(enabled) | bool | nil | Установить состояние лечения элиты |
navigate_to_location(location, speed?, force?, timeout?) | location, double?=1, bool?=false, int?=0 | nil | Перемещение к местоположению через pathfinding (только CustomBossEntity) |
add_tag(tag, ticks?) | string, int?=0 | nil | Добавить тег, автоудаление после ticks |
remove_tag(tag) | string | nil | Удалить тег |
has_tag(tag) | string | bool | Проверить тег |
overlaps_box_at_location(center, halfX?, halfY?, halfZ?) | location, double?=0.5, double?=halfX, double?=halfX | bool | Перекрывает ли ограничивающий параллелепипед сущности параллелепипед в местоположении |
remove_elite() | — | nil | Удалить через конвейер удаления EliteMobs |
apply_potion_effect(type, duration, amplifier?) | string (PotionEffectType), int, int?=0 | nil | Применить эффект зелья |
set_equipment(slot, material, options?) | string (EquipmentSlot), string (Material), table | nil | Установить предмет в слот экипировки |
set_fire_ticks(ticks) | int | nil | Установить тики горения |
add_visual_freeze_ticks(ticks?) | int?=1 | nil | Добавить визуальные тики заморозки |
place_temporary_block(material, ticks?, visual?) | string (Material), int?=0, bool?=false | nil | Разместить временный блок в позиции сущности |
Параметры set_equipment
| Параметр | Тип | По умолчанию | Описание |
|---|
unbreakable | bool | false | Сделать предмет неразрушимым |
enchantments | table | — | Массив таблиц {type = "ENCHANT_NAME", level = 1} |
Методы игроков EliteMobs
Игроки в скриптах EliteMobs имеют все методы живых сущностей EliteMobs плюс:
| Метод | Аргументы | Возвращает | Описание |
|---|
send_message(text) | string | nil | Отправить сообщение в чат. Поддерживает цветовые коды |
show_action_bar(text) | string | nil | Показать текст панели действий. Поддерживает цветовые коды |
show_title(title, subtitle?, fadeIn?, stay?, fadeOut?) | string, string?="", int?=10, int?=40, int?=10 | nil | Показать экран заголовка. Поддерживает цветовые коды |
show_boss_bar(title, color?, style?, duration?) | string, string (BarColor)?=WHITE, string (BarStyle)?=SOLID, int?=40 | nil | Показать полосу босса. Автоскрытие после duration тиков. Поддерживает цветовые коды |
run_command(command) | string | nil | Выполнить команду от имени игрока |
Таблица ссылки на сущность EliteMobs
Неживые сущности (снаряды, падающие блоки, фейерверки), возвращаемые методами спавна EliteMobs, получают легковесную таблицу ссылки:
| Поле / Метод | Аргументы | Возвращает | Описание |
|---|
name | — | string | Имя сущности |
uuid | — | string | UUID сущности |
entity_type | — | string | Имя типа сущности |
is_player | — | bool | Всегда false |
is_elite | — | bool | Всегда false |
is_valid() | — | bool | Действительна ли сущность (проверка в реальном времени) |
current_location | — | location | Позиция (снимок) |
get_location() | — | location | Текущая позиция (живая) |
get_velocity() | — | vector | Текущий вектор скорости |
is_on_ground() | — | bool | Стоит ли сущность на земле |
teleport_to_location(location) | location | nil | Телепортировать сущность |
set_velocity_vector(vector) | vector | nil | Задать скорость |
set_direction_vector(vector) | vector | nil | Задать направление (только огненные шары) |
set_yield(amount) | double | nil | Задать мощность огненного шара |
set_gravity(enabled) | bool | nil | Задать гравитацию |
detonate() | — | nil | Подорвать фейерверк |
remove() | — | nil | Удалить сущность |
unregister(reason?) | string?=OTHER | nil | Отменить регистрацию в трекере сущностей EliteMobs |
context.players ELITEMOBS
Таблица запросов игроков, доступная в скриптах способностей EliteMobs. Предоставляет вспомогательные методы для поиска игроков относительно босса.
| Метод | Аргументы | Возвращает | Описание |
|---|
current_target() | — | player или nil | Участник события, если игрок, или текущая цель моба босса, если игрок |
nearby_players(radius) | double | table | Массив таблиц игроков в радиусе от босса |
all_players_in_world() | — | table | Массив таблиц всех игроков в мире босса |
context.entities ELITEMOBS
Таблица запросов сущностей, доступная в скриптах способностей EliteMobs. Предоставляет вспомогательные методы для поиска сущностей относительно босса. Все запросы исключают самого босса.
| Метод | Аргументы | Возвращает | Описание |
|---|
get_nearby_entities(radius, filter?) | double, string?="living" | table | Сущности в радиусе. Фильтр: "living", "all", "entities" |
get_entities_in_box(center, halfX, halfY, halfZ, filter?) | location, double, double, double, string?="living" | table | Сущности внутри осевого параллелепипеда |
get_all_entities(filter?) | string?="living" | table | Все сущности в мире босса |
get_direct_target_entity() | — | entity или nil | Непосредственная целевая сущность из инициирующего события |
get_boss_spawn_location() | — | location | Исходное место спавна босса |
context.vectors ELITEMOBS
Утилиты векторной математики, доступные в скриптах способностей EliteMobs.
| Метод | Аргументы | Возвращает | Описание |
|---|
get_vector_between_locations(from, to, options?) | location, location, table | vector | Вектор от источника к цели. Параметры могут изменять результат |
rotate_vector(vector, pitch?, yaw?) | vector, double?=0, double?=0 | vector | Повернуть вектор на pitch и yaw (градусы) |
normalize_vector(vector) | vector | vector | Нормализовать до единичной длины |
context.cooldowns GLOBAL
Управление перезарядками. Локальные перезарядки действуют для каждого экземпляра скрипта; глобальные перезарядки являются общими для всех скриптов одной сущности/владельца. Если ключ не указан, по умолчанию используется имя файла скрипта.
| Method | Args | Returns | Description |
|---|
local_ready(key?) | string (optional) | bool | Истекла ли локальная перезарядка |
local_remaining(key?) | string (optional) | int | Оставшиеся тики локальной перезарядки (0, если готово) |
check_local(key?, duration) | string (optional), int | bool | Если готово, запускает перезарядку и возвращает true; иначе false |
set_local(duration, key?) | long, string (optional) | nil | Установить локальную перезарядку на указанное количество тиков |
global_ready() | — | bool | Истекла ли глобальная перезарядка |
set_global(duration) | long | nil | Установить глобальную перезарядку на указанное количество тиков |
В скриптах способностей EliteMobs локальные перезарядки являются общими для всех способностей одной сущности босса, а глобальные перезарядки используют встроенную систему перезарядки способностей босса.
context.scheduler GLOBAL
Планирование задач. Все задачи автоматически отменяются при завершении работы скрипта.
Глобальный (Magmacore) вариант
| Method | Args | Returns | Description |
|---|
run_later(ticks, callback) | int, function | int | Выполнить callback через указанное количество тиков. Возвращает ID задачи |
run_repeating(delay, interval, callback) | int, int, function | int | Выполнять callback каждые interval тиков после начальной задержки. Возвращает ID задачи |
cancel(taskId) | int | nil | Отменить запланированную задачу |
Вариант EliteMobs
| Method | Args | Returns | Description |
|---|
run_after(ticks, callback) | int, function | int | Выполнить callback через указанное количество тиков. Возвращает ID задачи |
run_every(ticks, callback) | int, function | int | Выполнять callback каждые N тиков. Возвращает ID задачи |
cancel_task(taskId) | int | nil | Отменить запланированную задачу |
context.log GLOBAL
Утилиты логирования для отладки скриптов.
| Method | Args | Returns | Description |
|---|
info(message) | string | nil | Записать информационное сообщение в лог |
warn(message) | string | nil | Записать предупреждение в лог |
error(message) | string | nil | Записать сообщение об ошибке/предупреждение в лог |
debug(message) | string | nil | Записать отладочное сообщение в лог (отображается как info с префиксом debug) |
context.zones GLOBAL
Создание и мониторинг зон. Доступно во всех типах скриптов.
Глобальный (Magmacore) вариант
| Method | Args | Returns | Description |
|---|
create_sphere(x, y, z, radius) | num, num, num, num | int | Создать сферическую зону, возвращает дескриптор |
create_cylinder(x, y, z, radius, height) | num, num, num, num, num | int | Создать цилиндрическую зону, возвращает дескриптор |
create_cuboid(x, y, z, xSize, ySize, zSize) | num, num, num, num, num, num | int | Создать кубоидную зону, возвращает дескриптор |
watch(handle, on_enter?, on_leave?) | int, function, function | bool | Начать отслеживание событий входа/выхода игроков для зоны |
unwatch(handle) | int | nil | Прекратить отслеживание зоны |
Вариант EliteMobs
| Method | Args | Returns | Description |
|---|
get_entities_in_zone(zone, options?) | zone table, table | table | Получить сущности внутри зоны. Параметры: filter, mode |
get_locations_in_zone(zone, options?) | zone table, table | table | Получить локации внутри зоны. Параметры: coverage, mode |
zone_contains(zone, location, mode?) | zone table, location, string?="full" | bool | Находится ли локация внутри зоны ("full" или "border") |
watch_zone(zone, callbacks, mode?) | zone table, table, string?="full" | int | Отслеживать зону на вход/выход. Callbacks: {on_enter = fn, on_leave = fn} |
context.event GLOBAL
Таблица данных события для хука, который вызвал текущее выполнение скрипта. Присутствует только во время хуков, управляемых событиями (не в on_tick).
Глобальный (Magmacore) вариант
| Field / Method | Type | Description |
|---|
is_cancelled | bool | Отменено ли событие в данный момент |
cancel() | method | Отменить событие |
uncancel() | method | Снять отмену события |
player | entity table | Игрок, участвующий в событии (если есть) |
Для таблицы событий EliteMobs (которая предоставляет величину урона, причины урона и т.д.) см. Таблица событий EliteMobs.
context.script ELITEMOBS
Мост к системе Elite Script в EliteMobs. Позволяет Lua-способностям использовать системы таргетинга, зон и относительных векторов на основе YAML через Lua-таблицы с теми же именами полей, что и в конфигурациях Elite Script YAML.
Методы
| Method | Args | Returns | Description |
|---|
target(spec) | table | target handle | Создать дескриптор цели из таблицы спецификации целей Elite Script |
zone(spec) | table | zone handle | Создать дескриптор зоны из таблицы спецификации зон Elite Script |
relative_vector(spec, location?, zone?) | table, location, zone handle | vector handle | Создать относительный вектор из спецификации вектора Elite Script |
damage(target, amount?, multiplier?) | target handle, double?=0, double?=1 | nil | Нанести урон всем сущностям в цели |
push(target, vector, additive?) | target handle, vector or vector handle, bool?=false | nil | Толкнуть целевые сущности с заданной скоростью |
set_facing(target, vector) | target handle, vector or vector handle | nil | Установить направление взгляда целевых сущностей |
spawn_particles(target, particles) | target handle, table or string | nil | Создать частицы в целевых локациях |
Target Handle
Возвращается методом context.script:target(spec). Таблица спецификации использует те же ключи, что и конфигурации целей Elite Script YAML (например, {targetType = "NEARBY_PLAYERS", range = 20}).
| Method | Args | Returns | Description |
|---|
entities() | — | table | Массив таблиц сущностей в цели |
locations() | — | table | Массив таблиц локаций в цели |
first_entity() | — | entity or nil | Первая сущность в цели |
first_location() | — | location or nil | Первая локация в цели |
Zone Handle
Возвращается методом context.script:zone(spec). Таблица спецификации использует те же ключи, что и конфигурации зон Elite Script YAML (например, {shape = "SPHERE", radius = 5, target = {targetType = "SELF"}}).
| Method | Args | Returns | Description |
|---|
full_target(coverage?) | number | target handle | Дескриптор цели для внутренних локаций зоны |
border_target(coverage?) | number | target handle | Дескриптор цели для локаций границы зоны |
full_locations(coverage?) | number | table | Массив внутренних локаций |
border_locations(coverage?) | number | table | Массив граничных локаций |
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). Таблица спецификации использует те же ключи, что и конфигурации относительных векторов Elite Script YAML.
| Method | Args | Returns | Description |
|---|
resolve() | — | vector | Вычислить вектор для текущего контекста |
context.world (EliteMobs) ELITEMOBS
Расширенная таблица мира для скриптов способностей EliteMobs. Добавляет спавн, специфичный для боссов, проверки блоков и эффекты поверх глобальной таблицы мира.
Запросы блоков
| Метод | Аргументы | Возвращает | Описание |
|---|
get_block_type_at_location(loc) | location | string или nil | Имя Material |
get_highest_block_y_at_location(loc) | location | int или nil | Наивысший Y блока |
get_blast_resistance_at_location(loc) | location | double | Значение устойчивости к взрыву |
is_air_at_location(loc) | location | bool | Блок является воздухом |
is_passable_at_location(loc) | location | bool | Блок проходим |
is_passthrough_at_location(loc) | location | bool | Блок не твёрдый |
is_on_floor_at_location(loc) | location | bool | Воздух с твёрдым блоком ниже |
is_standing_on_material(loc, material) | location, string (Material) | bool | Блок ниже соответствует материалу |
Манипуляции с блоками
| Метод | Аргументы | Возвращает | Описание |
|---|
set_block_at_location(loc, material, visual?) | location, string (Material), bool?=false | nil | Разместить блок. visual=true для фальшивого блока |
place_temporary_block_at_location(loc, material, ticks?, visual?) | location, string, int?=0, bool?=false | nil | Разместить блок, автоудаление после ticks |
Спавн
| Метод | Аргументы | Возвращает | Описание |
|---|
spawn_boss_at_location(file, loc?, level?) | string, location?=позиция босса, int?=уровень босса | entity или nil | Создать пользовательского босса |
spawn_custom_boss_at_location(file, loc, options?) | string, location, table | entity или nil | Создать босса с параметрами (level, silent, add_as_reinforcement, velocity) |
spawn_entity_at_location(type, loc, options?) | string (EntityType), location, table | entity | Создать ванильную сущность с параметрами (velocity, duration, effect, on_land, max_ticks) |
spawn_falling_block_at_location(loc, material, options?) | location, string (Material), table | entity | Создать падающий блок (drop_item, hurt_entities, velocity, on_land) |
spawn_reinforcement_at_location(file, loc, level?, velocity?) | string, location, int?=0, vector | entity или nil | Создать подкрепление, привязанное к боссу |
spawn_fireworks_at_location(loc, config) | location, table | entity или nil | Создать фейерверк |
spawn_splash_potion_at_location(loc, config) | location, table | entity или nil | Создать зелье-брызги |
Эффекты и утилиты
| Метод | Аргументы | Возвращает | Описание |
|---|
play_sound_at_location(loc, sound, volume?, pitch?) | location, string (Sound), float?=1, float?=1 | nil | Воспроизвести звук |
spawn_particle_at_location(loc, particle, count?) | location, string (Particle) или table, int?=1 | nil | Создать частицы |
strike_lightning_at_location(loc) | location | nil | Ударить молнией (обходит защиту EM) |
run_empowered_lightning_task_at_location(loc) | location | nil | Усиленный эффект молнии |
generate_fake_explosion(locations, center?) | таблица locations, location | nil | Визуальный взрыв без урона |
spawn_fake_gold_nugget_at_location(loc, velocity, gravity?) | location, vector, bool?=false | fake projectile | Создать визуальный снаряд золотого самородка |
run_fake_gold_nugget_damage(projectiles) | table | nil | Запустить проверку урона для фальшивых снарядов |
set_world_time(time) или (loc, time) | long, или location + long | nil | Установить время мира |
set_world_weather(weather, duration?) или (loc, weather, duration?) | string (CLEAR, RAIN, PRECIPITATION, THUNDER), int?=6000 | nil | Установить погоду |
run_console_command(command) | string | nil | Выполнить команду консоли |
generate_player_loot(level?) | int?=1 | nil | Сгенерировать добычу для атакующих |
drop_bonus_coins(multiplier?) | double?=2 | nil | Выбросить бонусные монеты у босса |
context.settings (EliteMobs)
| Метод | Аргументы | Возвращает | Описание |
|---|
warning_visual_effects_enabled() | — | bool | Включены ли предупреждающие визуальные эффекты в конфигурации |
Таблица событий EliteMobs
Таблица context.event передаётся в хуки урона и спавна. Поля зависят от типа события.
| Поле / Метод | Тип | Присутствует когда | Описание |
|---|
damage_amount | double | События урона | Необработанное количество урона |
damage_cause | string | События урона | Имя DamageCause |
damager | таблица entity | События урона от сущности | Сущность, нанёсшая урон |
projectile | таблица entity | События урона от снаряда | Снаряд, нанёсший урон |
spawn_reason | string | Событие спавна | Причина спавна |
entity | таблица entity | События смерти/зон | Связанная сущность |
cancel_event() | method | Большинство событий | Отменить событие |
set_damage_amount(amount) | method (double) | События урона | Переопределить количество урона |
multiply_damage_amount(multiplier) | method (double) | События урона | Умножить текущий урон |
context.item FMM
Доступен в скриптах предметов FMM. Определяет конкретный скриптовый предмет из экипированных слотов игрока по PDC-тегу.
Свойства
| Поле | Тип | Описание |
|---|
id | string | Идентификатор скрипта предмета |
Методы
| Метод | Аргументы | Возвращает | Описание |
|---|
material() | — | string | Имя Material |
get_amount() | — | int | Размер стака |
set_amount(n) | int | nil | Установить размер стака |
consume(n?) | int?=1 | nil | Уменьшить количество на n, удалить если ноль |
get_uses() | — | int | Счётчик использований в PDC |
set_uses(n) | int | nil | Установить счётчик использований в PDC |
get_durability() | — | table или nil | Возвращает поля current и max, или nil если нет полосы прочности |
get_durability_percentage() | — | number или nil | Оставшаяся доля 0.0--1.0, или nil |
use_durability(amount, can_break?) | int, bool?=false | nil | Уменьшить прочность на фиксированное количество. Если false, не ниже 1 |
use_durability_percentage(fraction, can_break?) | number, bool?=false | nil | Уменьшить прочность на долю от максимума (0.0--1.0) |
get_name() | — | string или nil | Отображаемое имя |
set_name(s) | string | nil | Установить отображаемое имя. Поддерживает цветовые коды |
get_lore() | — | table | Массив строк описания |
set_lore(table) | table | nil | Установить описание из массива строк |
context.prop FMM
Доступен в скриптах пропов FMM. Наследует все поля Сущности от базовой стойки для брони.
Свойства
| Поле | Тип | Описание |
|---|
model_id | string | Имя модели чертежа |
current_location | location | Текущая позиция пропа |
Методы
| Метод | Аргументы | Возвращает | Описание |
|---|
play_animation(name, blend?, loop?) | string, bool?=true, bool?=true | bool | Воспроизвести именованную анимацию |
stop_animation() | — | nil | Остановить все текущие анимации |
hurt_visual() | — | nil | Красная вспышка подсветки, без урона |
pickup() | — | nil | Удалить проп и выбросить предмет размещения |
has_mount_points() | — | bool | Есть ли у пропа кости точек крепления |
mount(player) | таблица entity | bool | Посадить игрока на первое доступное сиденье |
dismount(player) | таблица entity | bool | Снять игрока |
get_passengers() | — | table | Массив таблиц сущностей для посаженных игроков |
spawn_elitemobs_boss(file, x, y, z) | string, num, num, num | entity или nil | Создать босса EliteMobs (требуется EliteMobs) |
open_inventory(player, title, rows?) | таблица entity, string, int?=3 | bool | Открыть постоянный инвентарь сундука (1--6 рядов). Заголовок поддерживает цветовые коды |
place_book(player) | таблица entity | bool | Сохранить написанную книгу игрока на пропе |
read_book(player) | таблица entity | bool | Открыть сохранённую книгу для чтения |
take_book(player) | таблица entity | bool | Вернуть сохранённую книгу игроку |
has_book() | — | bool | Сохранена ли книга |
drop_inventory() | — | bool | Выбросить все сохранённые предметы и очистить |
drop_book() | — | bool | Выбросить сохранённую книгу и очистить |
is_viewing_inventory(player) | таблица entity | bool | Открыт ли у игрока инвентарь этого пропа |
set_persistent_data(key, value) | string, string | bool | Сохранить строку в PDC пропа |
get_persistent_data(key) | string | string или nil | Получить строку из PDC пропа |
Цветовые коды
Все методы, помеченные как поддерживающие цветовые коды, используют ChatColorConverter из Magmacore. Эти форматы можно свободно смешивать в любой строке:
Устаревшие коды
Используйте &, за которым следует символ цвета/формата:
| Код | Цвет | Код | Формат |
|---|
&0 | Чёрный | &l | Жирный |
&1 | Тёмно-синий | &m | Зачёркнутый |
&2 | Тёмно-зелёный | &n | Подчёркнутый |
&3 | Тёмно-голубой | &o | Курсив |
&4 | Тёмно-красный | &r | Сброс |
&5 | Тёмно-фиолетовый | | |
&6 | Золотой | | |
&7 | Серый | | |
&8 | Тёмно-серый | | |
&9 | Синий | | |
&a | Зелёный | | |
&b | Голубой | | |
&c | Красный | | |
&d | Светло-фиолетовый | | |
&e | Жёлтый | | |
&f | Белый | | |
Hex-цвета
Точный RGB-цвет с использованием 6-значного hex-кода:
&#FF5500 -- ampersand prefix
<#FF5500> -- tag syntax
Градиенты
Плавная интерполяция между двумя и более цветами по тексту:
<gradient:#FF0000:#0000FF>This text fades red to blue</gradient>
<g:#FF0000:#00FF00:#0000FF>Three-color gradient</g>
Краткая форма g работает идентично gradient. Можно использовать любое количество цветовых точек.
Радуга
Переход через весь спектр оттенков. Необязательная насыщенность (0--100):
<rainbow>Full rainbow text</rainbow>
<r:50>Pastel rainbow (50% saturation)</r>
Общие типы
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 -- valid entity table
context.world:get_nearby_entities(x,y,z,r) -- returns array of entity tables