Lua-скриптинг: перечисления и значения
На этой странице приведены ссылки на типы значений Spigot, используемые методами Lua в EliteMobs. Передавайте имена констант, например "FLAME", "ZOMBIE" и "STONE", строками в Lua-коде. Используйте значения, доступные в версии API вашего сервера.
- Написание должно в точности совпадать с именем константы перечисления
- Регистр обычно нормализуется внутренне, но для надёжности придерживайтесь написания из Javadoc
- Обработка недопустимых значений зависит от метода: одни записывают предупреждение, другие возвращают
nilили ничего не делают, а API с проверкой входных данных могут выдать ошибку Lua
Справочник перечислений
| Перечисление | Для чего используется | Javadoc |
|---|---|---|
BarColor | Цвет полосы босса | BarColor |
BarStyle | Стиль полосы босса | BarStyle |
DamageCause | Фильтрация по причине урона | EntityDamageEvent.DamageCause |
EnderDragon.Phase | Управление фазой дракона Края | EnderDragon.Phase |
EntityEffect | Визуальные эффекты сущностей | EntityEffect |
EntityType | Спавн сущностей | EntityType |
EquipmentSlot | Слоты снаряжения сущности; damage_equipment принимает только HAND, OFF_HAND, HEAD, CHEST, LEGS, FEET | EquipmentSlot |
FireworkEffect.Type | Форма фейерверка | FireworkEffect.Type |
Material | Блоки и предметы | Material |
Particle | Эффекты частиц | Particle. Преобразование старых имён применяется к действиям EliteScript с частицами; нативным Lua-функциям частиц нужны текущие имена API. |
PotionEffectType | Эффекты зелий | PotionEffectType |
Sound | Воспроизведение звука | Sound |
Каждый Lua-помощник для звука (boss:play_sound_at_self, entity:play_sound_at_entity, world:play_sound_at_location) разрешает строку в два шага: сначала он пробует имя перечисления Spigot Sound (в верхнем регистре, поэтому "entity_blaze_shoot" работает), а если это не удалось — трактует строку как ключ звука с пространством имён (в нижнем регистре, поэтому работают и "entity.blaze.shoot", и ваш собственный ключ из ресурс-пака "mypack:boss.roar").
Оба пути удаляют пробелы по краям. Ключ без пространства имён использует minecraft. Ключи неверного формата игнорируются; синтаксически допустимые ключи отправляются клиенту без проверки существования звука. Поэтому ключ с опечаткой или отсутствующий звук ресурс-пака может ничего не воспроизвести.
Значения вне Spigot
Эти значения специфичны для EliteMobs и отсутствуют в Spigot Javadocs:
Формы зон
Используются в нативных определениях зон, в поле kind, и в спецификациях зон скриптовой утилиты, в поле shape. Эти значения чувствительны к регистру. Для нативных форм используйте нижний регистр, для форм скриптовой утилиты верхний.
Нативное (kind) | Скриптовая утилита (shape) |
|---|---|
sphere | SPHERE |
dome | DOME |
cylinder | CYLINDER |
cuboid | CUBOID |
cone | CONE |
static_ray | STATIC_RAY |
rotating_ray | ROTATING_RAY |
translating_ray | TRANSLATING_RAY |
Фильтры сущностей
Используются в параметрах запросов context.zones и context.entities. Регистр не учитывается; допустимые псевдонимы указаны ниже.
| Фильтр | Чему соответствует |
|---|---|
player / players | Только игроки |
elite / elites | Только элитные мобы |
mob / mobs | Живые сущности, не являющиеся игроками (включая элит) |
living | Все живые сущности, включая игроков (по умолчанию) |
all / entities | Каждая сущность, включая неживые. Распознаётся только методом context.entities:get_nearby_entities |
Неизвестные фильтры обрабатываются как living, поэтому опечатка вроде "playr" включает все типы живых сущностей в области запроса. Эти нативные запросы исключают самого босса. Запросы сущностей зоны ищут в мире босса; запросы прямоугольной области ищут в мире указанного центра.
get_nearby_entities(radius, filter) проверяет сферическое расстояние для фильтров живых сущностей. С all или entities он вместо этого ищет в параллелепипеде, вытянутом на radius вдоль каждой оси, и возвращает таблицы ссылок на сущности, включая неживые. Другие нативные запросы обрабатывают эти два фильтра как living.
context.script:zone({...}) использует другой набор фильтров в верхнем регистре (PLAYER, ELITE, LIVING), потому что он запускает движок EliteScript.
Значения погоды
Используются в context.world:set_world_weather(weather). Значения переводятся в верхний регистр без удаления пробелов. Неизвестное значение записывает предупреждение и оставляет погоду без изменений.
| Значение | Эффект |
|---|---|
CLEAR | Ясное небо |
PRECIPITATION / RAIN | Дождь |
THUNDER | Гроза |
Типы целей
Это значения целей EliteScript. context.script:target() использует тот же механизм разрешения, но не предоставляет данные унаследованного действия или приземления. Цели зоны нужно получать через full_target() или border_target() объекта зоны.
| Значение | Во что разрешается |
|---|---|
SELF | Сущность босса |
SELF_SPAWN | Точка спавна босса при разрешении позиций; сам босс при разрешении сущностей |
DIRECT_TARGET | Прямая цель текущего события; ничего не выбирает, если событие её не предоставляет |
NEARBY_PLAYERS | Игроки в параллелепипеде, простирающемся от босса на range вдоль каждой оси |
NEARBY_MOBS | Живые сущности, кроме игроков, в этой области, исключая босса |
NEARBY_ELITES | Элитные мобы в этой области, исключая босса |
ALL_PLAYERS | Все игроки в сети |
WORLD_PLAYERS | Все игроки в мире босса |
ZONE_FULL | Сущности/локации внутри объёма зоны |
ZONE_BORDER | Сущности/локации на границе зоны |
LOCATION | Конкретная локация из поля location спецификации |
LOCATIONS | Несколько конкретных локаций из списка locations спецификации |
LANDING_LOCATION | Место приземления падающего блока или призванной сущности |
ACTION_TARGET | Наследует цели окружающего действия EliteScript |
INHERIT_SCRIPT_TARGET | Наследует цель вызывающего EliteScript |
INHERIT_SCRIPT_ZONE_FULL | Наследует зону вызывающего EliteScript; текущий выбор сущностей использует её границу. См. ограничения наследуемых зон. |
INHERIT_SCRIPT_ZONE_BORDER | На границе зоны вызывающего EliteScript; о разрешении позиций см. ограничения наследуемых зон. |
Не используйте LANDING_LOCATION, ACTION_TARGET и три значения INHERIT_SCRIPT_* с context.script:target(). У объекта Lua нет соответствующего состояния действия, наследования или приземления; разрешение может не вернуть целей или завершиться ошибкой. У отдельной спецификации ZONE_FULL или ZONE_BORDER также нет зоны. Семантику действий YAML см. в Целях EliteScript.
