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

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

Полный справочник методов 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

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

Свойства

ПолеТипОписание
uuidstringUUID сущности
entity_typestringТип сущности (нижний регистр)
is_validboolСущность всё ещё существует в мире
is_deadboolСущность мертва
is_playerboolЯвляется игроком
is_hostileboolЯвляется Monster
is_passiveboolЯвляется Animal
is_eliteboolЯвляется сущностью EliteMobs
is_custom_bossboolЯвляется пользовательским боссом EliteMobs
is_significant_bossboolПользовательский босс с множителем здоровья больше 1 (спроектированная встреча)
is_modeledboolИмеет модель FMM
is_propboolЯвляется пропом FMM
current_locationlocationПозиция сущности (x, y, z, yaw, pitch, world)
worldstringИмя мира

Методы

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

Мост: entity.elite

Присутствует только когда is_elite равно true. Заполняется через рефлексию — зависимость от EliteMobs не требуется.

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

Мост: entity.model

Присутствует только когда is_modeled равно true. Заполняется через рефлексию — зависимость от FMM не требуется.

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

Таблица живой сущности GLOBAL

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

Свойства

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

Методы

МетодАргументыВозвращаетОписание
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Удалить эффект зелья по имени

context.player GLOBAL

Таблица сущности игрока. Наследует все поля Сущности и Живой сущности.

Свойства

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

Методы

МетодАргументыВозвращаетОписание
send_message(text)stringnilОтправить сообщение в чат. Поддерживает цветовые коды
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 или nilRaycast для сущности, на которую смотрит игрок
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, intboolСбросить фальшивый блок к реальному
sleep(x, y, z)num, num, numnilАнимация сна в кровати по координатам
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, intnilПоказать экран заголовка. Поддерживает цветовые коды

context.world GLOBAL

Операции с миром. Доступны во всех типах скриптов.

Свойства

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

Методы

МетодАргументыВозвращаетОписание
get_block_at(x, y, z)int, int, intstringИмя Material (нижний регистр)
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Создать ванильную сущность
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Разместить блок, автоматически возвращающийся после ticks
drop_item(x, y, z, material, amount?)num, num, num, string (Material), int?=1entityВыбросить сущность предмета естественным образом в местоположении
spawn_firework(x, y, z, colors, type?, power?)num, num, num, table, string (FireworkEffect.Type)?=BALL, int?=1nilСоздать фейерверк

context.boss ELITEMOBS

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

Свойства

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

Методы

МетодАргументыВозвращаетОписание
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Добавить тег, автоудаление после ticks если задано
remove_tag(tag)stringnilУдалить тег
has_tag(tag)stringboolПроверить тег
reset_custom_name()nilСбросить имя к значению по умолчанию из конфигурации
play_sound_at_self(sound, volume?, pitch?)string (Sound), float?=1, float?=1nilВоспроизвести звук у босса
play_sound_at_entity(sound, volume?, pitch?)string (Sound), float?=1, float?=1nilВоспроизвести звук у босса (алиас)
spawn_particle_at_self(particle, count?)string (Particle) или table, int?=1nilСоздать частицы у босса
play_model_animation(name)stringnilВоспроизвести анимацию модели FMM (требуется модель FMM)
navigate_to_location(location, speed?, force?, timeout?)location, double?=1, bool?=false, int?=0nilПеремещение к местоположению через pathfinding
send_message(text, range?)string, double?=20nilОтправить сообщение ближайшим игрокам. Поддерживает цветовые коды
get_nearby_players(range)doubletableМассив таблиц игроков в радиусе
get_target_player()player или nilТекущая цель моба, если это игрок
get_nearby_players_in_zone(zone)таблица zonetableИгроки внутри формы зоны
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?=0entity или nilСоздать босса-подкрепление
summon_projectile(type, origin, dest, speed?, options?)string (EntityType), location, location, double?=1, tableentityСоздать отслеживаемый снаряд

Параметры summon_projectile

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

Методы зон/частиц

МетодАргументыВозвращаетОписание
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Создать направленный массив частиц

Поддержка специальных способностей

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

Таблица живой сущности EliteMobs ELITEMOBS

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

Свойства

ПолеТипОписание
namestringОтображаемое имя сущности
uuidstringUUID сущности
entity_typestringИмя типа сущности
is_playerboolЯвляется игроком
is_monsterboolЯвляется Monster
is_eliteboolЯвляется сущностью EliteMobs
is_validboolСущность всё ещё существует
healthdoubleТекущее здоровье (снимок)
maximum_healthdoubleМаксимальное здоровье (снимок)
current_locationlocationПозиция сущности (снимок)
game_modestringРежим игры (только для игроков)

Методы

МетодАргументыВозвращаетОписание
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 (Sound), float?=1, float?=1nilВоспроизвести звук у сущности
play_sound_at_self(sound, volume?, pitch?)string (Sound), float?=1, float?=1nilВоспроизвести звук у сущности (алиас)
spawn_particle_at_self(particle, count?)string (Particle) или 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 или locationnilПовернуться в направлении или к местоположению
play_model_animation(name)stringnilВоспроизвести анимацию модели FMM (требуется модель FMM)
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Перемещение к местоположению через pathfinding (только CustomBossEntity)
add_tag(tag, ticks?)string, int?=0nilДобавить тег, автоудаление после ticks
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?, visual?)string (Material), int?=0, bool?=falsenilРазместить временный блок в позиции сущности

Параметры set_equipment

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

Методы игроков EliteMobs

Игроки в скриптах 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

Неживые сущности (снаряды, падающие блоки, фейерверки), возвращаемые методами спавна 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

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

МетодАргументыВозвращаетОписание
current_target()player или nilУчастник события, если игрок, или текущая цель моба босса, если игрок
nearby_players(radius)doubletableМассив таблиц игроков в радиусе от босса
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, tablevectorВектор от источника к цели. Параметры могут изменять результат
rotate_vector(vector, pitch?, yaw?)vector, double?=0, double?=0vectorПовернуть вектор на pitch и yaw (градусы)
normalize_vector(vector)vectorvectorНормализовать до единичной длины

context.cooldowns GLOBAL

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

MethodArgsReturnsDescription
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Установить локальную перезарядку на указанное количество тиков
global_ready()boolИстекла ли глобальная перезарядка
set_global(duration)longnilУстановить глобальную перезарядку на указанное количество тиков

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


context.scheduler GLOBAL

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

Глобальный (Magmacore) вариант

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

Вариант EliteMobs

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

context.log GLOBAL

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

MethodArgsReturnsDescription
info(message)stringnilЗаписать информационное сообщение в лог
warn(message)stringnilЗаписать предупреждение в лог
error(message)stringnilЗаписать сообщение об ошибке/предупреждение в лог
debug(message)stringnilЗаписать отладочное сообщение в лог (отображается как info с префиксом debug)

context.zones GLOBAL

Создание и мониторинг зон. Доступно во всех типах скриптов.

Глобальный (Magmacore) вариант

MethodArgsReturnsDescription
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, functionboolНачать отслеживание событий входа/выхода игроков для зоны
unwatch(handle)intnilПрекратить отслеживание зоны

Вариант EliteMobs

MethodArgsReturnsDescription
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, mode?)zone table, table, string?="full"intОтслеживать зону на вход/выход. Callbacks: {on_enter = fn, on_leave = fn}

context.event GLOBAL

Таблица данных события для хука, который вызвал текущее выполнение скрипта. Присутствует только во время хуков, управляемых событиями (не в on_tick).

Глобальный (Magmacore) вариант

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

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


context.script ELITEMOBS

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

Методы

MethodArgsReturnsDescription
target(spec)tabletarget handleСоздать дескриптор цели из таблицы спецификации целей Elite Script
zone(spec)tablezone handleСоздать дескриптор зоны из таблицы спецификации зон Elite Script
relative_vector(spec, location?, zone?)table, location, zone handlevector handleСоздать относительный вектор из спецификации вектора 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). Таблица спецификации использует те же ключи, что и конфигурации целей Elite Script YAML (например, {targetType = "NEARBY_PLAYERS", range = 20}).

MethodArgsReturnsDescription
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"}}).

MethodArgsReturnsDescription
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). Таблица спецификации использует те же ключи, что и конфигурации относительных векторов Elite Script YAML.

MethodArgsReturnsDescription
resolve()vectorВычислить вектор для текущего контекста

context.world (EliteMobs) ELITEMOBS

Расширенная таблица мира для скриптов способностей EliteMobs. Добавляет спавн, специфичный для боссов, проверки блоков и эффекты поверх глобальной таблицы мира.

Запросы блоков

МетодАргументыВозвращаетОписание
get_block_type_at_location(loc)locationstring или nilИмя Material
get_highest_block_y_at_location(loc)locationint или nilНаивысший Y блока
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Блок ниже соответствует материалу

Манипуляции с блоками

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

Спавн

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

Эффекты и утилиты

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

context.settings (EliteMobs)

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

Таблица событий EliteMobs

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

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

context.item FMM

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

Свойства

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

Методы

МетодАргументыВозвращаетОписание
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 или nilВозвращает поля current и max, или nil если нет полосы прочности
get_durability_percentage()number или 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 или nilОтображаемое имя
set_name(s)stringnilУстановить отображаемое имя. Поддерживает цветовые коды
get_lore()tableМассив строк описания
set_lore(table)tablenilУстановить описание из массива строк

context.prop FMM

Доступен в скриптах пропов FMM. Наследует все поля Сущности от базовой стойки для брони.

Свойства

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

Методы

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