Lua-скриптинг: перечисления и значения
Эта страница содержит ссылки на Spigot Javadocs для каждого типа перечисления, используемого методами Lua в EliteMobs. Используйте в своём Lua-коде точное имя константы перечисления в виде строки (например, "FLAME", "ZOMBIE", "STONE").
- Написание должно в точности совпадать с именем константы перечисления
- Регистр обычно нормализуется внутренне, но для надёжности придерживайтесь написания из Javadoc
- Обработка недопустимых значений зависит от метода: одни записывают предупреждение, другие возвращают
nilили ничего не делают, а API с проверкой входных данных могут выдать ошибку Lua
Справочник перечислений
| Перечисление | Для чего используется | Javadoc |
|---|---|---|
BarColor | Цвет полосы босса | BarColor |
BarStyle | Стиль полосы босса | BarStyle |
DamageCause | Фильтрация по причине урона | EntityDamageEvent.DamageCause |
EnderDragon.Phase | Управление фазой дракона Края | EnderDragon.Phase |
EntityEffect | Визуальные эффекты сущностей | EntityEffect |
EntityType | Спавн сущностей | EntityType |
EquipmentSlot | Слоты снаряжения сущности | EquipmentSlot |
FireworkEffect.Type | Форма фейерверка | FireworkEffect.Type |
Material | Блоки и предметы | Material |
Particle | Эффекты частиц | Particle -- см. также список допустимых частиц для преобразования устаревших имён |
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").
Это значит, что выбирать формат больше не нужно, — но опечатка в любой из форм молча игнорируется, потому что резервный путь не может отличить неверное имя перечисления от кастомного звука пака, который просто не установлен.
Значения вне 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" молча возвращает все живые сущности.
context.script:zone({...}) использует другой набор фильтров в верхнем регистре (PLAYER, ELITE, LIVING), потому что он запускает движок EliteScript.
Значения погоды
Используются в context.world:set_world_weather(weather).
| Значение | Эффект |
|---|---|
CLEAR | Ясное небо |
PRECIPITATION / RAIN | Дождь |
THUNDER | Гроза |
Типы целей
Используются в спецификациях context.script:target().
| Значение | Во что разрешается |
|---|---|
SELF | Сущность босса |
SELF_SPAWN | Точка спавна босса |
DIRECT_TARGET | Сущность, участвующая в текущем событии |
NEARBY_PLAYERS | Игроки в пределах range от босса |
NEARBY_MOBS | Мобы, не являющиеся игроками, в пределах range |
NEARBY_ELITES | Элитные мобы в пределах range |
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 |
Последние четыре разрешаются только при наличии окружающего EliteScript, из которого можно наследовать, поэтому из Lua они малополезны на практике. Полную семантику см. в Целях EliteScript — context.script использует ровно эту реализацию.
