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

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

Этот справочник описывает таблицы Lua и контексты MagmaCore, FreeMinecraftModels и EliteMobs. Общие таблицы и таблицы сил боссов EliteMobs имеют разные контракты. Используйте раздел для своего типа скрипта.

Большинство методов таблиц принимают и table.method(...), и table:method(...). Глобальные функции em.create_*, em.zone.create_* и em.location.* требуют точки, как и указанные ниже методы изменения урона события босса. Актуальные поля общих таблиц вычисляются при чтении. Прочитайте поле снова, чтобы обновить значение, и не присваивайте ему значение: это перекроет вычисление. Сохранённая в переменной локация или другой снимок сама не обновляется.

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

Таблица Entity​

Таблица сущности MagmaCore — это основа для обобщённых значений сущностей; таблицы Living Entity, Player и пропа FreeMinecraftModels наследуют её.

Свойства​

ПолеТипОписание
uuidstringUUID сущности.
entity_typestringТип сущности Bukkit в нижнем регистре.
is_validboolАктуальное значение валидности.
is_deadboolАктуальное состояние смерти.
current_locationtable/nilАктуальная локация {x, y, z, yaw, pitch, world}.
worldstring/nilАктуальное имя мира.
is_playerboolЯвляется ли сущность игроком.
is_hostileboolРеализует ли сущность Bukkit Monster.
is_passiveboolРеализует ли сущность Bukkit Animals.
is_on_groundboolАктуальное состояние нахождения на земле.
is_flyingboolАктуальное состояние полёта игрока; false для других сущностей.
in_blockboolАктуальное состояние застрявшей в блоке стрелы.
attachment_locationtable/nilЦентр блока, содержащего текущую локацию застрявшей стрелы; nil, если стрела не в блоке.
attachment_blocktable/nilЦентр блока, в который фактически попала стрела, принадлежащая активному действию зачарования. Возвращает nil без действительного записанного попадания, а также после того как стрела сдвинулась, сменила мир или её действие завершилось. Определяет поражённый блок, но не даёт безопасной для столкновений точки перемещения.

Методы​

МетодАргументыВозвращаетОписание
teleport(location)tablenilТелепортировать к таблице локации.
remove()—nilУдалить сущность, если она ещё валидна.
set_silent(enabled)boolnilЗадать состояние беззвучности.
set_invulnerable(enabled)boolnilЗадать состояние неуязвимости.
set_gravity(enabled)boolnilЗадать состояние гравитации.
set_glowing(enabled)boolnilЗадать состояние свечения.
set_velocity(x, y, z)number, number, numbernilЗаменить скорость; компоненты должны быть конечными.
set_fall_distance(distance)numbernilЗадать конечное неотрицательное расстояние падения.
set_shooter(uuid)stringboolТолько для снаряда: назначить найденную сущность, реализующую Bukkit ProjectileSource, источником выстрела.
set_direction(x, y, z)number, number, numbernilТолько для огненного шара: задать конечное ненулевое направление полёта.
set_pickup(status)stringnilТолько для стрелы: ALLOWED, DISALLOWED или CREATIVE_ONLY.
can_receive_hostile_effect(actor_uuid)stringboolПроверить, может ли цель получить враждебный эффект от подключённого игрока. Интеграции могут добавлять ограничения боя.
has_clear_movement_path(location)tableboolПроверить путь в том же мире на столкновения, границы мира и загруженность чанков. Для сущностей, не являющихся игроками, также отклоняются защищённые регионы. Сущность не перемещается.
movement_path_status(location)tablestringВернуть clear, blocked, protected или unavailable; protected применяется к сущностям, не являющимся игроками. Проверка столкновений учитывает объём сущности на всём пути.

Свободный путь для игрока не разрешает вход или бой. Фактическое перемещение по-прежнему подчиняется обработчикам движения, включая ограничения входа в регионы; одна лишь защита строительства не запрещает игрокам перемещаться.

Общие аргументы локаций требуют x, y и z. При отсутствии мира используется мир сущности; неизвестное имя мира тоже сохраняет этот запасной вариант. Отдельные запросы em.location.* требуют загруженный мир и принимают отсутствующие координаты за ноль. Прямая телепортация, изменение скорости и урон автоматически не вызывают проверку пути или can_receive_hostile_effect.

can_receive_hostile_effect требует валидного подключённого игрока и валидную живую цель в том же мире, которая не является игроком. Проверка отвергает стойки для брони, неуязвимые сущности, сущности с тегом NPC и приручённых животных. EliteMobs может добавлять ограничения допуска к бою. Некорректные строки UUID в set_shooter и set_owner, а также неизвестные значения перечисления в set_pickup могут вызвать ошибку.

Таблица Entity: обогащение EliteMobs​

EliteMobs добавляет эти значения в общие таблицы сущностей. Флаги отслеживания и наличие elite определяются при создании таблицы; только явно отмеченные актуальные поля обновляются при чтении. Необязательный адаптер EliteMobs в FreeMinecraftModels добавляет данные элиты, но не elite_player.

Свойства​

ПолеТипОписание
is_eliteboolОтслеживал ли EliteMobs сущность при создании таблицы.
is_custom_bossboolЯвляется ли отслеживаемый элита кастомным боссом.
is_significant_bossboolЯвляется ли он кастомным боссом с множителем здоровья выше 1.
elitetable/nilВложенные данные EliteMobs, присутствуют только для распознанного элиты.
elite.levelintСнимок уровня элиты.
elite.namestring/nilСнимок отображаемого имени элиты.
elite.healthnumberАктуальное здоровье.
elite.max_healthnumberАктуальное максимальное здоровье.
elite.is_custom_bossboolЯвляется ли элита кастомным боссом.
elite.health_multipliernumberСнимок настроенного множителя здоровья.
elite.damage_multipliernumberСнимок настроенного множителя урона.
elite_playertable/nilТаблица только для игрока; вычисляется при чтении, если существуют данные игрока EliteMobs.
elite_player.tiernumberБоевой ранг игрока, вычисленный по опыту навыков без обновления запросов зачарований.

Методы​

МетодАргументыВозвращаетОписание
elite.remove()—nilУдалить элиту через конвейер удаления EliteMobs.

Таблица Entity: обогащение FreeMinecraftModels​

FreeMinecraftModels добавляет эти снимки значений; model существует, только если при создании таблицы is_modeled равно true. Значения только для игроков появляются лишь в их таблицах. Методы моделей и проверки прав обращаются к исходным объектам при вызове. В скриптах EliteMobs необязательный адаптер FreeMinecraftModels из EliteMobs добавляет is_modeled, is_prop и model, но не is_op и has_permission.

Свойства​

ПолеТипОписание
is_modeledboolРаспознаёт ли FreeMinecraftModels сущность с моделью.
is_propboolЯвляется ли сущность пропом FreeMinecraftModels на основе стойки для брони.
modeltable/nilВложенные данные модели, присутствуют только для сущности с моделью.
model.model_idstring/nilИдентификатор чертежа модели.
model.is_dynamicboolЯвляется ли сущность с моделью динамической.
is_opboolСнимок состояния оператора сервера, только для игроков.

Методы​

МетодАргументыВозвращаетОписание
model.play_animation(name, blend?=false, loop?=false)string, bool?=false, bool?=falseboolЗапросить анимацию. True означает принятие, в том числе постановку в очередь или подавление атаки, а не начало воспроизведения. Терминальная анимация смерти отклоняет новые запросы.
model.stop_animations()—nilОчистить текущие и ожидающие анимации, вернувшись к idle, если не зафиксирована терминальная смерть.
model.remove()—nilУдалить сущность с моделью.
has_permission(node)stringboolПроверка права, только для игроков.

Таблица Living Entity​

Таблица живой сущности MagmaCore наследует все свойства и методы таблицы Entity.

Свойства​

ПолеТипОписание
healthnumberАктуальное здоровье.
maximum_healthnumberАктуальное максимальное здоровье.
namestring/nilАктуальное имя сущности Bukkit.
is_aliveboolАктуальная инверсия состояния смерти Bukkit.

Методы​

МетодАргументыВозвращаетОписание
damage(amount)numbernilНанести урон Bukkit.
push(x, y, z)number, number, numbernilНемедленно добавить вектор к текущей скорости.
set_facing(x, y, z)number, number, numbernilТелепортировать на месте, задав направление взгляда.
add_potion_effect(type, duration, amplifier)string (PotionEffectType), int, intnilДобавить эффект зелья, если тип распознан.
remove_potion_effect(type)string (PotionEffectType)nilУбрать эффект зелья, если тип распознан.
get_scale()—numberВернуть итоговый атрибут масштаба с модификаторами или 1.0, если он недоступен.
set_scale(value)numbernilЗадать базовое значение атрибута масштаба, если сервер это поддерживает.
set_ai(enabled)boolnilВключить или отключить ИИ живой сущности.
set_owner(player_uuid)stringboolПриручить поддерживаемую сущность для подключённого игрока; также сбросить агрессию волка. False для неподдерживаемой сущности или недоступного игрока.
has_potion_effect(type)stringboolПроверить эффект по имени Bukkit; false, если имя не распознано.

Таблица Player​

Таблица игрока MagmaCore наследует все свойства и методы таблицы Living Entity.

В скриптах FMM таблица игрока также предоставляет is_holding_elitemobs_item(filename). Метод проверяет тег имени файла EliteMobs у предмета в основной руке независимо от отображаемого имени и перевода. Он возвращает false для пустой руки, другого предмета или недоступной интеграции EliteMobs. Передавайте имя файла с .yml, например player:is_holding_elitemobs_item("shroomwhispers_shears.yml").

Свойства​

ПолеТипОписание
game_modestringСнимок игрового режима Bukkit в нижнем регистре.

Методы​

МетодАргументыВозвращаетОписание
send_message(text)stringnilОтправить текст, обработанный парсером цветов MagmaCore.
chat(text)stringnilОтправить чат через Bukkit, включая выполнение команд с начальным слешем от имени игрока. Текст проходит обработку цветов.
get_held_item()—table/nilВернуть снимок {type, amount, display_name} основной руки или nil для пустой руки. type в верхнем регистре; безымянный предмет использует имя материала как отображаемое имя.
consume_held_item(amount?=1)int?=1nilПоставить в очередь уменьшение того стака, который будет в основной руке при выполнении. Проверенный предмет не сохраняется, результат оплаты не возвращается. Передавайте положительное число; отрицательное не отвергается.
has_item(material, amount?=1)string (Material), int?=1boolПроверить, содержит ли инвентарь запрошенное количество.
get_target_entity(range?=50)number?=50table/nilПровести луч от глаз по блокам и сущностям, исключая игрока; размер луча для сущностей 0.5. Жидкости и проходимые блоки игнорируются.
get_eye_location()—tableВернуть локацию глаз.
get_look_direction()—tableВернуть единичное направление {x, y, z}.
send_block_change(x, y, z, material, ticks?=-1)int, int, int, string (Material), int?=-1boolПоставить в очередь блок только для клиента и сброс после положительного числа тиков. Некорректный или неблочный материал возвращает false; true означает постановку в очередь.
reset_block(x, y, z)int, int, intboolПоставить в очередь восстановление реального блока для этого игрока.
sleep(x, y, z)number, number, numbernilПоставить в очередь установку настоящей белой кровати и попытку сна. После пробуждения или отключения восстановить исходный BlockData, но не содержимое блочной сущности.
wake_up()—nilПоставить в очередь пробуждение спящего игрока.
show_boss_bar(text, color?=WHITE, progress, ticks?=-1)string, string (BarColor)?=WHITE, number, int?=-1nilЗаменить сплошную полосу босса, ограничить progress диапазоном 0..1, заменить неверный цвет на WHITE и скрыть после положительного числа тиков. Передайте nil вместо цвета, чтобы указать обязательный progress третьим аргументом.
hide_boss_bar()—nilУбрать активную Lua-полосу босса игрока.
show_action_bar(text, ticks?=-1)string, int?=-1nilОтправить один раз или повторять каждые 40 тиков до конца положительной длительности.
show_title(title, subtitle?="", fade_in, stay, fade_out)string, string?="", int, int, intnilПоказать заголовок с обработкой цветов в заголовке и подзаголовке.

Общие полосы принадлежат игроку в пределах копии MagmaCore плагина и не изолированы по скриптам: новый show_boss_bar заменяет текущую полосу игрока, а новый show_action_bar отменяет текущий повтор панели действий. Таймер истечения убирает только ту полосу или панель действий, которая его запустила, поэтому старый таймер больше не убирает более новую. Эти таймеры и изменения блоков в очереди не принадлежат context.scheduler. Изменение и сброс блока читают мир игрока при выполнении задачи; не рассчитывайте на восстановление нужного блока после смены мира. Проверка завершения сна впервые выполняется через 20 тиков, затем каждые 10 тиков.

Таблица World​

Таблица мира MagmaCore доступна как context.world и сохраняет мир при создании. Силы боссов наследуют её с описанными ниже переопределениями. Поиск ближайших сущностей возвращает массивы с индексом от единицы и использует параллелепипеды по осям мира с radius в качестве каждого полуразмера. Владелец скрипта и игровые режимы не отфильтровываются.

Свойства​

ПолеТипОписание
namestringСнимок имени мира.

Методы​

МетодАргументыВозвращаетОписание
get_block_at(x, y, z)int, int, intstringВернуть имя Material в нижнем регистре или air, не подгружая незагруженный чанк.
set_block_at(x, y, z, material)int, int, int, string (Material)boolПоставить размещение блока в очередь; некорректные материалы возвращают false, а незагруженные чанки пропускаются задачей из очереди.
get_highest_block_y(x, z)int, intintВернуть наибольшую координату Y блока.
spawn_particle(particle, x, y, z, count?=1, dx?=0, dy?=0, dz?=0, speed?=0)string (Particle), number, number, number, int?=1, number?=0, number?=0, number?=0, number?=0nilСоздать частицу; некорректные имена ничего не делают.
play_sound(sound, x, y, z, volume?=1, pitch?=1)string (Sound), number, number, number, number?=1, number?=1nilВоспроизвести зарегистрированный звук или ключ звука ресурс-пака с пространством имён в нижнем регистре.
strike_lightning(x, y, z)number, number, numbernilУдарить молнией.
get_time()—intВернуть время мира в тиках.
set_time(ticks)intnilЗадать время мира.
get_nearby_entities(x, y, z, radius)number, number, number, numbertableВернуть ближайшие таблицы Entity или Living Entity.
get_nearby_players(x, y, z, radius)number, number, number, numbertableВернуть ближайшие таблицы Player.
spawn_entity(type, x, y, z)string (EntityType), number, number, numbertable/nilСоздать ванильную сущность. Неизвестное имя перечисления возвращает nil; допустимый, но несоздаваемый тип может вызвать ошибку.
raycast(from_x, from_y, from_z, dir_x, dir_y, dir_z, max_distance?=50, fluid_mode?=NEVER, blocks_only?=false, loaded_only?=false)шесть чисел, number?, string?, bool?, bool?table/nilВернуть hit_entity, hit_location и hit_block. Режимы жидкости: NEVER, SOURCE_ONLY, ALWAYS. С loaded_only незагруженный чанк в охватывающем луч прямоугольнике приводит к nil.
place_temporary_block(x, y, z, material, ticks?=0, require_air?=false)int, int, int, string (Material), int?=0, bool?=falseboolРазместить временный блок; некорректные материалы или незагруженные чанки возвращают false.
drop_item(x, y, z, material, amount?=1)number, number, number, string (Material), int?=1table/nilВыбросить предмет естественным образом и вернуть его таблицу Entity; некорректные материалы возвращают nil.
spawn_firework(x, y, z, colors, type?=BALL, power?=1)number, number, number, table, string (FireworkEffect.Type)?=BALL, int?=1nilПоставить фейерверк в очередь, используя имена констант Bukkit Color; если ни одна не распознана, по умолчанию белый.
strike_lightning_at_location(location)tablenilУдарить молнией в мире из таблицы локации.
play_sound_at_location(location, sound, volume?=1, pitch?=1)table, string (Sound), number?=1, number?=1nilВоспроизвести зарегистрированный звук или ключ звука ресурс-пака с пространством имён в нижнем регистре.
spawn_particle_at_location(location, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0)table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0nilСоздать частицу через эту таблицу мира. Локация должна быть в том же мире.
get_block_at_location(location)tablestringВернуть имя материала в нижнем регистре или air для некорректной локации либо незагруженного чанка.
set_block_at_location(location, material)table, string (Material)boolПоставить в очередь размещение блока в мире из таблицы локации.
place_temporary_block_at_location(location, material, ticks?=0, require_air?=false)table, string (Material), int?=0, bool?=falseboolРазместить временный блок в мире из таблицы локации.
get_highest_block_y_at_location(location)tableint/nilВернуть наибольшую координату Y блока или nil для некорректной локации.
terrain_impact_at_location(location, options?)table, table?table/nilПоказать временный визуальный эффект удара по земле. Параметры: radius=4.5 (0.5–6), intensity=1 (0–1), duration_ticks=35 (1–200), view_range=48 (1–96), seed. Возвращает дескриптор или nil.
terrain_impact(x, y, z, options?)number, number, number, table?table/nilПоказать тот же визуальный эффект по координатам в этом мире.
impact.is_active()—boolПроверить, активен ли эффект; impact.id содержит его строковый идентификатор.
impact.remove()—boolУдалить активный эффект; false, если он уже неактивен или удаление не удалось.
get_entity(uuid)stringtable/nilНайти валидную сущность в реестре загруженных сущностей этого мира. Передавайте корректную строку UUID.
block_is_passable(x, y, z)int, int, intbool/nilВернуть проходимость блока или nil для незагруженного чанка либо координат за пределами высоты мира.
location_is_protected(location)tableboolЗапросить зарегистрированных поставщиков защиты; отсутствующий мир заменяется миром этой таблицы.
spawn_dust(location, count, red, green, blue)table, int, int, int, intnilСоздать DUST фиксированного размера с RGB 0–255 и разбросом 0.1 по каждой оси. Незагруженные чанки пропускаются. Локация должна быть в этом мире.

Без попадания raycast возвращает пустую таблицу с nil в полях попадания. Блок представлен как hit_block = {x, y, z, material}, материал в нижнем регистре. Совмещённый луч использует размер 0.5 для сущностей без их фильтрации. loaded_only=true проверяет весь охватывающий прямоугольник и может отказать из-за чанка, не лежащего прямо на луче. Неверный режим жидкости вызывает ошибку.

Имена общих частиц переводятся в верхний регистр. Эти позиционные методы не принимают данные частицы, поэтому частица с обязательными данными может вызвать ошибку. Для RGB-пыли используйте spawn_dust. Запросы верхнего блока и методы создания не имеют общей проверки загруженности чанка. Размещение блоков автоматически не проверяет защиту регионов. Результат true не доказывает выполнение изменения из очереди или успешную проверку require_air.

Временные блоки с положительной длительностью сохраняют исходный BlockData и восстанавливают его по окончании таймера, при выгрузке чанка или мира либо при выключении плагина. Восстановление происходит, только если на месте всё ещё стоит временный блок, поэтому более позднее изменение не перезаписывается. Повторная установка временного блока там, где он уже стоит, перезапускает таймер и сохраняет первый сохранённый оригинал. Блоки с блочными сущностями, например сундуки и таблички, незагруженные чанки и блоки, уже удерживаемые другим владельцем временных блоков, пропускаются. Разрушение временного блока ничего не выбрасывает и прекращает учёт без восстановления; установка блока на это место также прекращает учёт. При неположительной длительности блок ставится навсегда без учёта. Это не система отката изменений отдельного скрипта.

Общие дополнения мира EliteMobs​

EliteMobs регистрирует эти методы в общих таблицах мира, в том числе для NPC. Целевой чанк должен быть загружен. Общий spawn_boss_at_location требует локацию и уровень; силы боссов переопределяют его вариантом с необязательными аргументами, указанным ниже.

МетодАргументыВозвращаетОписание
lightning_effect_at_location(location)tablenilПоказать молнию без обычного урона, используя обход появления молнии EliteMobs.
spawn_npc_at_location(file, location)string, tabletable/nilСоздать настроенного NPC и вернуть дескриптор с remove() или nil, если создание невозможно.
spawn_boss_at_location(file, location, level)string, table, inttable/nilСоздать настроенного кастомного босса и вернуть общую таблицу Living Entity или nil, если он недоступен.

context.world: дополнения FreeMinecraftModels​

FreeMinecraftModels регистрирует эти методы в собственной таблице мира MagmaCore для скриптов пропсов. Каждый метод возвращает false, если EliteMobs не включён или игрок не распознан. Методы добычи используют локацию игрока, если переданная локация отсутствует или непригодна.

Методы​

МетодАргументыВозвращаетОписание
start_elitemobs_transport(player, route_id)player, stringboolЗапустить сохранённый маршрут транспорта EliteMobs для игрока в том же мире; false, если игрок или интеграция недоступны.
drop_elitemobs_procedural_loot(player, level, location?)table/string, int, table?boolВыбросить один процедурно сгенерированный предмет EliteMobs для игрока; возвращает false, если выпадение процедурных предметов отключено.
drop_elitemobs_random_loot(player, level, location?)table/string, int, table?boolПрокрутить таблицы добычи EliteMobs для игрока на заданном уровне.
drop_elitemobs_custom_loot(player, file, level, location?)table/string, string, int, table?boolВыбросить конкретный файл кастомного предмета EliteMobs для игрока; возвращает false, если файл не распознан.

Аргумент player принимает таблицу игрока, строку UUID или точное имя игрока. Аргумент location принимает таблицу локации либо таблицу сущности, содержащую current_location. Процедурная добыча учитывает настройку прямой выдачи в инвентарь EliteMobs, включая выбрасывание излишков у игрока. Она не всегда появляется в запрошенной локации.

Вспомогательная таблица em​

MagmaCore предоставляет эту таблицу глобально до запуска хуков. Конструкторы создают только данные: они не регистрируют наблюдение, не загружают мир и не проверяют полную фигуру. Глобальные функции вызываются через точку. Методы возвращённых локаций и зон также принимают двоеточие, изменяют свою таблицу и возвращают её же. Сеттеры зон сохраняют ссылку на переданную таблицу локации.

Свойства​

Конструкторы-помощники возвращают приведённые ниже компактные таблицы данных.

ПолеТипОписание
location.xnumberКоордината X, возвращаемая em.create_location.
location.ynumberКоордината Y, возвращаемая em.create_location.
location.znumberКоордината Z, возвращаемая em.create_location.
location.worldstring/nilИмя мира, если оно передано в em.create_location.
location.yawnumber/nilYaw, если он передан в em.create_location.
location.pitchnumber/nilPitch, если он передан в em.create_location.
vector.xnumberКомпонента X, возвращаемая em.create_vector.
vector.ynumberКомпонента Y, возвращаемая em.create_vector.
vector.znumberКомпонента Z, возвращаемая em.create_vector.
zone.kindstringsphere, dome, cylinder, cuboid, cone, static_ray, rotating_ray или translating_ray.
zone.radiusnumber/nilРадиус сферы, купола, цилиндра или конуса.
zone.heightnumber/nilВысота цилиндра.
zone.xnumber/nilРазмер кубоида по X.
zone.ynumber/nilРазмер кубоида по Y.
zone.znumber/nilРазмер кубоида по Z.
zone.lengthnumber/nilДлина конуса или луча.
zone.thicknessnumber/nilТолщина статического луча.
zone.point_radiusnumber/nilРадиус точки вращающегося или перемещающегося луча.
zone.animation_durationnumber/nilДлительность анимации вращающегося или перемещающегося луча.
zone.origintable/nilЛокация, заданная через set_center или set_origin.
zone.destinationtable/nilЛокация, заданная через set_destination.

Методы​

МетодАргументыВозвращаетОписание
em.create_location(x, y, z, world?, yaw?, pitch?)number, number, number, string?, number?, number?tableВернуть таблицу локации.
em.create_vector(x, y, z)number, number, numbertableВернуть таблицу вектора {x, y, z}.
location.add(dx?=0, dy?=0, dz?=0)number?=0, number?=0, number?=0tableПрибавить на месте и вернуть ту же таблицу локации.
em.zone.create_sphere_zone(radius)numbertableВернуть определение сферы с set_center(location).
em.zone.create_dome_zone(radius)numbertableВернуть определение купола с set_center(location).
em.zone.create_cylinder_zone(radius, height)number, numbertableВернуть определение цилиндра с set_center(location).
em.zone.create_cuboid_zone(x, y, z)number, number, numbertableВернуть определение кубоида с set_center(location).
em.zone.create_cone_zone(length, radius)number, numbertableВернуть определение конуса с set_origin(location) и set_destination(location).
em.zone.create_static_ray_zone(length, thickness)number, numbertableВернуть определение статического луча с сеттерами origin и destination.
em.zone.create_rotating_ray_zone(length, point_radius, animation_duration)number, number, numbertableВернуть определение вращающегося луча с сеттерами origin и destination.
em.zone.create_translating_ray_zone(length, point_radius, animation_duration)number, number, numbertableВернуть определение перемещающегося луча с сеттерами origin и destination.
zone.set_center(location)tabletableЗадать центр как zone.origin и вернуть ту же таблицу зоны.
zone.set_origin(location)tabletableЗадать origin и вернуть ту же таблицу зоны.
zone.set_destination(location)tabletableЗадать destination и вернуть ту же таблицу зоны.
em.location.is_in_dungeon(location)tableboolПроверить зарегистрированные регионы подземелий и владельцев, сообщающих о типе dungeon.
em.location.is_protected(location)tableboolПроверить встроенные адаптеры WorldGuard/GriefPrevention и зарегистрированных плагинами владельцев защиты.
em.location.owned_by(location, namespace)table, stringboolПроверить владение по пространству имён плагина.
em.location.owners(location)tabletableВернуть массив строк с пространствами имён владельцев.
em.location.kinds_at(location)tabletableВернуть массив строк с типами владения.
em.location.has_kind(location, kind)table, stringboolПроверить тип владения.

В em.location.* поле world должно быть именем загруженного мира или таблицей с name; подстановки мира владельца нет. Отсутствующий или неизвестный мир даёт false либо пустой массив, отсутствующие координаты принимаются за ноль. Пространства имён владельцев чувствительны к регистру, теги типа владения нет. Само владение не означает подземелье или защиту. Запросы учитывают зарегистрированных поставщиков, а не любой установленный плагин защиты; сбой зарегистрированного адаптера регионов трактуется как наличие защиты. Порядок массивов владельцев и типов не гарантирован.

Контекст программы Mind​

Нативные коллбэки Mind используют этот контекст вместо обычного контекста силы или NPC. Программы поведения из файлов загружаются также из plugins/EliteMobs/behaviors/; см. настройку поведения босса. Интеграции EliteMobs регистрируют определения ai.program и ai.module через EliteMindService; размещение этих определений в обычном каталоге powers не регистрирует программу Mind.

ПолеТипОписание
tick, generationnumberТекущий игровой тик и поколение среды выполнения.
entitytableОбщая таблица живой сущности для актора.
memory, perception, actuator, actionstableПеречисленные ниже сервисы действуют в рамках текущего коллбэка.
МетодАргументыРезультатОписание
memory.get(key)stringvalue/nilПрочитать объявленный ключ памяти.
memory.set(key, value, ttl_ticks?)string, value, int?nilЗаписать объявленное значение памяти с настроенным типом и необязательным сроком действия.
memory.forget(key)stringnilУдалить объявленное значение памяти.
memory.contains(key)stringboolПроверить наличие объявленного значения памяти.
perception.current_target()—table/nilВернуть текущую цель в виде общей таблицы живой сущности.
perception.nearest_player(radius)numbertable/nilВернуть ближайшего игрока в пределах радиуса.
perception.can_see(entity_or_uuid)table/stringboolПроверить прямую видимость живой сущности.
perception.navigation()—tableВернуть destination_active, navigation_in_progress, consecutive_stuck_ticks, необязательное поле destination и необязательное поле last_progress с tick и position.
actuator.move_to(location, speed?=1)table, number?=1boolЗапросить перемещение к позиции в том же мире с конечной положительной скоростью; false, если поиск пути не начался.
actuator.stop_moving()—nilОстановить навигацию.
actuator.look_at(location)tablenilПосмотреть в сторону позиции.
actuator.jump()—nilЗапросить прыжок.
actuator.set_target(entity_or_uuid)table/stringboolНазначить живую цель; false, если сущность не найдена.
actuator.clear_target()—nilСбросить цель.
actuator.attack(entity_or_uuid)table/stringboolЗапросить атаку; false, если цель не найдена.
actuator.stop_all()—nilОстановить движение, цель и атаку, которые покрывают удерживаемые этим поведением элементы управления.
actions.request(identifier, payload?)string, table?stringЗапросить семантическое действие и вернуть результат в нижнем регистре. Данные поддерживают скаляры, таблицы UUID сущностей и таблицы позиций world/x/y/z.

Каждый коллбэк создаёт разделы сервисов при первом обращении и повторно использует их в пределах этого коллбэка. Ключи памяти должны быть объявлены; обращение к необъявленным ключам вызывает ошибку. Успешный результат actuator.set_target или actuator.attack означает, что живая цель найдена и запрос передан, а не что навигация или атака завершились. Данные действия поддерживают указанные скалярные значения и значения сущностей/позиций, но не произвольные вложенные таблицы Lua. Идентификаторы действий должны быть ключами с пространством имён в нижнем регистре длиной не более 128 символов; данные содержат не более 16 записей с ключами в нижнем регистре длиной не более 64 символов, а строковые значения ограничены 256 символами. Каждый метод исполнительного механизма, кроме stop_all, а также actions.request вызывают ошибку, если вызывающее поведение не удерживает соответствующий элемент управления. Сенсоры вообще не могут использовать исполнительный механизм и действия. Программы поведения на Lua описаны в разделе Программы поведения.

Глобальная таблица ai​

MagmaCore устанавливает эту глобальную таблицу в каждой среде Lua. Конструкторы лишь помечают переданную им таблицу; EliteMobs компилирует помеченные таблицы из файлов программ поведения.

ПолеТипОписание
ai.controls.move, look, jump, target, attack, use_item, actionstringИмена элементов управления для массива controls поведения; у use_item нет метода исполнительного механизма в Lua.
МетодАргументыРезультатОписание
ai.program(definition)tabletableПометить определение программы с id, revision и необязательными modules, memories, sensors, behaviors, budget и runaway.
ai.module(definition)tabletableПометить определение модуля с id, revision и необязательными dependencies, memories, sensors и behaviors.
ai.sensor(definition)tabletableПометить сенсор с id, interval?=1 и sense(c).
ai.behavior(definition)tabletableПометить поведение с id, priority?=0, controls, can_start, can_continue, start, tick и stop(c, reason).

context.mind_action: хук силы EliteMobs​

Доступен в on_mind_action(context). Хук возвращает "accepted", "deferred" или "rejected"; подключённые силы перебираются в порядке подключения, пока одна не примет действие.

ПолеТипОписание
keystringИдентификатор семантического действия с пространством имён.
payloadtableИзменяемая копия данных действия в Lua. Исходный запрос Java неизменяем; UUID представлены строками, позиции таблицами, а не исходными объектами.
game_tick, generationnumberТик действия и поколение среды выполнения.

context.state​

Каждый экземпляр скрипта MagmaCore получает обычную таблицу Lua, которая сохраняется на всё время жизни этого экземпляра. Используйте её для счётчиков, флагов, идентификаторов задач и значений, разделяемых между хуками.

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

context.log​

Методы MagmaCore, FreeMinecraftModels и NPC EliteMobs​

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

Методы сил боссов EliteMobs​

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

context.scheduler​

Запланированные задачи принадлежат экземпляру скрипта и отменяются при его завершении. Оба приведённых ниже семейства имён доступны на общих поверхностях MagmaCore и в силах боссов EliteMobs.

Коллбэк получает свежий контекст без исходного события и игрока. Сохраняйте нужные UUID, а не старый контекст с ленивыми полями события. Во время паузы одноразовая задача ждёт возобновления, повторяющаяся пропускает вызовы. Ошибка коллбэка закрывает экземпляр скрипта. Отмена его задач не откатывает сущности, мир или отдельные таймеры интерфейса Bukkit.

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

context.cooldowns​

Без локального ключа используется __lua: плюс имя файла. Явные ключи используются без изменений. Общее локальное хранилище MagmaCore принадлежит адаптеру владельца: FMM создаёт отдельный адаптер на каждый скрипт пропа, а все скрипты одного NPC EliteMobs используют один адаптер и могут пересекаться по явному локальному ключу. Глобальные перезарядки FMM общие для скриптов одного пропа; у NPC они общие в его адаптере.

Силы боссов используют общее хранилище босса для локальных ключей и встроенную перезарядку силы для глобального состояния. Локальные таймеры и общие глобальные таймеры MagmaCore измеряют реальное время по 50 мс на тик, включая паузы и низкий TPS. Глобальные перезарядки босса считают серверные тики и сохраняют более позднее время окончания: более короткий set_global никогда не сокращает активную глобальную перезарядку, а неположительная длительность ничего не делает. Проверка или установка локальной перезарядки автоматически не проверяет и не устанавливает глобальную.

МетодАргументыВозвращаетОписание
local_ready(key?)string?boolПроверить, готова ли локальная перезарядка по ключу.
local_remaining(key?)string?intВернуть оставшиеся тики или 0, если готово.
check_local(key, duration)string/nil, intboolЕсли готово, запустить перезарядку и вернуть true. Для ключа по умолчанию передайте nil.
set_local(duration, key?)int, string?nilЗадать или сбросить локальную перезарядку; неположительная длительность сбрасывает её.
global_ready()—boolПроверить, готова ли глобальная перезарядка владельца.
set_global(duration)intnilЗадать глобальную перезарядку в тиках. На общих поверхностях MagmaCore неположительная длительность сбрасывает её.

context.zones: общая поверхность MagmaCore​

Скрипты FreeMinecraftModels, NPC-скрипты EliteMobs и другие стандартные потребители MagmaCore получают целочисленные дескрипторы зон в мире текущего владельца скрипта.

МетодАргументыВозвращаетОписание
create_sphere(x, y, z, radius)number, number, number, numberint/nilЗарегистрировать сферу и вернуть её дескриптор или nil, если у владельца нет мира.
create_cylinder(x, y, z, radius, height)number, number, number, number, numberint/nilЗарегистрировать цилиндр и вернуть его дескриптор или nil, если у владельца нет мира.
create_cuboid(x, y, z, x_size, y_size, z_size)number, number, number, number, number, numberint/nilЗарегистрировать кубоид и вернуть его дескриптор или nil, если у владельца нет мира.
watch(handle, on_enter?, on_leave?)int, function?, function?bool/nilВключить отслеживание границ для известного дескриптора. Наличие функции включает соответствующий хук on_zone_enter или on_zone_leave; тело переданной функции напрямую не вызывается.
unwatch(handle)intnilПрекратить отслеживание и удалить дескриптор.

Общее наблюдение проверяет точки локаций игроков. Размеры кубоида здесь являются полуразмерами; нулевой Z заменяется ненулевым X. Объём может отличаться от запросов пересечения сущностей и выборки точек EliteMobs. Зона сохраняет координаты и мир создания, но каждый тик проверяются игроки в текущем мире владельца. Пересекающий границу игрок доступен через context.player и context.event.player.

Учёт присутствия начинается сразу при создании, до установки обработчиков через watch. Поздний watch не выдаёт вход для уже учтённого игрока внутри. Пропуск коллбэка при повторном вызове watch не удаляет прежний обработчик. Отключение игрока и unwatch не гарантируют хук выхода. Проверки зон выполняются до on_game_tick.

context.event: общая поверхность MagmaCore​

Эта таблица существует, пока у общего хука есть текущее событие Bukkit или действующее лицо. Она отсутствует в запланированных обратных вызовах и в хуках без обоих этих значений.

Поле или методТипОписание
is_cancelledboolСостояние отмены при первом получении вложенной таблицы события; вызовы cancel() и uncancel() не обновляют поле.
cancel()методОтменить текущее событие. Присутствует, только если оно реализует Bukkit Cancellable.
uncancel()методСнять отмену текущего события. Присутствует, только если оно реализует Bukkit Cancellable.
playertableТаблица Living Entity для текущего действующего лица, если оно доступно.

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

context.item​

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

МетодАргументыВозвращаетОписание
get_durability()—table/nilОставшаяся прочность {current, max}; nil для недоступного предмета или материала без прочности.
get_durability_percentage()—number/nilОставшаяся прочность, делённая на максимум материала. Обычно 0..1, но внешне завышенное повреждение в метаданных может вывести значение за пределы.
use_durability(amount, can_break?=false)int, bool?boolИзменить повреждение; отрицательные значения чинят предмет. По умолчанию остаётся хотя бы одна единица прочности; can_break=true может израсходовать стак.
use_durability_percentage(fraction, can_break?=false)number, bool?boolПрименить повреждение ceil(max_durability * fraction) с тем же правилом поломки.
consume(amount)положительный intboolИзрасходовать предметы из захваченного стака, только если их достаточно.

Используется максимальная прочность материала, а не кастомный компонент максимального повреждения. Эти прямые изменения обходят ванильный расчёт износа, Unbreaking, неразрушимость и события повреждения предмета игрока. Доля должна быть конечной, а результат помещаться в целое число; отрицательная доля чинит предмет. Поломка расходует весь захваченный стак. Жизненный цикл действия и полный контекст описаны в авторских зачарованиях.

context.prop​

Скрипты пропсов FreeMinecraftModels получают эту таблицу, которая наследует таблицу Entity MagmaCore, если существует опорная сущность.

Свойства​

ПолеТипОписание
model_idstring/nilИмя чертежа модели или nil, если чертежа нет.
current_locationtable/nilАктуальная локация пропа.

Методы​

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

Для операций пропа в очереди true означает успешную начальную проверку игрока и опорной сущности. Это не подтверждает свободное место, сохранение книги или открытие интерфейса. take_book удаляет сохранённую книгу перед вставкой в инвентарь и не выбрасывает излишек. Все зрители одного пропа используют общий живой инвентарь, который сохраняется, когда его закрывает последний зритель; пока он открыт, последующие вызовы используют его заголовок и размер. Сохранённое содержимое, превышающее запрошенное число рядов, открывается в сохранённом размере, поэтому слоты не теряются. Данные пропа хранятся на опорной стойке для брони; создание нового предмета размещения при подборе не гарантирует сохранение этих данных.

В on_projectile_hit скрипты пропов также получают context.projectile — общую таблицу Entity для снаряда. Хук не срабатывает, если другой плагин уже отменил попадание. context.event оборачивает отменяемое событие попадания FreeMinecraftModels, а context.event.player — это стрелок, если он является живой сущностью, включая мобов; context.player задаётся только тогда, когда снаряд выпустил игрок.

context.npc​

NPC-скрипты EliteMobs наследуют общие контексты MagmaCore и добавляют эту специфичную для NPC таблицу.

Свойства​

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

Методы​

МетодАргументыВозвращаетОписание
is_valid()—boolПроверить, валиден ли NPC.
remove()—nilУдалить NPC через его обычный жизненный цикл.
get_location()—tableВернуть текущую локацию NPC, откатываясь к локации его появления. Таблица также включает вектор direction.
get_eye_location()—tableВернуть текущую локацию глаз, откатываясь к локации появления. Таблица также включает вектор direction.
get_activation_radius()—numberВернуть текущий настроенный радиус активации.
get_nearby_players(radius)numbertableВернуть игроков того же мира в трёхмерном радиусе от ног NPC без фильтра игрового режима.
face_direction_or_location(target)tablenilПовернуться по вектору или к локации в том же мире. Игнорируется при активном движении патруля.
say_greeting(player?)table/string?nilОтправить настроенное приветствие, по умолчанию — вызвавшему игроку, если он доступен. Принимается таблица игрока, UUID или имя.
say_dialog(player?)table/string?nilОтправить настроенный диалог с тем же способом распознавания игрока.
say_farewell(player?)table/string?nilОтправить настроенное прощание с тем же способом распознавания игрока.
play_model_animation(name)stringnilВоспроизвести анимацию модели, если существует кастомная модель.
patrol_pause()—boolПриостановить настроенный патруль.
patrol_resume()—boolВозобновить патруль после ожидания или временного движения.
walk_to(x, y, z)number, number, numberboolИдти к смещению от исходной точки и возобновить патруль.
hold(x, y, z)number, number, numberboolИдти к смещению и остаться там.
teleport(x, y, z)number, number, numberboolТелепортироваться к смещению, где обрабатываются сущности.

Таблица позиции в силах EliteMobs​

Таблицы сил боссов EliteMobs возвращают позицию в этом формате из get_location(), get_eye_location(), current_location и других результатов с позициями. Отсутствующая позиция возвращает пустую таблицу.

Свойства​

ПолеТипОписание
x, y, znumberКоординаты.
yaw, pitchnumberПоворот.
worldstring/nilИмя мира, если у позиции есть мир.
directiontableЕдиничный вектор направления взгляда {x, y, z}.

Методы​

МетодАргументыРезультатОписание
add(dx?=0, dy?=0, dz?=0)number?=0, number?=0, number?=0tableПрибавить значения к координатам на месте и вернуть ту же таблицу; direction не обновляется.

Таблица ссылок на сущность в силах EliteMobs​

Методы сил боссов EliteMobs возвращают эту облегчённую таблицу для неживых сущностей — снарядов, фейерверков и падающих блоков.

Свойства​

ПолеТипОписание
namestringСнимок имени сущности.
uuidstringUUID сущности.
entity_typestringСнимок типа сущности Bukkit в верхнем регистре.
is_playerboolВсегда false.
is_eliteboolВсегда false.
is_mountboolFalse, если только босс не пометит возвращённую таблицу ездового животного как true.
current_locationtableСнимок локации.

Методы​

МетодАргументыВозвращаетОписание
is_valid()—boolПроверить актуальную валидность.
get_location()—tableВернуть актуальную локацию.
get_velocity()—tableВернуть актуальную скорость.
is_on_ground()—boolПроверить актуальное состояние нахождения на земле.
teleport_to_location(location)tablenilТелепортировать, если локация распознана.
set_velocity_vector(vector)tablenilЗадать скорость, если вектор распознан.
set_direction_vector(vector)tablenilЗадать направление огненного шара, если применимо.
set_yield(amount)numbernilЗадать мощность огненного шара, если применимо.
set_gravity(enabled)boolnilЗадать гравитацию.
detonate()—nilВзорвать, если сущность является фейерверком.
remove()—nilУдалить сущность.
unregister(reason?=OTHER)string?=OTHERnilСнять с учёта, используя DEATH, PHASE_BOSS_RESET, PHASE_BOSS_PHASE_END, CHUNK_UNLOAD, WORLD_UNLOAD, SHUTDOWN, EFFECT_TIMEOUT, BOSS_TIMEOUT, NPC_TIMEOUT, OTHER, UNSPECIFIED_WATCHDOG_REMOVAL, REMOVE_COMMAND, KILL_COMMAND, REINFORCEMENT_CULL, ENTITY_REPLACEMENT или ARENA_RESET.
is_inside_vehicle()—boolПроверить, едет ли сущность на транспорте.
has_vehicle()—boolПроверить, существует ли транспорт.
get_vehicle()—table/nilВернуть ссылку на текущий транспорт.
set_vehicle(vehicle)tableboolПосадить эту сущность на распознанный транспорт.
leave_vehicle()—boolПокинуть текущий транспорт.
has_passengers()—boolПроверить, есть ли пассажиры.
get_passenger_count()—intВернуть количество пассажиров.
get_passengers()—tableВернуть ссылки на пассажиров.
add_passenger(passenger)tableboolДобавить распознанного пассажира.
remove_passenger(passenger)tableboolУбрать распознанного пассажира.
eject_passengers()—boolВысадить всех пассажиров.

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

Значения живых сущностей в силах боссов EliteMobs используют эту отдельную таблицу; таблицы Boss и Player сил EliteMobs наследуют её.

Свойства​

ПолеТипОписание
namestringСнимок имени сущности.
uuidstringUUID сущности.
entity_typestringСнимок типа сущности Bukkit в верхнем регистре.
is_playerboolЯвляется ли сущность игроком.
is_monsterboolРеализует ли сущность Bukkit Monster.
is_eliteboolОтслеживает ли EliteMobs эту сущность.
is_mountboolЯвляется ли отслеживаемый кастомный босс ездовым животным.
is_validboolСнимок валидности.
healthnumberСнимок здоровья.
maximum_healthnumberСнимок максимального здоровья.
current_locationtableСнимок локации.

Методы​

МетодАргументыВозвращаетОписание
is_alive()—boolПроверить актуальную валидность и состояние смерти.
is_ai_enabled()—boolВернуть актуальное состояние ИИ.
is_frozen()—boolВернуть настройку заморозки кастомного босса EliteMobs или false.
get_location()—tableВернуть актуальную локацию.
get_eye_location()—tableВернуть актуальную локацию глаз.
get_height()—numberВернуть высоту сущности Bukkit.
get_health()—numberВернуть актуальное здоровье.
get_maximum_health()—numberВернуть актуальное максимальное здоровье.
get_velocity()—tableВернуть актуальную скорость.
deal_damage(amount)numbernilНанести обычный урон Bukkit.
deal_custom_damage(amount)numbernilПередать необработанный кастомный урон от босса живой цели; пропускает самого босса, неуязвимые или мёртвые цели и игроков не в режиме Survival/Adventure. Учитывает правила экземпляра подземелья и отмену события урона.
deal_damage_from_boss(amount)numbernilНанести урон Bukkit, приписанный боссу, которому принадлежит сила.
restore_health(amount)numbernilЛечить через EliteMobs, если сущность отслеживается, иначе ограничить здоровье Bukkit максимумом.
play_sound_at_entity(sound, volume_or_options?=1, pitch?=1)string (Sound), number/table?=1, number?=1nilВоспроизвести зарегистрированный или кастомный звук с пространством имён у сущности. Вторым аргументом можно передать {volume, pitch}.
play_sound_at_self(sound, volume_or_options?=1, pitch?=1)string (Sound), number/table?=1, number?=1nilПсевдоним, воспроизводящий звук у сущности. Вторым аргументом можно передать {volume, pitch}.
spawn_particle_at_self(particle, count?=1)string (Particle)/table, int?=1nilСоздать у сущности частицу по строке или по таблице спецификации частицы.
spawn_particles_at_location(location, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0)table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0nilСоздать частицу в локации.
teleport_to_location(location)tablenilТелепортировать, если локация распознана.
set_velocity_vector(vector)tablenilЗадать скорость, если вектор распознан.
set_gravity(enabled)boolnilЗадать гравитацию.
is_on_ground()—boolПроверить актуальное состояние нахождения на земле.
apply_push_vector(vector, additive?=false, delay?=1)table, bool?=false, int?=1nilПрименить скорость после задержки, при необходимости добавляя её к текущей.
set_custom_name(name)stringnilЗадать кастомное имя с обработкой цветовых кодов.
reset_custom_name()—nilВосстановить имя EliteMobs, если сущность отслеживается, иначе имя Bukkit.
set_custom_name_visible(visible)boolnilЗадать видимость кастомного имени.
set_ai_enabled(enabled, duration?=0)bool, int?=0nilЗадать ИИ как принадлежащее изменение; положительное число тиков восстанавливает заменённое значение. true завершает активное изменение ИИ этой силы, если оно есть, а не применяет новое значение.
set_awareness_enabled(enabled, duration?=0)bool, int?=0nilЗадать осведомлённость моба как принадлежащее изменение; положительное число тиков восстанавливает заменённое значение. true завершает активное изменение осведомлённости этой силы, если оно есть, а не применяет новое значение.
face_direction_or_location(target)tablenilПовернуться по вектору или к локации в том же мире.
play_model_animation(name)stringnilВоспроизвести анимацию кастомной модели, если она доступна.
set_scale(scale, duration?=0)number, int?=0nilЗадать базовый масштаб как принадлежащее изменение; положительное число тиков восстанавливает заменённое значение.
set_invulnerable(enabled, duration?=0)bool, int?=0nilЗадать неуязвимость как принадлежащее изменение; положительное число тиков восстанавливает заменённое значение.
remove_elite()—nilУдалить отслеживаемого элиту через конвейер удаления EliteMobs.
is_healing()—boolПроверить состояние лечения отслеживаемого элиты.
set_healing(enabled)boolniltrue помечает отслеживаемую элиту как лечащуюся, если она ещё не помечена; false снимает только лечение, установленное этой силой. При завершении работы сила снимает всё ещё принадлежащее ей лечение.
navigate_to_location(location, speed?=1, force?=false, timeout?=0)table, number?=1, bool?=false, int?=0nilНаправить отслеживаемого кастомного босса.
add_tag(tag, duration?=0)string, int?=0nilДобавить тег и убрать его после положительного числа тиков.
remove_tag(tag)stringnilУбрать тег.
has_tag(tag)stringboolПроверить тег сущности, элиты или игрока.
push_relative_to(location, force?=1, extra_x?=0, extra_y?=0, extra_z?=0)table, number?=1, number?=0, number?=0, number?=0nilНемедленно заменить скорость нормализованным вектором от источника, умноженным на force, плюс смещения по осям мира. Источник должен быть в том же мире.
overlaps_box_at_location(center, half_x?=0.5, half_y?=half_x, half_z?=half_x)table, number?=0.5, number?, number?boolПроверить ограничивающий параллелепипед сущности на пересечение с запрошенным.
is_inside_vehicle()—boolПроверить, едет ли сущность на транспорте.
has_vehicle()—boolПроверить, существует ли транспорт.
get_vehicle()—table/nilВернуть ссылку на текущий транспорт.
set_vehicle(vehicle)tableboolПосадить эту сущность на распознанный транспорт.
leave_vehicle()—boolПокинуть текущий транспорт.
has_passengers()—boolПроверить, есть ли пассажиры.
get_passenger_count()—intВернуть количество пассажиров.
get_passengers()—tableВернуть ссылки на пассажиров.
add_passenger(passenger)tableboolДобавить распознанного пассажира.
remove_passenger(passenger)tableboolУбрать распознанного пассажира.
eject_passengers()—boolВысадить всех пассажиров.
apply_potion_effect(type, duration, amplifier?=0)string (PotionEffectType), int, int?=0nilПеревести имя зелья Bukkit в верхний регистр и применить эффект, если разрешают правила экземпляра. Усилитель отсчитывается от нуля.
set_equipment(slot, material, options?)string (EquipmentSlot), string (Material), table?nilЗадать снаряжение; options поддерживают unbreakable и записи enchantments с type и level.
damage_equipment(slot, amount)string, intintЗапросить 1–64 единицы износа для HAND, OFF_HAND, HEAD, CHEST, LEGS или FEET; возвращает фактически применённый износ. Учитывает отмену события повреждения предмета игрока и неразрушимость; может сломать предмет.
set_fire_ticks(ticks)intnilЗадать тики горения, если разрешают правила экземпляра.
add_visual_freeze_ticks(ticks?=1)int?=1nilДобавить тики замерзания Minecraft, если разрешают правила экземпляра. Возможен урон от замерзания; метод не блокирует ИИ и движение.
place_temporary_block(material, ticks?=0, require_air?=false)string (Material), int?=0, bool?=falsenilРазместить временный блок у сущности.

Изменения ИИ, осведомлённости, масштаба и неуязвимости принадлежат вызывающей силе. Каждое из них запоминает заменённое значение. Положительная длительность восстанавливает это значение через указанное число тиков; длительность 0 сохраняет изменение до завершения работы силы, которое тоже его восстанавливает. Если одно свойство меняют несколько сил, завершение одного изменения восстанавливает самое последнее из оставшихся либо исходное значение, если других нет. Если тем временем свойство изменит другой плагин или команда, его значение сохраняется и ничего не восстанавливается. Приостановка силы эти изменения не завершает. Отложенный apply_push_vector и таймеры удаления тегов по-прежнему работают независимо от планировщика скрипта. reset_custom_name восстанавливает имя отслеживаемого элиты, а для обычной сущности Bukkit использует текущее имя, не сохранённое исходное.

Таблица игрока в силах EliteMobs​

Значения игроков в силах боссов EliteMobs наследуют все свойства и методы таблицы живой сущности в силах EliteMobs.

Свойства​

ПолеТипОписание
game_modestringСнимок игрового режима Bukkit в верхнем регистре.

Методы​

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

context.boss​

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

Свойства​

ПолеТипОписание
namestringСнимок отображаемого имени элиты или имени файла скрипта.
uuidstringUUID элиты.
healthnumberСнимок здоровья элиты.
maximum_healthnumberСнимок максимального здоровья элиты.
current_locationtableСнимок локации элиты.
levelintСнимок уровня элиты.
damager_countintСнимок количества наносящих урон.
is_in_combatboolСнимок состояния боя.
existsboolСнимок существования элиты.

Методы​

МетодАргументыВозвращаетОписание
is_alive()—boolПроверить живую сущность и состояние существования в EliteMobs.
get_health()—numberВернуть актуальное здоровье элиты.
get_maximum_health()—numberВернуть актуальное максимальное здоровье элиты.
get_location()—tableВернуть актуальную локацию элиты.
restore_health(amount)numbernilЛечить через сущность EliteMobs.
add_tag(tag, duration?=0)string, int?=0nilДобавить тег элиты и убрать его после положительного числа тиков.
remove_tag(tag)stringnilУбрать тег элиты.
has_tag(tag)stringboolПроверить тег элиты.
reset_custom_name()—nilВосстановить отображаемое имя элиты.
play_sound_at_self(sound, volume_or_options?=1, pitch?=1)string (Sound), number/table?=1, number?=1nilВоспроизвести зарегистрированный или кастомный звук с пространством имён в локации элиты. Вторым аргументом можно передать {volume, pitch}.
play_sound_at_entity(sound, volume_or_options?=1, pitch?=1)string (Sound), number/table?=1, number?=1nilПсевдоним, воспроизводящий звук в локации элиты. Вторым аргументом можно передать {volume, pitch}.
spawn_particle_at_self(particle, count?=1)string (Particle)/table, int?=1nilСоздать частицу в локации элиты.
play_model_animation(name)stringnilВоспроизвести анимацию модели кастомного босса, если она доступна.
navigate_to_location(location, speed?=1, force?=false, timeout?=0)table, number?=1, bool?=false, int?=0nilНаправить кастомного босса.
get_damager_count()—intВернуть актуальное количество наносящих урон.
despawn()—nilУдалить элиту с причиной OTHER.
remove()—nilПсевдоним despawn().
patrol_pause()—boolПриостановить настроенный патруль.
patrol_resume()—boolВозобновить патруль после ожидания или временного движения.
walk_to(x, y, z)number, number, numberboolИдти к смещению от исходной точки и возобновить патруль.
hold(x, y, z)number, number, numberboolИдти к смещению и остаться там.
teleport(x, y, z)number, number, numberboolТелепортироваться к смещению, где обрабатываются сущности.
get_ender_dragon_phase()—string/nilВернуть имя EnderDragon.Phase или nil.
set_ender_dragon_phase(phase)string (EnderDragon.Phase)nilЗадать корректную фазу дракона Края.
has_mount()—boolПроверить, есть ли у босса живое ездовое животное.
get_mount()—table/nilВернуть ссылку на ездовое животное, помеченную is_mount = true.
set_mount(mount)tableboolПосадить босса на распознанную сущность.
clear_mount()—boolПокинуть текущий транспорт.
dismount()—boolПсевдоним для clear_mount().
start_tracking_fireball_system(speed?=0.5)number?=0.5nilДля босса-монстра выпускает самонаводящиеся огненные шары в игроков Survival/Adventure в пределах 20 блоков по каждой оси на следующем тике и затем каждые 160 тиков, пока у него есть цель. Задача принадлежит силе: приостановка силы приостанавливает её, а потеря цели или завершение работы останавливают. Скорость должна быть конечной и положительной.
handle_spirit_walk_damage(cause)string (DamageCause)nilВыполнить обработку урона Spirit Walk.
shield_wall_is_active()—boolПроверить состояние щитовой стены.
initialize_shield_wall(openingDirection?=1)int?=1nilСоздать щиты по направлениям с запасом, равным уровню босса. Проём: 1 север, 2 восток, 3 юг, 4 запад; другие целые числа защищают все стороны. Активная стена не меняется.
shield_wall_absorb_damage(player, damage)table, numberboolВычесть урон из запаса на стороне атакующего, если он был положительным. При true скрипт должен сам отменить событие урона; автоматической отмены нет.
deactivate_shield_wall()—nilОстановить независимую задачу стены, удалить её состояние и визуальные элементы. Одно закрытие Lua её не отключает.
start_zombie_necronomicon(target, chant)table, stringnilЗапустить независимый контроллер для живой цели. Строка задаёт отображаемое заклинание, а не файл; призываются фиксированные файлы зомби/скелета necronomicon с уровнем заклинателя.
send_message(text, range?=20)string, number?=20nilОтправить текст с обработкой цветовых кодов игрокам в пределах радиуса.
get_nearby_players(range)numbertableВернуть ближайшие таблицы игроков сил EliteMobs.
get_nearby_elites(radius)numbertableВернуть до 32 живых отслеживаемых элитных мобов того же мира, кроме самого босса; сортировка по расстоянию, при равенстве — по UUID. Радиус должен быть больше 0 и не больше 64.
get_target_player()—table/nilВернуть текущую цель моба, если это игрок.
get_nearby_players_in_zone(zone)tabletableВернуть игроков, находящихся внутри зоны.
spawn_particles_in_zone(zone, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0, coverage?=1)table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0, number?=1nilВыбрать точки внутри зоны и создать частицы.
spawn_particles_in_zone_border(zone, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0, coverage?=1)table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0, number?=1nilВыбрать точки на границе зоны и создать частицы.
get_particles_from_self_toward_zone(zone, particle, speed?=0.1)table, string (Particle), number?=0.1tableПостроить направленные спецификации частиц от босса к выбранным точкам зоны.
get_particles_toward_self(zone, particle, speed)table, string (Particle), numbertableПостроить направленные спецификации частиц к боссу; текущий построитель считывает скорость из последнего переданного аргумента.
spawn_particles_with_vector(particles)tablenilСоздать массив направленных спецификаций частиц.
summon_reinforcement(file, zone_or_location?, duration?=0)string, table?, int?=0table/nilПризвать подкрепление в выбранной точке зоны, локации или у босса. Положительная длительность удаляет его после указанного числа тиков.
summon_projectile(type, origin, destination, speed?=1, options?)string (EntityType), table, table, number?=1, table?table/nilСоздать снаряд; options поддерживают custom_damage, detonation_power, yield, incendiary, gravity, glowing, invulnerable, persistent, duration, effect из EntityEffect, spawn_at_origin, direction_only, track, on_land и max_ticks.

context.players: силы боссов EliteMobs​

МетодАргументыВозвращаетОписание
current_target()—table/nilВернуть действующее лицо события, если это игрок, иначе текущую цель моба у босса, если это игрок.
nearby_players(radius)numbertableВернуть таблицы Player в пределах радиуса от босса.
all_players_in_world()—tableВернуть все таблицы Player в текущем мире босса.

context.entities: силы боссов EliteMobs​

Запросы коллекций исключают самого босса. Фильтры живых сущностей принимают player/players, elite/elites, mob/mobs или любое другое значение для всех живых сущностей. Фильтров Survival/Adventure и принадлежности экземпляру подземелья нет. Прямая цель берётся из хука независимо от фильтров коллекций.

МетодАргументыВозвращаетОписание
get_nearby_entities(radius, filter?="living")number, string?tableФильтры живых сущностей используют трёхмерный радиус по локации ног. all и entities используют параллелепипед Bukkit по осям мира и включают неживые сущности.
get_entities_in_box(center, half_x, half_y, half_z, filter?="living")table, number, number, number, string?tableВернуть живые сущности, чьи локации ног находятся внутри параллелепипеда, включая границу.
get_all_entities(filter?="living")string?tableВернуть подходящие живые сущности в мире босса.
get_direct_target_entity()—table/nilВернуть прямую цель, предоставленную текущим хуком.
get_boss_spawn_location()—tableВернуть исходную локацию появления босса.

context.vectors: силы боссов EliteMobs​

МетодАргументыВозвращаетОписание
get_vector_between_locations(source, destination, options?)table, table, table?tableВернуть вектор между локациями в одном мире или {x=0,y=0,z=0} для некорректного либо межмирового ввода. Options поддерживают normalize, multiplier и векторный offset.
rotate_vector(vector, pitch?=0, yaw?=0)table, number?=0, number?=0tableВернуть вектор, повёрнутый на pitch и yaw в градусах.
normalize_vector(vector)tabletableВернуть единичный вектор; нулевой вектор остаётся нулевым.

context.zones: силы боссов EliteMobs​

Силы боссов EliteMobs заменяют общую поверхность зон с целочисленными дескрипторами запросами к определениям зон Elite Script.

Выбор сущностей, проверка точки и выборка локаций частиц являются разными операциями фигуры и могут расходиться на границах. coverage влияет на локации выборки, не на выбор сущностей. watch_zone сохраняет фигуру и передаёт коллбэкам таблицу сущности, не контекст. Проверка начинается через один тик и выдаёт вход для уже находящихся внутри сущностей. Остановка наблюдения не вызывает выход.

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

context.script: силы боссов EliteMobs​

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

Методы​

МетодАргументыВозвращаетОписание
target(spec)tableдескриптор целиСоздать дескриптор цели.
zone(spec)tableдескриптор зоныСоздать дескриптор зоны.
relative_vector(spec, location?, zone?)table, table?, дескриптор зоны?дескриптор вектораСоздать дескриптор относительного вектора, по умолчанию привязав его локацию действия к боссу.
damage(target, amount?=0, multiplier?=1)дескриптор цели, number?=0, number?=1nilПередать урон Bukkit от имени босса. Удары по игрокам проходят боевое масштабирование EliteMobs с multiplier; для других сущностей этот множитель не применяется.
push(target, vector, additive?=false)дескриптор цели, table/дескриптор вектора, bool?=falsenilЧерез один тик в задаче скрипта заменить или добавить скорость захваченным целям. Один вычисленный вектор используется для всех целей; отсутствующий или неконечный вектор заменяется нулём.
set_facing(target, vector)дескриптор цели, table/дескриптор вектораnilПовернуть распознанные целевые сущности вдоль вектора.
spawn_particles(target, particles)дескриптор цели, table/stringnilСоздать частицы по спецификации в распознанных целевых локациях.

Эти вызовы автоматически не исполняют список действий Elite Script, условия, перезарядки, задержки предупреждений или повторы. Дескриптор цели сохраняет исходный контекст события и прямой цели; не переносите зависимые от события дескрипторы между несвязанными хуками. first_entity() означает первый результат распознавателя, не обязательно ближайшую сущность.

Методы дескриптора цели​

МетодАргументыВозвращаетОписание
entities()—tableРаспознать и вернуть таблицы Entity.
locations()—tableРаспознать и вернуть таблицы локаций.
first_entity()—table/nilВернуть первую распознанную сущность.
first_location()—table/nilВернуть первую распознанную локацию.

Методы дескриптора зоны​

МетодАргументыВозвращаетОписание
full_target(coverage?)number?дескриптор целиСоздать дескриптор цели для внутренней области фигуры.
border_target(coverage?)number?дескриптор целиСоздать дескриптор цели для границы.
full_locations(coverage?)number?tableРаспознать выбранные внутренние локации.
border_locations(coverage?)number?tableРаспознать выбранные локации на границе.
full_entities()—tableРаспознать сущности внутри фигуры.
border_entities()—tableРаспознать сущности на границе.
contains(location, mode?="full")table, string?boolПроверить принадлежность всей фигуре или границе.
watch(callbacks, mode?="full")table, string?intЗапустить принадлежащее скрипту наблюдение {on_enter, on_leave} и вернуть ID его задачи.

Методы дескриптора относительного вектора​

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

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

Значения событий в силах боссов EliteMobs предоставляют поля и методы в зависимости от типа события.

Свойства​

ПолеТипОписание
damage_amountnumber/nilСнимок величины урона из события урона.
damage_causestring/nilИмя DamageCause, если событие урона его предоставляет.
damagertable/nilИсходная сущность, наносящая урон в событии. При попадании снаряда это снаряд, а не стрелок.
projectiletable/nilСсылка на снаряд, если урон наносит снаряд.
spawn_reasonstring/nilПричина появления элиты.
entitytable/nilПовреждённое подкрепление, сущность смерти или зоны в зависимости от хука.
is_damage_transferbool/nilТолько урон игрока по элите: обрабатывает ли хук явно перенесённый удар.

Методы​

МетодАргументыВозвращаетОписание
cancel_event()—nilОтменить EliteDamageEvent или другое отменяемое событие.
set_damage_amount(amount)numbernilЗаменить урон EliteDamageEvent; требуется вызов через точку: context.event.set_damage_amount(...).
multiply_damage_amount(multiplier)numbernilУмножить урон EliteDamageEvent; требуется вызов через точку: context.event.multiply_damage_amount(...).
get_damage_amount()—numberВернуть текущее количество урона EliteDamageEvent после изменений.
transfer_damage(target, amount)ссылка на сущность, numberboolТолько урон игрока по элите: передать конечный неотрицательный урон другой живой элите, разрешённой правилами экземпляра. Ноль, отменённый вход, вложенный перенос и исходная цель возвращают false; неэлитная цель вызывает ошибку. True означает передачу запроса, не гарантированный урон. Исходный урон не уменьшается и не отменяется.

context.world: дополнения и переопределения EliteMobs​

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

Методы​

МетодАргументыВозвращаетОписание
play_sound_at_location(location, sound, volume?=1, pitch?=1)table, string (Sound), number?=1, number?=1nilПереопределение, принимающее зарегистрированные или кастомные звуки с пространством имён через поддержку EliteMobs.
spawn_particle_at_location(location, particle, count?=1)table, string (Particle)/table, int?=1nilПереопределение, принимающее таблицу спецификации частицы EliteMobs.
set_block_at_location(location, material, require_air?=false)table, string (Material), bool?=falsenilПереопределение, которое ставит блок навсегда через менеджер временных блоков, без таймера и без учёта.
place_temporary_block_at_location(location, material, ticks?=0, require_air?=false)table, string (Material), int?=0, bool?=falsenilПереопределение, использующее размещение временного блока EliteMobs.
get_block_type_at_location(location)tablestring/nilВернуть имя Material в верхнем регистре или nil для некорректной локации.
get_highest_block_y_at_location(location)tableint/nilПереопределение, возвращающее наибольшую координату Y блока или nil.
get_blast_resistance_at_location(location)tablenumberВернуть взрывоустойчивость блока, по умолчанию 0 для некорректной локации.
is_air_at_location(location)tableboolПроверить, является ли целевой блок воздухом.
is_passable_at_location(location)tableboolПроверить проходимость по Bukkit.
is_passthrough_at_location(location)tableboolПроверить, что материал не является твёрдым.
is_on_floor_at_location(location)tableboolПроверить, что целевой блок не твёрдый, а блок под ним твёрдый.
is_standing_on_material(location, material)table, string (Material)boolПроверить блок ниже.
strike_lightning_at_location(location)tablenilПереопределение, включающее обход молнии EliteMobs перед ударом.
run_empowered_lightning_task_at_location(location)tablenilНезависимо выполнить 60 итераций предупреждения, затем создать настоящую молнию и огненный шар вниз с силой взрыва 5. Наносит урон; пауза или закрытие Lua не отменяет задачу.
set_world_time(time) / set_world_time(location, time)int/table, int?nilЗадать время в мире босса или в мире переданной локации.
set_world_weather(weather, duration?=6000) / set_world_weather(location, weather, duration?=6000)string/table, string/int?, int?=6000nilЗадать CLEAR, PRECIPITATION, RAIN или THUNDER.
run_console_command(command)stringnilВыполнить команду от имени консоли.
spawn_boss_at_location(file, location?, level?)string, table?, int?table/nilСоздать кастомного босса в переданной или текущей локации с переданным или текущим уровнем.
spawn_custom_boss_at_location(file, location, options?)string, table, table?table/nilСоздать кастомного босса; options поддерживают silent, level, add_as_reinforcement и velocity.
spawn_entity_at_location(type, location, options?)string (EntityType), table, table?table/nilСоздать ванильную сущность; options поддерживают velocity, duration, effect из EntityEffect, on_land и max_ticks.
spawn_falling_block_at_location(location, material, options?)table, string (Material), table?table/nilСоздать падающий блок; options поддерживают drop_item, hurt_entities, velocity и on_land.
spawn_reinforcement_at_location(file, location, duration?=0, velocity?)string, table, int?=0, table?table/nilПризвать подкрепление, привязанное к боссу. Положительная длительность удаляет его после указанного числа тиков.
spawn_fireworks_at_location(location, options)table, tabletable/nilСоздать фейерверк; options поддерживают effects, type, flicker, trail, colors, fade_colors, power, velocity и shot_at_angle, где для type используются имена FireworkEffect.Type.
spawn_splash_potion_at_location(location, options)table, tabletable/nilСоздать взрывное зелье; записи effects принимают type из PotionEffectType, duration, amplifier и overwrite, плюс velocity на верхнем уровне.
generate_fake_explosion(locations, source?)table, table?nilПри включённом восстановлении взрывов удалить настоящие блоки и создать падающие обломки с уроном. Восстановление начинается через 1200 тиков; закрытие Lua не отменяет его. Позиции должны быть в мире босса.
spawn_fake_gold_nugget_at_location(location, velocity, gravity?=false)table, table, bool?=falsetable/nilСоздать поддельный снаряд — золотой самородок.
run_fake_gold_nugget_damage(projectiles)tablenilВыполнить проход нанесения урона поддельными снарядами.
generate_player_loot(times?=1)int?=1nilСгенерировать добычу игрока для подходящих наносивших урон.
drop_bonus_coins(multiplier?=2)number?=2nilВыбросить бонусные монеты для подходящих наносивших урон.

Таблица поддельного снаряда EliteMobs​

spawn_fake_gold_nugget_at_location возвращает эту таблицу при успешном создании.

Методы​

МетодАргументыВозвращаетОписание
get_location()—tableВернуть локацию поддельного снаряда.
set_gravity(enabled)boolnilЗадать гравитацию поддельного снаряда.
remove()—nilУдалить поддельный снаряд.
is_removed()—boolПроверить, был ли он удалён.

context.settings​

Силы боссов EliteMobs получают эту таблицу настроек от того же построителя таблицы мира.

Методы​

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