Справочник API Lua
Полный справочник методов скриптингового API Lua. Все методы вызываются через синтаксис context.table:method().
Глобальные методы (отмечены GLOBAL) предоставляются Magmacore — общей основной библиотекой. Они применимы к скриптам FreeMinecraftModels и другим потребителям ScriptInstance MagmaCore. Силы боссов EliteMobs повторно используют ту же песочницу Lua, но предоставляют специфичные для боссов таблицы контекста и имена методов; NPC-скрипты EliteMobs работают на том же рантайме MagmaCore и получают полный общий контекст плюс таблицу context.npc, доступную только для NPC. Эти варианты описаны в разделах EliteMobs ниже и в NPC-скриптах.
EliteMobs методы (отмечены ELITEMOBS) предназначены для скриптов сил боссов EliteMobs и NPC-скриптов.
FMM методы (отмечены FMM) предназначены для скриптов предметов и пропсов FreeMinecraftModels.
Если метод требует перечисление Bukkit (Sound, Particle, Material и т.п.), смотрите Spigot Javadocs для допустимых значений. Имена перечислений передаются как строки в верхнем регистре (например, "DIAMOND_SWORD", "ENTITY_ARROW_SHOOT").
Entity Table GLOBAL
Базовые поля, присутствующие во всех таблицах сущностей — игроков, мобов, пропсов, чего угодно.
Properties
| Поле | Тип | Описание |
|---|---|---|
uuid | string | UUID сущности |
entity_type | string | Тип сущности (нижний регистр) |
is_valid | bool | Сущность всё ещё существует в мире |
is_dead | bool | Сущность мертва |
is_player | bool | Является игроком |
is_hostile | bool | Является монстром (Monster) |
is_passive | bool | Является животным (Animal) |
current_location | location | Позиция сущности (x, y, z, yaw, pitch, world) |
world | string | Имя мира |
Специфичные для плагинов обогатители могут добавлять дополнительные поля верхнего уровня, когда установлен соответствующий плагин. Поля EliteMobs и FreeMinecraftModels смотрите в разделах-мостах ниже.
Methods
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
teleport(location) | location table | nil | Телепортировать сущность |
remove() | — | nil | Удалить сущность из мира |
set_silent(enabled) | bool | nil | Сделать беззвучной |
set_invulnerable(enabled) | bool | nil | Сделать неуязвимой |
set_gravity(enabled) | bool | nil | Установить гравитацию |
set_glowing(enabled) | bool | nil | Установить эффект свечения |
Bridge: entity.elite
Добавляется обогатителем сущностей EliteMobs, когда установлен EliteMobs. Обогатитель добавляет эти флаги верхнего уровня:
| Поле | Тип | Описание |
|---|---|---|
is_elite | bool | Является сущностью EliteMobs |
is_custom_boss | bool | Является кастомным боссом EliteMobs |
is_significant_boss | bool | Кастомный босс с множителем здоровья больше 1 (продуманное столкновение) |
entity.elite присутствует только когда is_elite равно true.
| Поле | Тип | Описание |
|---|---|---|
level | int | Уровень элитного моба |
name | string | Отображаемое имя элиты |
health | double | Текущее здоровье |
max_health | double | Максимальное здоровье |
is_custom_boss | bool | Является кастомным боссом (также доступно на верхнем уровне) |
health_multiplier | double | Множитель здоровья, заданный в конфиге |
damage_multiplier | double | Множитель урона, заданный в конфиге |
remove() | method | Удалить элитную сущность |
Bridge: entity.model
Добавляется обогатителем сущностей FreeMinecraftModels, когда установлен FMM. Обогатитель добавляет эти флаги верхнего уровня:
| Поле | Тип | Описание |
|---|---|---|
is_modeled | bool | Имеет FMM-модель |
is_prop | bool | Является FMM-пропсом |
entity.model присутствует только когда is_modeled равно true.
| Поле | Тип | Описание |
|---|---|---|
model_id | string | Имя чертежа модели |
is_dynamic | bool | Является ли это FMM DynamicEntity (true) или статичным пропсом (false) |
play_animation(name, blend?, loop?) | method | Воспроизвести анимацию. blend по умолчанию false, loop по умолчанию false |
stop_animations() | method | Остановить все анимации |
remove() | method | Удалить смоделированную сущность |
Bridge: player permissions
Добавляется обогатителем сущностей FreeMinecraftModels, когда установлен FMM. Эти поля появляются только в таблицах сущностей-игроков:
| Поле / Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
has_permission(node) | string | bool | Имеет ли игрок указанное право |
is_op | — | bool | Является ли игрок оператором сервера |
Living Entity Table GLOBAL
Расширяет Entity Table. Применяется ко всем живым сущностям (мобам и игрокам).
Properties
| Поле | Тип | Описание |
|---|---|---|
health | double | Текущее здоровье |
maximum_health | double | Максимальное здоровье |
name | string | Отображаемое имя сущности |
is_alive | bool | Сущность не мертва |
Methods
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
damage(amount) | double | nil | Нанести урон сущности |
push(x, y, z) | double, double, double | nil | Добавить вектор скорости |
set_facing(x, y, z) | double, double, double | nil | Задать направление взгляда |
add_potion_effect(type, duration, amplifier) | string (PotionEffectType), int, int | nil | Применить эффект зелья по имени |
remove_potion_effect(type) | string (PotionEffectType) | nil | Удалить эффект зелья по имени |
get_scale() | — | number | Текущий масштаб сущности (по умолчанию 1.0 на серверах без атрибута generic.scale) |
set_scale(value) | double | nil | Задать масштаб сущности через атрибут generic.scale (не работает на серверах ниже 1.20.5) |
context.player GLOBAL
Таблица сущности-игрока. Наследует все поля Entity и Living Entity.
Properties
| Поле | Тип | Описание |
|---|---|---|
game_mode | string | survival, creative, adventure, spectator |
Methods
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
send_message(text) | string | nil | Отправить сообщение в чат. Поддерживает цветовые коды |
get_held_item() | — | table or nil | Возвращает поля type, amount, display_name, либо nil при пустой руке. type — имя Bukkit Material в верхнем регистре |
consume_held_item(amount?) | int (default 1) | nil | Уменьшить стак в руке на указанное количество |
has_item(material, amount?) | string (Material), int (default 1) | bool | Проверить инвентарь на наличие материала |
get_target_entity(range?) | num (default 50) | entity or nil | Лучевая трассировка к сущности, на которую смотрит игрок |
get_eye_location() | — | location | Позиция глаз игрока |
get_look_direction() | — | vector | Единичный вектор направления |
send_block_change(x, y, z, material, ticks?) | int, int, int, string (Material), int (optional) | bool | Отправить фальшивый блок. Автоматически сбрасывается после указанных тиков |
reset_block(x, y, z) | int, int, int | bool | Сбросить фальшивый блок на настоящий |
sleep(x, y, z) | num, num, num | nil | Анимация сна в кровати в указанной точке |
wake_up() | — | nil | Проснуться |
show_boss_bar(text, color?, progress, ticks?) | string, string (BarColor, default WHITE), num, int (optional) | nil | Отобразить полосу босса. Автоматически скрывается после тиков. Поддерживает цветовые коды |
hide_boss_bar() | — | nil | Убрать полосу босса |
show_action_bar(text, ticks?) | string, int (optional) | nil | Показать панель действий. Повторяется если ticks больше 0. Поддерживает цветовые коды |
show_title(title, subtitle?, fadeIn, stay, fadeOut) | string, string (default empty), int, int, int | nil | Показать экранный заголовок. Поддерживает цветовые коды |
context.world GLOBAL
Операции с миром для скриптов FreeMinecraftModels и других рантаймов ScriptInstance на базе Magmacore. Силы боссов EliteMobs начинают с этой же базовой таблицы и накладывают сверху дополнения и переопределения context.world EliteMobs, перечисленные ниже.
Методы context.world существуют в двух взаимозаменяемых формах: координатной (x, y, z) и в форме таблицы-локации (варианты *_at_location). Обе формы доступны на общих поверхностях, а силы боссов EliteMobs сохраняют общие базовые методы, добавляя специфичные для босса помощники с таблицей-локацией.
Properties
| Поле | Тип | Описание |
|---|---|---|
name | string | Имя мира |
Methods
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
get_block_at(x, y, z) | int, int, int | string | Имя Material (в нижнем регистре). Возвращает "air" если чанк не загружен |
set_block_at(x, y, z, material) | int, int, int, string (Material) | bool | Поставить блок в очередь, если материал корректен; незагруженные чанки пропускаются |
get_highest_block_y(x, z) | int, int | int | Y самого верхнего не-воздушного блока |
spawn_particle(particle, x, y, z, count?, dx?, dy?, dz?, speed?) | string (Particle), num, num, num, int?=1, num?=0, num?=0, num?=0, num?=0 | nil | Создать эффект частиц |
play_sound(sound, x, y, z, volume?, pitch?) | string (Sound), num, num, num, float?=1, float?=1 | nil | Воспроизвести звук |
strike_lightning(x, y, z) | num, num, num | nil | Ударить молнией |
get_time() | — | int | Время мира в тиках |
set_time(ticks) | long | nil | Установить время мира |
get_nearby_entities(x, y, z, radius) | num, num, num, num | table | Массив таблиц сущностей |
get_nearby_players(x, y, z, radius) | num, num, num, num | table | Массив таблиц сущностей-игроков |
spawn_entity(type, x, y, z) | string (EntityType), num, num, num | entity or nil | Заспавнить ванильную сущность; возвращает nil если тип сущности некорректен |
raycast(fx, fy, fz, dx, dy, dz, max?) | num, num, num, num, num, num, num?=50 | table | Возвращает поля hit_entity, hit_location, hit_block |
place_temporary_block(x, y, z, material, ticks?, require_air?) | int, int, int, string (Material), int?=0, bool?=false | bool | Поставить в очередь замену блока, которая автоматически возвращается через тики. Возвращает false если материал некорректен или чанк не загружен |
drop_item(x, y, z, material, amount?) | num, num, num, string (Material), int?=1 | entity or nil | Естественно выронить сущность-предмет на локации; возвращает nil если материал некорректен |
spawn_firework(x, y, z, colors, type?, power?) | num, num, num, table, string (FireworkEffect.Type)?=BALL, int?=1 | nil | Запустить фейерверк |
strike_lightning_at_location(loc) | location | nil | Ударить молнией |
play_sound_at_location(loc, sound, volume?, pitch?) | location, string (Sound), float?=1, float?=1 | nil | Воспроизвести звук |
spawn_particle_at_location(loc, particle, count?, dx?, dy?, dz?, speed?) | location, string (Particle), int?=1, num?=0, num?=0, num?=0, num?=0 | nil | Создать эффект частиц |
get_block_at_location(loc) | location | string | Имя Material (в нижнем регистре). Возвращает "air" если чанк не загружен |
set_block_at_location(loc, material) | location, string (Material) | bool | Поставить блок в очередь, если материал корректен; незагруженные чанки пропускаются |
place_temporary_block_at_location(loc, material, ticks?, require_air?) | location, string (Material), int?=0, bool?=false | bool | Поставить в очередь замену блока, которая автоматически возвращается через тики. Возвращает false если материал некорректен или чанк не загружен |
get_highest_block_y_at_location(loc) | location | int or nil | Y самого верхнего не-воздушного блока |
em helpers GLOBAL
Глобальные конструкторы-помощники, доступные в таблице em во всех рантаймах Lua MagmaCore.
Constructors
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
em.create_location(x, y, z, world?, yaw?, pitch?) | num, num, num, string?, num?, num? | location | Таблица локации с x, y, z, опциональными world, yaw, pitch и методом add(dx, dy, dz), изменяющим её на месте |
em.create_vector(x, y, z) | num, num, num | vector | Таблица вектора с x, y, z |
Zone Builders
Конструкторы зон возвращают обычные таблицы определений зон. Сферы, купола, цилиндры и кубоиды включают :set_center(location). Конусы и лучевые зоны включают :set_origin(location) и :set_destination(location).
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
em.zone.create_sphere_zone(radius) | num | zone | { kind = "sphere", radius = ... } |
em.zone.create_dome_zone(radius) | num | zone | { kind = "dome", radius = ... } |
em.zone.create_cylinder_zone(radius, height) | num, num | zone | { kind = "cylinder", radius = ..., height = ... } |
em.zone.create_cuboid_zone(x, y, z) | num, num, num | zone | Полуразмеры кубоида |
em.zone.create_cone_zone(length, radius) | num, num | zone | Определение конуса с сеттерами origin/destination |
em.zone.create_static_ray_zone(length, thickness) | num, num | zone | Определение статического луча |
em.zone.create_rotating_ray_zone(length, point_radius, animation_duration) | num, num, num | zone | Определение вращающегося луча |
em.zone.create_translating_ray_zone(length, point_radius, animation_duration) | num, num, num | zone | Определение перемещающегося луча |
em.location GLOBAL
Помощники запросов локаций, доступные через глобальную таблицу em. Реализованы на основе сервисов LocationQueryRegistry и LocationOwnership из Magmacore, которые собирают результаты от зарегистрированных провайдеров (регионы данжей/world-package EliteMobs, WorldGuard, GriefPrevention и т.д.). Все функции принимают таблицу локации ({x, y, z, world}) и возвращают безопасные значения по умолчанию, если локация некорректна.
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
em.location.is_in_dungeon(loc) | location | bool | Находится ли локация внутри любого зарегистрированного региона данжа |
em.location.is_protected(loc) | location | bool | Считает ли какой-либо провайдер локацию защищённой (WorldGuard, GriefPrevention, регионы EM и т.д.) |
em.location.owned_by(loc, namespace) | location, string | bool | Принадлежит ли локация указанному namespace (например, "EliteMobs") |
em.location.owners(loc) | location | table | Массив строк-неймспейсов, претендующих на владение этой локацией |
em.location.kinds_at(loc) | location | table | Массив тегов вида в этой локации (например, "elitemobs", "world_package", "open_world_dungeon", категория размера данжа) |
em.location.has_kind(loc, kind) | location, string | bool | Имеет ли локация указанный тег вида |
context.boss ELITEMOBS
Таблица сущности-босса для Lua-скриптов сил EliteMobs. Наследует все методы EliteMobs Living Entity. Свойства обновляются через специальные геттеры.
Properties
| Поле | Тип | Описание |
|---|---|---|
name | string | Отображаемое имя босса |
uuid | string | UUID элитной сущности |
health | double | Текущее здоровье (снимок) |
maximum_health | double | Максимальное здоровье (снимок) |
current_location | location | Позиция босса (снимок) |
level | int | Уровень босса |
damager_count | int | Количество игроков, нанёсших урон этому боссу |
is_in_combat | bool | Босс в бою |
exists | bool | Сущность босса существует |
Methods
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
is_alive() | — | bool | Жива ли сущность босса (живая проверка) |
get_health() | — | double | Текущее здоровье (актуальное) |
get_maximum_health() | — | double | Максимальное здоровье (актуальное) |
get_location() | — | location | Текущая позиция (актуальная) |
restore_health(amount) | double | nil | Исцелить босса |
despawn() | — | nil | Удалить сущность босса |
get_damager_count() | — | int | Актуальное число атакующих |
add_tag(tag, ticks?) | string, int?=0 | nil | Добавить тег, автоматически удаляется через тики если задано |
remove_tag(tag) | string | nil | Удалить тег |
has_tag(tag) | string | bool | Проверить тег |
reset_custom_name() | — | nil | Сбросить имя на значение по умолчанию из конфига |
play_sound_at_self(sound, volume?, pitch?) | string (ключ звука Minecraft, например "entity.wither.spawn"), float?=1, float?=1 | nil | Воспроизвести звук у босса |
play_sound_at_entity(sound, volume?, pitch?) | string (ключ звука Minecraft, например "entity.wither.spawn"), float?=1, float?=1 | nil | Воспроизвести звук у босса (псевдоним) |
spawn_particle_at_self(particle, count?) | string (Particle) or table, int?=1 | nil | Создать частицы у босса |
play_model_animation(name) | string | nil | Воспроизвести анимацию FMM-модели (требуется модель FMM) |
has_mount() | - | bool | Едет ли этот босс верхом на сущности-маунте |
get_mount() | - | entity or nil | Ссылка на текущую сущность-маунт, помеченную is_mount = true |
set_mount(entity) | entity table | bool | Заставляет босса ехать верхом на указанной сущности |
clear_mount() | - | bool | Заставляет босса покинуть текущий транспорт |
dismount() | - | bool | Псевдоним для clear_mount() |
navigate_to_location(location, speed?, force?, timeout?) | location, double?=1, bool?=false, int?=0 | nil | Проложить путь к локации |
send_message(text, range?) | string, double?=20 | nil | Отправить сообщение находящимся рядом игрокам. Поддерживает цветовые коды |
get_nearby_players(range) | double | table | Массив таблиц игроков в радиусе |
get_target_player() | — | player or nil | Текущая цель моба, если это игрок |
get_nearby_players_in_zone(zone) | zone table | table | Игроки внутри формы зоны |
get_ender_dragon_phase() | — | string or nil | Имя EnderDragon.Phase |
set_ender_dragon_phase(phase) | string (EnderDragon.Phase) | nil | Установить фазу дракона Края |
summon_reinforcement(file, zone?, level?) | string, zone or nil, int?=0 | entity or nil | Заспавнить босса-подкрепление |
summon_projectile(type, origin, dest, speed?, options?) | string (EntityType), location, location, double?=1, table | entity or nil | Запустить отслеживаемый снаряд; возвращает nil если тип или локации некорректны |
summon_projectile options
| Опция | Тип | По умолч. | Описание |
|---|---|---|---|
custom_damage | number | — | Переопределить урон снаряда |
detonation_power | string | — | Уровень мощности взрыва |
yield | number | — | Сила огненного шара |
incendiary | bool | true | Огненный шар поджигает |
gravity | bool | — | Включить гравитацию |
glowing | bool | false | Сделать светящимся |
invulnerable | bool | false | Сделать неуязвимым |
persistent | bool | true | Сделать постоянным |
duration | int | 0 | Автоудаление через тики |
effect | string | — | EntityEffect при спавне |
spawn_at_origin | bool | false | Спавн в точке origin вместо запуска от босса |
direction_only | bool | false | Задать направление без скорости (огненные шары) |
track | bool | true | Зарегистрировать как элитный снаряд |
on_land | function | — | Колбэк при приземлении снаряда: function(location, entity) |
max_ticks | int | 6000 | Максимум тиков до принудительного срабатывания колбэка приземления |
Zone/Particle Methods
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
spawn_particles_in_zone(zone, particle, ...) | zone, particle spec, coverage?=1.0 | nil | Заполнить зону частицами |
spawn_particles_in_zone_border(zone, particle, ...) | zone, particle spec, coverage?=1.0 | nil | Обвести зону частицами |
get_particles_from_self_toward_zone(zone, particle, speed?) | zone, string, double?=0.1 | table | Направленные частицы от босса к зоне |
get_particles_toward_self(zone, particle, speed?) | zone, string, double?=0.1 | table | Направленные частицы от зоны к боссу |
spawn_particles_with_vector(particles) | table | nil | Создать массив направленных частиц |
Special Power Support
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
start_tracking_fireball_system(speed?) | double?=0.5 | nil | Запустить отслеживающий ИИ огненных шаров |
handle_spirit_walk_damage(cause) | string (DamageCause) | nil | Обработать урон spirit walk по причине |
shield_wall_is_active() | — | bool | Активна ли стена щитов |
initialize_shield_wall(charges?) | int?=1 | nil | Активировать стену щитов |
shield_wall_absorb_damage(player, damage) | entity table, double | bool | Попытаться поглотить урон |
deactivate_shield_wall() | — | nil | Деактивировать стену щитов |
start_zombie_necronomicon(target, file) | entity table, string | nil | Запустить некрономикон по цели |
context.npc ELITEMOBS NPC
Таблица NPC для Lua-скриптов NPC EliteMobs. NPC-скрипты находятся в plugins/EliteMobs/npc_scripts/ и подключаются через список scripts: в конфиге NPC. NPC-скрипты работают на том же рантайме MagmaCore, что и все остальные поверхности, и получают полный общий контекст — context.world, context.zones, context.scheduler, context.cooldowns, context.log, context.event, context.player, context.state — плюс таблицу context.npc, доступную только для NPC и описанную здесь.
Properties
| Поле | Тип | Описание |
|---|---|---|
name | string | Отображаемое имя NPC |
filename | string | Имя файла конфига NPC |
uuid | string | UUID NPC во время выполнения |
activation_radius | double | Настроенный радиус активации |
current_location | location | Снимок локации, когда сущность NPC существует |
entity_type | string | Тип сущности Bukkit, когда сущность NPC существует |
Methods
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
is_valid() | - | bool | Валидна ли ещё базовая сущность NPC |
get_location() | - | location | Текущая локация NPC или запасной вариант со спавна |
get_eye_location() | - | location | Текущая локация глаз или запасной вариант со спавна |
get_activation_radius() | - | double | Текущий настроенный радиус активации |
get_nearby_players(radius) | double | table | Таблицы игроков рядом с NPC |
face_direction_or_location(target) | vector or location | nil | Повернуться в направлении или взглянуть на локацию |
say_greeting(player?) | player, UUID, name, or nil | nil | Отправить настроенное приветствие. По умолчанию вызвавшему игроку, если он доступен |
say_dialog(player?) | player, UUID, name, or nil | nil | Отправить настроенный диалог. По умолчанию вызвавшему игроку, если он доступен |
say_farewell(player?) | player, UUID, name, or nil | nil | Отправить настроенный текст прощания. По умолчанию вызвавшему игроку, если он доступен |
play_model_animation(name) | string | nil | Воспроизвести анимацию кастомной модели, если она доступна; безопасно ничего не делает иначе |
Специфичные для NPC хуки включают on_spawn, on_remove, on_game_tick, on_npc_interact, on_npc_proximity_enter и on_npc_proximity_leave. Полный рабочий процесс и детали кулдаунов смотрите в NPC-скриптах EliteMobs.
EliteMobs Living Entity Table ELITEMOBS
Таблицы сущностей, создаваемые внутри скриптов сил EliteMobs (из context.boss, данных событий, колбэков зон и запросов мира), используют расширенную таблицу живой сущности с дополнительными методами поверх глобальной Living Entity. context.boss наследует все эти методы.
Properties
| Поле | Тип | Описание |
|---|---|---|
name | string | Отображаемое имя сущности |
uuid | string | UUID сущности |
entity_type | string | Имя типа сущности |
is_player | bool | Является игроком |
is_monster | bool | Является монстром (Monster) |
is_elite | bool | Является сущностью EliteMobs |
is_valid | bool | Сущность всё ещё существует |
is_mount | bool | True, когда эта таблица сущности представляет маунт босса |
health | double | Текущее здоровье (снимок) |
maximum_health | double | Максимальное здоровье (снимок) |
current_location | location | Позиция сущности (снимок) |
game_mode | string | Игровой режим (ВЕРХНИЙ РЕГИСТР в EliteMobs: SURVIVAL, CREATIVE, ADVENTURE, SPECTATOR) |
Methods
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
is_alive() | — | bool | Жива ли сущность (живая проверка) |
is_ai_enabled() | — | bool | Включён ли ИИ |
is_frozen() | — | bool | Заморожен ли босс (только CustomBossEntity) |
is_on_ground() | — | bool | Стоит ли сущность на земле |
is_healing() | — | bool | Лечится ли элита |
get_location() | — | location | Текущая позиция (актуальная) |
get_eye_location() | — | location | Позиция глаз (актуальная) |
get_height() | — | double | Высота сущности |
get_health() | — | double | Текущее здоровье (актуальное) |
get_maximum_health() | — | double | Максимальное здоровье (актуальное) |
get_velocity() | — | vector | Текущий вектор скорости |
deal_damage(amount) | double | nil | Нанести обычный урон |
deal_custom_damage(amount) | double | nil | Нанести кастомный урон от атаки босса этой силы |
deal_damage_from_boss(amount) | double | nil | Нанести урон, приписанный сущности босса этой силы |
restore_health(amount) | double | nil | Исцелить сущность (использует исцеление EliteMobs если элита) |
play_sound_at_entity(sound, volume?, pitch?) | string (ключ звука Minecraft, например "entity.ender_dragon.growl"), float?=1, float?=1 | nil | Воспроизвести звук у сущности |
play_sound_at_self(sound, volume?, pitch?) | string (ключ звука Minecraft, например "entity.ender_dragon.growl"), float?=1, float?=1 | nil | Воспроизвести звук у сущности (псевдоним) |
spawn_particle_at_self(particle, count?) | string (Particle) or table, int?=1 | nil | Создать частицы у сущности |
spawn_particles_at_location(loc, particle, count?) | location, particle spec, int?=1 | nil | Создать частицы в локации |
teleport_to_location(location) | location | nil | Телепортировать сущность |
set_velocity_vector(vector) | vector | nil | Задать скорость |
set_gravity(enabled) | bool | nil | Установить гравитацию |
apply_push_vector(vector, additive?, delay?) | vector, bool?=false, int?=1 | nil | Применить скорость после задержки. additive прибавляет к текущей скорости |
push_relative_to(location, force?, extraX?, extraY?, extraZ?) | location, double?=1, double?=0, double?=0, double?=0 | nil | Оттолкнуть сущность от локации |
set_custom_name(name) | string | nil | Установить кастомное отображаемое имя. Поддерживает цветовые коды |
reset_custom_name() | — | nil | Сбросить имя на значение по умолчанию EliteMobs |
set_custom_name_visible(visible) | bool | nil | Переключить видимость имени |
set_ai_enabled(enabled, duration?) | bool, int?=0 | nil | Установить состояние ИИ. Автоматически возвращается через duration тиков |
set_awareness_enabled(enabled, duration?) | bool, int?=0 | nil | Установить внимательность моба. Автоматически возвращается через duration тиков |
face_direction_or_location(target) | vector or location | nil | Повернуться в направлении или взглянуть на локацию |
play_model_animation(name) | string | nil | Воспроизвести анимацию FMM-модели (требуется модель FMM) |
is_inside_vehicle() | - | bool | Едет ли сущность верхом на другой сущности |
has_vehicle() | - | bool | Есть ли у сущности транспорт |
get_vehicle() | - | entity or nil | Ссылка на текущую сущность-транспорт |
set_vehicle(entity) | entity table | bool | Заставляет эту сущность ехать на указанном транспорте |
leave_vehicle() | - | bool | Заставляет эту сущность покинуть текущий транспорт |
has_passengers() | - | bool | Есть ли у этой сущности пассажиры |
get_passenger_count() | - | int | Число пассажиров |
get_passengers() | - | table | Массив ссылок на сущности-пассажиры |
add_passenger(entity) | entity table | bool | Добавляет пассажира к этой сущности |
remove_passenger(entity) | entity table | bool | Удаляет пассажира с этой сущности |
eject_passengers() | - | bool | Высаживает всех пассажиров |
set_scale(scale, duration?) | double, int?=0 | nil | Задать масштаб сущности. Автоматически возвращается к 1.0 через duration тиков |
set_invulnerable(enabled, duration?) | bool, int?=0 | nil | Сделать неуязвимым. Автоматически возвращается через duration тиков |
set_healing(enabled) | bool | nil | Задать состояние исцеления элиты |
navigate_to_location(location, speed?, force?, timeout?) | location, double?=1, bool?=false, int?=0 | nil | Проложить путь к локации (только CustomBossEntity) |
add_tag(tag, ticks?) | string, int?=0 | nil | Добавить тег, автоматически удалить через тики |
remove_tag(tag) | string | nil | Удалить тег |
has_tag(tag) | string | bool | Проверить тег |
overlaps_box_at_location(center, halfX?, halfY?, halfZ?) | location, double?=0.5, double?=halfX, double?=halfX | bool | Пересекает ли описывающий бокс сущности бокс в локации |
remove_elite() | — | nil | Удалить через пайплайн удаления EliteMobs |
apply_potion_effect(type, duration, amplifier?) | string (PotionEffectType), int, int?=0 | nil | Применить эффект зелья |
set_equipment(slot, material, options?) | string (EquipmentSlot), string (Material), table | nil | Установить предмет в слот экипировки |
set_fire_ticks(ticks) | int | nil | Установить тики горения |
add_visual_freeze_ticks(ticks?) | int?=1 | nil | Добавить визуальные тики заморозки |
place_temporary_block(material, ticks?, requireAir?) | string (Material), int?=0, bool?=false | nil | Поставить временный блок в локации сущности |
set_equipment options
| Опция | Тип | По умолч. | Описание |
|---|---|---|---|
unbreakable | bool | false | Сделать предмет неломающимся |
enchantments | table | — | Массив таблиц {type = "ENCHANT_NAME", level = 1} |
EliteMobs Player Methods
Игроки в скриптах EliteMobs имеют все методы живой сущности EliteMobs плюс:
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
send_message(text) | string | nil | Отправить сообщение в чат. Поддерживает цветовые коды |
show_action_bar(text) | string | nil | Показать текст в панели действий. Поддерживает цветовые коды |
show_title(title, subtitle?, fadeIn?, stay?, fadeOut?) | string, string?="", int?=10, int?=40, int?=10 | nil | Показать экранный заголовок. Поддерживает цветовые коды |
show_boss_bar(title, color?, style?, duration?) | string, string (BarColor)?=WHITE, string (BarStyle)?=SOLID, int?=40 | nil | Показать полосу босса. Автоматически скрывается через duration тиков. Поддерживает цветовые коды |
run_command(command) | string | nil | Выполнить команду от имени игрока |
EliteMobs Entity Reference Table
Не-живые сущности (снаряды, падающие блоки, фейерверки), возвращаемые методами спавна EliteMobs, получают облегчённую таблицу-ссылку:
| Поле / Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
name | — | string | Имя сущности |
uuid | — | string | UUID сущности |
entity_type | — | string | Имя типа сущности |
is_player | — | bool | Всегда false |
is_elite | — | bool | Всегда false |
is_valid() | — | bool | Валидна ли сущность ещё (живая проверка) |
current_location | — | location | Позиция (снимок) |
get_location() | — | location | Текущая позиция (актуальная) |
get_velocity() | — | vector | Текущий вектор скорости |
is_on_ground() | — | bool | Стоит ли сущность на земле |
teleport_to_location(location) | location | nil | Телепортировать сущность |
set_velocity_vector(vector) | vector | nil | Задать скорость |
set_direction_vector(vector) | vector | nil | Задать направление (только огненные шары) |
set_yield(amount) | double | nil | Задать силу огненного шара |
set_gravity(enabled) | bool | nil | Установить гравитацию |
detonate() | — | nil | Взорвать фейерверк |
remove() | — | nil | Удалить сущность |
unregister(reason?) | string?=OTHER | nil | Снять регистрацию из трекера сущностей EliteMobs |
context.players ELITEMOBS
Таблица запросов игроков, доступная в Lua-скриптах сил EliteMobs. Предоставляет вспомогательные методы для поиска игроков относительно босса.
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
current_target() | — | player or nil | Актор события если игрок, либо текущая цель моба-босса если игрок |
nearby_players(radius) | double | table | Массив таблиц игроков в радиусе от босса |
all_players_in_world() | — | table | Массив таблиц всех игроков в мире босса |
context.entities ELITEMOBS
Таблица запросов сущностей, доступная в Lua-скриптах сил EliteMobs. Предоставляет вспомогательные методы для поиска сущностей относительно босса. Все запросы исключают самого босса.
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
get_nearby_entities(radius, filter?) | double, string?="living" | table | Сущности в радиусе. "all"/"entities" возвращает все сущности (включая неживые); любое другое значение возвращает живых сущностей, отфильтрованных по категории: "player(s)", "elite(s)", "mob(s)", либо по умолчанию = все живые |
get_entities_in_box(center, halfX, halfY, halfZ, filter?) | location, double, double, double, string?="living" | table | Живые сущности внутри осесогласованного бокса (те же значения фильтра, что выше; только режимы кроме all) |
get_all_entities(filter?) | string?="living" | table | Все живые сущности в мире босса (те же значения фильтра) |
get_direct_target_entity() | — | entity or nil | Прямая целевая сущность из вызвавшего события |
get_boss_spawn_location() | — | location | Изначальная локация спавна босса |
context.vectors ELITEMOBS
Утилиты векторной математики, доступные в Lua-скриптах сил EliteMobs.
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
get_vector_between_locations(from, to, options?) | location, location, table | vector | Вектор от источника к назначению. Опции могут изменить результат |
rotate_vector(vector, pitch?, yaw?) | vector, double?=0, double?=0 | vector | Повернуть вектор по pitch и yaw (в градусах) |
normalize_vector(vector) | vector | vector | Нормализовать до единичной длины |
context.state GLOBAL
Обычная Lua-таблица, живущая всё время существования экземпляра скрипта. Используйте её для хранения флагов, счётчиков, ID задач, состояний переключателей и любых данных, которые нужно разделять между хуками. context.state — это постоянная таблица, принадлежащая скрипту; большинство остальных таблиц контекста пересоздаются или лениво создаются заново по мере необходимости. FMM кэширует context.prop для каждого пропса ради производительности, но её актуальные поля, такие как current_location, всё равно обновляются при чтении.
context.state.counter = (context.state.counter or 0) + 1
context.cooldowns GLOBAL
Управление кулдаунами. Локальные кулдауны привязаны к экземпляру скрипта; глобальные кулдауны общие для всех скриптов на одной сущности/владельце. Если ключ не указан, по умолчанию используется имя файла скрипта.
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
local_ready(key?) | string (optional) | bool | Истёк ли локальный кулдаун |
local_remaining(key?) | string (optional) | int | Оставшиеся тики локального кулдауна (0 если готов) |
check_local(key?, duration) | string (optional), int | bool | Если готов, запускает кулдаун и возвращает true; иначе false |
set_local(duration, key?) | long, string (optional) | nil | Установить локальный кулдаун на duration тиков |
global_ready() | — | bool | Истёк ли глобальный кулдаун |
set_global(duration) | long | nil | Установить глобальный кулдаун на duration тиков |
В Lua-скриптах сил EliteMobs локальные кулдауны общие для всех сил на одной сущности босса, а глобальные кулдауны используют встроенную систему кулдаунов сил босса.
NPC-скрипты EliteMobs используют общий порядок кулдаунов check_local(key?, duration); см. NPC-скрипты.
context.scheduler GLOBAL
Планирование задач. Все задачи автоматически отменяются при выключении скрипта.
Global (Magmacore) variant
Скрипты FreeMinecraftModels и NPC-скрипты EliteMobs используют этот общий вариант. Приведённые ниже имена в стиле EliteMobs являются псевдонимами того же планировщика, поэтому на общих поверхностях допустим любой стиль именования.
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
run_later(ticks, callback) | int, function | int | Выполнить колбэк через указанное число тиков. Возвращает ID задачи |
run_repeating(delay, interval, callback) | int, int, function | int | Выполнять колбэк каждые interval тиков после начальной задержки. Возвращает ID задачи |
cancel(taskId) | int | nil | Отменить запланированную задачу |
EliteMobs variant
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
run_after(ticks, callback) | int, function | int | Выполнить колбэк через указанное число тиков. Возвращает ID задачи |
run_every(ticks, callback) | int, function | int | Выполнять колбэк каждые N тиков. Возвращает ID задачи |
cancel_task(taskId) | int | nil | Отменить запланированную задачу |
context.log GLOBAL
Утилиты логирования для отладки скриптов.
Global (Magmacore / FMM) variant
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
info(message) | string | nil | Записать info-сообщение |
warn(message) | string | nil | Записать предупреждение |
error(message) | string | nil | Записать сообщение об ошибке/предупреждение |
EliteMobs variant
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
info(message) | string | nil | Записать info-сообщение |
warn(message) | string | nil | Записать предупреждение |
debug(message) | string | nil | Записать отладочное сообщение (отображается как info с префиксом debug) |
context.zones GLOBAL
Создание и отслеживание зон для скриптов FreeMinecraftModels и других рантаймов ScriptInstance на базе Magmacore. Силы боссов EliteMobs используют вариант context.zones EliteMobs ниже.
Global (Magmacore) variant
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
create_sphere(x, y, z, radius) | num, num, num, num | int | Создать сферическую зону, возвращает дескриптор |
create_cylinder(x, y, z, radius, height) | num, num, num, num, num | int | Создать цилиндрическую зону, возвращает дескриптор |
create_cuboid(x, y, z, xSize, ySize, zSize) | num, num, num, num, num, num | int | Создать кубоидную зону, возвращает дескриптор |
watch(handle, on_enter?, on_leave?) | int, function?, function? | bool | Включить отслеживание зоны. Аргументы-функции активируют on_zone_enter / on_zone_leave; тела функций не вызываются напрямую. Хуки зон получают context.player / context.event.player для игрока, пересёкшего границу |
unwatch(handle) | int | nil | Прекратить отслеживание зоны |
EliteMobs variant
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
get_entities_in_zone(zone, options?) | zone table, table | table | Получить сущности внутри зоны. Опции: filter, mode |
get_locations_in_zone(zone, options?) | zone table, table | table | Получить локации внутри зоны. Опции: coverage, mode |
zone_contains(zone, location, mode?) | zone table, location, string?="full" | bool | Находится ли локация в зоне ("full" или "border") |
watch_zone(zone, callbacks, options?) | zone table, table, table? | nil | Отслеживать вход/выход зоны. Колбэки: {on_enter = fn, on_leave = fn}. Опции поддерживают filter и mode |
context.event GLOBAL
Таблица данных события для хука, вызвавшего текущее выполнение скрипта. Присутствует в хуках, управляемых событиями, и в общих хуках входа/выхода зон MagmaCore, предоставляющих актора-игрока; отсутствует в on_game_tick, запланированных колбэках и хуках жизненного цикла без игрока.
Global (Magmacore) variant
| Поле / Метод | Тип | Описание |
|---|---|---|
is_cancelled | bool | Состояние отмены на момент построения контекста; не обновляется после cancel() / uncancel() |
cancel() | method | Отменить событие, когда лежащее в основе событие Bukkit отменяемо |
uncancel() | method | Снять отмену события, когда лежащее в основе событие Bukkit отменяемо |
player | entity table | Игрок, участвующий в событии (если есть) |
Общие хуки зон заполняют player, но не подкреплены отменяемым событием Bukkit, поэтому cancel() и uncancel() там отсутствуют.
Для таблицы событий EliteMobs (с количеством урона, причинами урона и т.д.) смотрите EliteMobs Event Table.
context.script ELITEMOBS
Мост к системе Elite Script EliteMobs. Позволяет Lua-силам использовать YAML-системы таргетинга, зон и относительных векторов через Lua-таблицы с теми же именами полей, что и YAML-конфиги Elite Script.
Methods
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
target(spec) | table | target handle | Создать дескриптор цели из spec-таблицы цели Elite Script |
zone(spec) | table | zone handle | Создать дескриптор зоны из spec-таблицы зоны Elite Script |
relative_vector(spec, location?, zone?) | table, location, zone handle | vector handle | Создать относительный вектор из spec-таблицы вектора Elite Script |
damage(target, amount?, multiplier?) | target handle, double?=0, double?=1 | nil | Нанести урон всем сущностям в цели |
push(target, vector, additive?) | target handle, vector or vector handle, bool?=false | nil | Оттолкнуть целевые сущности скоростью |
set_facing(target, vector) | target handle, vector or vector handle | nil | Задать направление взгляда целевых сущностей |
spawn_particles(target, particles) | target handle, table or string | nil | Создать частицы в локациях цели |
Target Handle
Возвращается из context.script:target(spec). Spec-таблица использует те же ключи, что и YAML-конфиги целей Elite Script (например, {targetType = "NEARBY_PLAYERS", range = 20}).
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
entities() | — | table | Массив таблиц сущностей в цели |
locations() | — | table | Массив таблиц локаций в цели |
first_entity() | — | entity or nil | Первая сущность в цели |
first_location() | — | location or nil | Первая локация в цели |
Zone Handle
Возвращается из context.script:zone(spec). Spec-таблица использует те же ключи, что и YAML-конфиги зон Elite Script (например, {shape = "SPHERE", radius = 5, target = {targetType = "SELF"}}).
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
full_target(coverage?) | number | target handle | Дескриптор цели для внутренних локаций зоны |
border_target(coverage?) | number | target handle | Дескриптор цели для граничных локаций зоны |
full_locations(coverage?) | number | table | Массив внутренних локаций |
border_locations(coverage?) | number | table | Массив граничных локаций |
full_entities() | — | table | Сущности внутри зоны |
border_entities() | — | table | Сущности на границе зоны |
contains(location, mode?) | location, string?="full" | bool | Находится ли локация в зоне |
watch(callbacks, mode?) | table, string?="full" | int | Отслеживать вход/выход. Возвращает ID задачи |
Vector Handle
Возвращается из context.script:relative_vector(spec). Spec-таблица использует те же ключи, что и YAML-конфиги относительных векторов Elite Script.
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
resolve() | — | vector | Вычислить вектор для текущего контекста |
context.world (EliteMobs) ELITEMOBS
Специфичная для босса таблица мира для Lua-скриптов сил EliteMobs. Силы боссов начинают с общей таблицы world MagmaCore, поэтому координатные помощники, такие как get_block_at(...), set_block_at(...) и spawn_particle(...), остаются доступными. Методы ниже — это дополнения EliteMobs или специфичные для босса переопределения, в основном формы с таблицей-локацией и помощники для босса.
Block Queries
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
get_block_type_at_location(loc) | location | string or nil | Имя Material |
get_highest_block_y_at_location(loc) | location | int or nil | Y самого верхнего блока |
get_blast_resistance_at_location(loc) | location | double | Значение взрывоустойчивости |
is_air_at_location(loc) | location | bool | Блок является воздухом |
is_passable_at_location(loc) | location | bool | Блок проходим |
is_passthrough_at_location(loc) | location | bool | Блок не сплошной |
is_on_floor_at_location(loc) | location | bool | Воздух с твёрдым блоком ниже |
is_standing_on_material(loc, material) | location, string (Material) | bool | Блок ниже совпадает с материалом |
Block Manipulation
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
set_block_at_location(loc, material, requireAir?) | location, string (Material), bool?=false | nil | Поставить блок. Если requireAir равно true, заменяет только воздух |
place_temporary_block_at_location(loc, material, ticks?, requireAir?) | location, string, int?=0, bool?=false | nil | Поставить блок, автоудаление через тики. Если requireAir равно true, заменяет только воздух |
Spawning
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
spawn_boss_at_location(file, loc?, level?) | string, location?=boss loc, int?=boss level | entity or nil | Заспавнить кастомного босса |
spawn_custom_boss_at_location(file, loc, options?) | string, location, table | entity or nil | Заспавнить босса с опциями (level, silent, add_as_reinforcement, velocity) |
spawn_entity_at_location(type, loc, options?) | string (EntityType), location, table | entity or nil | Заспавнить ванильную сущность с опциями (velocity, duration, effect, on_land, max_ticks) |
spawn_falling_block_at_location(loc, material, options?) | location, string (Material), table | entity or nil | Заспавнить падающий блок (drop_item, hurt_entities, velocity, on_land) |
spawn_reinforcement_at_location(file, loc, level?, velocity?) | string, location, int?=0, vector | entity or nil | Заспавнить подкрепление, привязанное к боссу |
spawn_fireworks_at_location(loc, config) | location, table | entity or nil | Запустить фейерверк |
spawn_splash_potion_at_location(loc, config) | location, table | entity or nil | Бросить взрывное зелье |
Effects and Utility
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
play_sound_at_location(loc, sound, volume?, pitch?) | location, string (ключ звука Minecraft, например "entity.blaze.shoot"), float?=1, float?=1 | nil | Воспроизвести звук |
spawn_particle_at_location(loc, particle, count?) | location, string (Particle) or table, int?=1 | nil | Создать частицы |
strike_lightning_at_location(loc) | location | nil | Ударить молнией (обходит защиту EM) |
run_empowered_lightning_task_at_location(loc) | location | nil | Эффект усиленной молнии |
generate_fake_explosion(locations, center?) | table of locations, location | nil | Визуальный взрыв без урона |
spawn_fake_gold_nugget_at_location(loc, velocity, gravity?) | location, vector, bool?=false | fake projectile or nil | Создать визуальный снаряд золотого самородка |
run_fake_gold_nugget_damage(projectiles) | table | nil | Запустить проверку урона по фальшивым снарядам |
set_world_time(time) or (loc, time) | long, or location + long | nil | Установить время мира |
set_world_weather(weather, duration?) or (loc, weather, duration?) | string (CLEAR, RAIN, PRECIPITATION, THUNDER), int?=6000 | nil | Установить погоду |
run_console_command(command) | string | nil | Выполнить команду консоли |
generate_player_loot(times?) | int?=1 | nil | Выполнить столько прокруток лута для атаковавших |
drop_bonus_coins(multiplier?) | double?=2 | nil | Выронить бонусные монеты у босса |
context.settings (EliteMobs)
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
warning_visual_effects_enabled() | — | bool | Включены ли предупреждающие VFX в конфиге |
EliteMobs Event Table
Таблица context.event передаётся в хуки урона и спавна. Поля различаются в зависимости от типа события.
| Поле / Метод | Тип | Когда присутствует | Описание |
|---|---|---|---|
damage_amount | double | События урона | Сырое количество урона |
damage_cause | string | События урона | Имя DamageCause |
damager | entity table | События урона от сущности | Сущность, нанёсшая урон |
projectile | entity table | События урона снарядом | Снаряд, нанёсший урон |
spawn_reason | string | Событие спавна | Имя причины спавна |
entity | entity table | События смерти/зоны | Релевантная сущность |
cancel_event() | method | Большинство событий | Отменить событие |
set_damage_amount(amount) | method (double) | События урона | Переопределить количество урона |
multiply_damage_amount(multiplier) | method (double) | События урона | Умножить текущий урон |
context.item FMM
Доступно в скриптах предметов FMM. Определяет конкретный скриптованный предмет из надетых слотов игрока через PDC-тег.
Методы чтения проверяют надетый в данный момент подходящий предмет при вызове. Методы записи ставят свою мутацию в очередь на главный поток Bukkit и возвращают nil.
Properties
| Поле | Тип | Описание |
|---|---|---|
id | string | Идентификатор скрипта предмета |
Methods
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
material() | — | string | Имя Material |
get_amount() | — | int | Размер стака |
set_amount(n) | int | nil | Поставить в очередь установку размера стака |
consume(n?) | int?=1 | nil | Поставить в очередь уменьшение на n, удалить при нуле |
get_uses() | — | int | Счётчик использований из PDC |
set_uses(n) | int | nil | Поставить в очередь установку счётчика использований PDC |
get_durability() | — | table or nil | Возвращает поля current и max, либо nil если нет полосы прочности |
get_durability_percentage() | — | number or nil | Оставшаяся доля 0.0--1.0, либо nil |
use_durability(amount, can_break?) | int, bool?=false | nil | Поставить в очередь уменьшение прочности на абсолютное значение. При false ограничивается 1 |
use_durability_percentage(fraction, can_break?) | number, bool?=false | nil | Поставить в очередь уменьшение прочности на долю от максимума (0.0--1.0) |
get_name() | — | string or nil | Отображаемое имя |
set_name(s) | string | nil | Поставить в очередь установку отображаемого имени. Поддерживает цветовые коды |
get_lore() | — | table | Массив строк лора |
set_lore(table) | table | nil | Поставить в очередь установку лора из массива строк |
context.prop FMM
Доступно в скриптах пропсов FMM. Наследует все поля Entity от лежащего в основе armor stand.
Properties
| Поле | Тип | Описание |
|---|---|---|
model_id | string | Имя чертежа модели |
current_location | location | Текущая позиция пропса |
Methods
| Метод | Аргументы | Возвращает | Описание |
|---|---|---|---|
play_animation(name, blend?, loop?) | string, bool?=true, bool?=true | bool | Воспроизвести анимацию по имени |
stop_animation() | — | nil | Остановить все текущие анимации |
hurt_visual() | — | nil | Вспышка красного цвета, без урона |
pickup() | — | nil | Поставить в очередь удаление пропса и выпадение предмета размещения |
has_mount_points() | — | bool | Имеет ли пропс кости точек посадки |
mount(player) | entity table | bool | Поставить в очередь проверку посадки; true означает, что базовые ссылки были валидны |
dismount(player) | entity table | bool | Поставить в очередь проверку высадки; true означает, что базовые ссылки были валидны |
get_passengers() | — | table | Массив таблиц сущностей-сидящих игроков |
spawn_elitemobs_boss(file, x, y, z) | string, num, num, num | entity or nil | Заспавнить босса EliteMobs (требует EliteMobs) |
open_inventory(player, title, rows?) | entity table, string, int?=3 | bool | Поставить в очередь открытие постоянного сундука-инвентаря (число рядов ограничено 1--6). Заголовок поддерживает цветовые коды |
place_book(player) | entity table | bool | Поставить в очередь сохранение написанной/записываемой книги из руки игрока на пропсе |
read_book(player) | entity table | bool | Поставить в очередь открытие сохранённой книги для чтения |
take_book(player) | entity table | bool | Поставить в очередь возврат сохранённой книги игроку |
has_book() | — | bool | Сохранена ли книга |
drop_inventory() | — | bool | Поставить в очередь выпадение всех сохранённых предметов и очистку хранилища |
drop_book() | — | bool | Поставить в очередь выпадение сохранённой книги и очистку хранилища |
is_viewing_inventory(player) | entity table | bool | Открыт ли у игрока инвентарь этого пропса |
set_persistent_data(key, value) | string, string | bool | Сохранить строку в PDC пропса |
get_persistent_data(key) | string | string or nil | Получить строку из PDC пропса |
Color Codes
Все методы, отмеченные как поддерживающие цветовые коды, используют ChatColorConverter из Magmacore. Эти форматы можно свободно смешивать в любой строке:
Legacy codes
Используйте & за которым следует символ цвета/форматирования:
| Код | Цвет | Код | Формат |
|---|---|---|---|
&0 | Чёрный | &l | Жирный |
&1 | Тёмно-синий | &m | |
&2 | Тёмно-зелёный | &n | Подчёркнутый |
&3 | Тёмная бирюза | &o | Курсив |
&4 | Тёмно-красный | &r | Сброс |
&5 | Тёмно-фиолетовый | ||
&6 | Золотой | ||
&7 | Серый | ||
&8 | Тёмно-серый | ||
&9 | Синий | ||
&a | Зелёный | ||
&b | Бирюзовый | ||
&c | Красный | ||
&d | Светло-фиолетовый | ||
&e | Жёлтый | ||
&f | Белый |
Hex colors
Точный цвет RGB через 6-значный hex:
&#FF5500 -- префикс амперсанда
<#FF5500> -- синтаксис тега
Gradients
Плавная интерполяция между двумя или более цветами по тексту:
<gradient:#FF0000:#0000FF>Этот текст переходит от красного к синему</gradient>
<g:#FF0000:#00FF00:#0000FF>Трёхцветный градиент</g>
Краткая форма g работает идентично gradient. Можно соединять сколько угодно цветовых остановок.
Rainbow
Прохождение по полному спектру оттенков при полной насыщенности. Опциональный числовой аргумент сдвигает начальный оттенок (фазовое смещение):
<rainbow>Полный радужный текст</rainbow>
<r:0.5>Радуга со сдвинутым начальным оттенком</r>
Common Types
location
{ x = number, y = number, z = number, yaw = number, pitch = number, world = string }
vector
{ x = number, y = number, z = number }
entity table
Любая таблица с полем uuid. Таблицы игроков и сущностей из контекста работают напрямую:
context.player -- валидная таблица сущности
context.world:get_nearby_entities(x,y,z,r) -- возвращает массив таблиц сущностей
Next Steps
- Scripting Engine: Как работает движок — песочница, планирование, кулдауны, зоны
- EliteMobs: Getting Started | NPC Scripts | Hooks & Lifecycle | Boss & Entities | World & Environment | Zones & Targeting | Examples
- FreeMinecraftModels: Getting Started | Prop & Item API | Examples