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

Lua-скриптинг: перечисления и значения

webapp_banner.jpg

Эта страница содержит ссылки на 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
Sounds accept two formats

Каждый 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)
sphereSPHERE
domeDOME
cylinderCYLINDER
cuboidCUBOID
coneCONE
static_raySTATIC_RAY
rotating_rayROTATING_RAY
translating_rayTRANSLATING_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 они малополезны на практике. Полную семантику см. в Целях EliteScriptcontext.script использует ровно эту реализацию.


Дальнейшие шаги