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

Конфигурация CannonRTP

CannonRTP разделяет свои глобальные настройки между несколькими файлами в plugins/CannonRTP/, плюс по одному файлу конфигурации на каждую пушку в plugins/CannonRTP/cannons/.

Структура файлов

ФайлНазначение
plugins/CannonRTP/config.ymlФлаги времени выполнения верхнего уровня (состояние установки, язык, интервал частиц, приоритет моделей пушек, id ресурса на Spigot, переключатель автообновления Nightbreak)
plugins/CannonRTP/landing.ymlНастройки поиска приземления (размер очереди, попытки таймаута, длительность замедленного падения, списки небезопасных материалов, поведение при отказе)
plugins/CannonRTP/sounds.ymlЗвуки, проигрываемые во время последовательности запуска
plugins/CannonRTP/messages.ymlВсе сообщения, префиксы и пулы тайтлов, видимые игрокам
plugins/CannonRTP/protection.ymlПереключатели интеграции с каждым плагином защиты
plugins/CannonRTP/cannons/<id>.ymlОдин файл на пушку (каждая может управлять несколькими размещениями)
plugins/CannonRTP/cannons_disabled/Папка для хранения конфигов пушек, которые поставляются с пакетами контента, но в данный момент отключены. Меню /wc setup перемещает файлы между cannons/ и cannons_disabled/ при включении или отключении пакета контента.
plugins/CannonRTP/content_packages/<package>.ymlСгенерированные метаданные для каждого пакета контента Nightbreak (версия, ссылка для загрузки, префиксы, используемые для поиска его файлов). Обычно не редактируются вручную.

Плагин из коробки поставляется с тремя примерами конфигов пушек:

  • example_cannonrtp.yml — пустой эталонный шаблон (отображаемое имя Example World Cannon), по умолчанию отключён. Используйте его как справочник по YAML при написании конфигов пушек вручную.
  • cannonrtp_free_cannon.yml — включён, без размещений, указывает на бесплатную FMM-модель cannonrtp.
  • cannonrtp_premium_cannon.yml — включён, без размещений, указывает на премиум FMM-модель cannonrtp_premium.

Ни в одном из них по умолчанию не заполнено поле cannonLocations, поэтому в мире ничего не появится, пока администратор не выполнит /wc create или /wc place.

config.yml

КлючПо умолчаниюПоведение
setupDonefalseОтслеживает, была ли завершена первоначальная настройка Nightbreak
languageenglishФайл переводов для загрузки. Релиз 1 поставляется только на английском; ключ существует для будущих языковых пакетов
runtime.particleIntervalTicks15Точный интервал между отрисовками частиц покоящейся пушки, в тиках сервера (минимум 1; задайте 1, чтобы отрисовывать каждый тик)
runtime.launchCooldownSeconds30Сколько секунд игрок должен ждать между принятыми запусками из пушки (минимум 0; задайте 0, чтобы отключить). Отменённые события CannonRTPLaunchEvent задержку не запускают.
runtime.cannonModelPriority[cannonrtp_premium, cannonrtp]Список приоритетов имён моделей FreeMinecraftModels, проверяемый сверху вниз. Первая найденная на сервере модель используется для любой пушки, у которой не задан собственный customModel. Если ни одна не найдена, используется запасной вариант с орбитальными частицами.
runtime.spigotResourceId""Id ресурса на Spigot, используемый проверкой версий. Оставьте пустым, чтобы отключить.
nightbreak.autoDownloadPluginUpdatesfalseДобавлено встроенной (shaded) библиотекой MagmaCore. Когда true, CannonRTP автоматически загружает доступные файлы обновлений плагина и контента при запуске (применяются после следующего перезапуска сервера). Автоматическая загрузка плагина требует действительного токена аккаунта Nightbreak и активного членства покровителя. Оставьте false, чтобы вместо этого использовать игровую кнопку обновления.

landing.yml

КлючПо умолчаниюПоведение
preloadedLocationsPerCannon10Общее число безопасных точек назначения, которые плагин пытается держать в очереди для каждой пушки (минимум 1)
chargedLocationsPerCannon1Сколько точек должна содержать пушка, прежде чем её метка статуса переключится на Ready (минимум 1, ограничено preloadedLocationsPerCannon). Пушки будут запускать игроков, как только в очереди появится хотя бы одна точка — этот порог влияет только на визуальную метку.
searchTimeoutAttempts100Сколько неудачных попыток поиска прежде, чем пушка будет помечена как Exhausted (минимум 10). Попытки поиска глобально ограничены одной в тик (20 в секунду), справедливо разделяемой между всеми активными пушками.
slowFallingSeconds60Максимальная длительность эффекта Замедленного падения после высадки (минимум 1). Эффект снимается раньше, когда игрок приземляется.
failOpenOnProtectionErrorsfalseЕсли API плагина защиты выдаёт ошибку, по умолчанию блокировать приземление. Установите true, чтобы разрешать приземления, когда плагин защиты не может быть безопасно опрошен.
unsafeGroundMaterials[LAVA, MAGMA_BLOCK, CAMPFIRE, SOUL_CAMPFIRE, CACTUS, POWDER_SNOW]Материалы, делающие поверхность приземления недопустимой
unsafeBodyMaterials[LAVA, WATER, FIRE, SOUL_FIRE, SWEET_BERRY_BUSH, POWDER_SNOW, COBWEB]Материалы, делающие пространство ног или головы при приземлении недопустимым

Материалы — это имена из enum Bukkit Material. Некорректные записи логируются как предупреждения и пропускаются.

sounds.yml

КлючПо умолчаниюПоведение
levitationStart.soundBLOCK_BEACON_ACTIVATEЗвук, проигрываемый при начале фазы поиска
levitationStart.volume1.0
levitationStart.pitch1.15
blastOff.soundENTITY_GENERIC_EXPLODEЗвук, проигрываемый в начале фазы выстрела
blastOff.volume1.0
blastOff.pitch0.9

Значения звуков могут быть именами из enum Bukkit Sound (например, BLOCK_BEACON_ACTIVATE) или ключами с пространством имён (например, minecraft:block.beacon.activate). Неверные имена звуков логируются как предупреждения, и звук молча пропускается на этом шаге.

messages.yml

Все сообщения поддерживают градиенты MagmaCore, теги MiniMessage и устаревшие цветовые коды &. Плейсхолдер $prefix заменяется на настроенный префикс.

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

Поля конфигурации пушки

Каждый файл пушки (plugins/CannonRTP/cannons/<id>.yml) хранит эти поля:

ПолеПо умолчаниюПримечания
isEnabledtrue (для новых пушек)Отключённые пушки не срабатывают и отображаются как Disabled
displayNameCannonRTP (или имя, переданное при создании)Используется в сообщениях, выводе статуса и плавающей метке
cannonLocationsпустой списокСписок сериализованных строк world,x,y,z,pitch,yaw. Одна конфигурация пушки может породить много размещений в мире. Управляется через /wc create, /wc place, /wc remove.
targetWorldтекущий мир на момент созданияПоддерживается межмировое нацеливание — установите это поле, чтобы приземлять игроков в мире, отличном от того, где находится пушка. Должен быть загружен во время выполнения; пока это не так, пушка прекращает предзагрузку, и в детализации /wc status отображается Target world <name> is not loaded.
searchCenternullЕсли не задано, плагин ведёт поиск от собственной позиции пушки (когда пушка находится в целевом мире) или от точки спавна целевого мира
triggerRadius1.75Радиус вокруг пушки, используемый для обнаружения близлежащих игроков (минимум 0,5 блока)
minSearchRadius500Минимальная дистанция поиска приземления от центра поиска (минимум 0)
maxSearchRadius5000Максимальная дистанция поиска приземления (всегда ограничена снизу значением minSearchRadius + 1)
launchWarmupTicks42Длительность фазы Searching в тиках (минимум 1)
verticalBoostTicks45Длительность фазы Firing в тиках (минимум 0)
verticalBoostVelocity1.35Восходящая скорость, применяемая каждый тик фазы выстрела (минимум 0)
enableParticlestrueУправляет покоящейся орбитальной анимацией частиц. Отрисовывается только при отсутствии активной пользовательской модели и при наличии игрока в радиусе 36 блоков.
requiredPermission""Опциональный дополнительный гейт прав для конкретной пушки. Игроки с cannonrtp.use, но без этого права, видят настроенное сообщение об отказе в правах.
customModel""Опциональное имя модели FreeMinecraftModels для конкретной пушки. Если пусто, плагин использует runtime.cannonModelPriority.

Значения по умолчанию при создании пушки

При выполнении /wc create <id>:

  • id пушки переводится в нижний регистр, а символы, отличные от a-z, 0-9, _, -, заменяются на _
  • displayName устанавливается в CannonRTP, если не использовалось /wc create <id> <display_name> (подчёркивания в <display_name> преобразуются в пробелы)
  • текущая позиция игрока добавляется в cannonLocations
  • targetWorld устанавливается в текущий мир игрока
  • searchCenter не задаётся (использует собственную позицию пушки, если она находится в целевом мире, иначе точку спавна целевого мира)

После создания плагин отвечает абсолютным путём к файлу конфигурации, чтобы вы могли вручную отредактировать displayName, customModel, requiredPermission, радиусы поиска и параметры запуска.

Интеграция с FreeMinecraftModels

Когда пушка разрешается в корректную модель FreeMinecraftModels — либо через собственное поле customModel, либо через глобальный список runtime.cannonModelPriority — и FreeMinecraftModels установлен:

  • в позиции пушки создаётся статичная сущность модели
  • плавающая текстовая метка поднимается на 2,0 блока над пушкой (против 1,2 без модели), чтобы не пересекаться с моделью
  • покоящаяся анимация орбитальных частиц подавляется, пока модель активна
  • во время запуска пушка проигрывает свою анимацию fire (если она существует) в начале фазы поиска; игрок скрывается Невидимостью во время фазы поиска, чтобы анимация читалась чётко

Если FreeMinecraftModels включается или отключается во время работы сервера, кэш моделей пушек инвалидируется, и визуальные эффекты обновляются в следующий тик.

Запасной вариант с частицами при простое

Когда модель не активна, пушка отрисовывает пару орбитирующих частиц DUST_COLOR_TRANSITION + FIREWORK вокруг центра пушки. Цвета меняются в зависимости от эффективного состояния пушки:

СостояниеОсновнойАкцент
Readyоранжевый (255, 179, 71)бледно-золотой (255, 241, 168)
Searching (заряжается / поддерживает)тёплый оранжевый (255, 140, 66)золотой (255, 209, 102)
Exhaustedкрасный (255, 107, 107)тёплый оранжевый (255, 159, 104)

Покоящиеся частицы отрисовываются только когда игрок находится в радиусе 36 блоков от пушки, enableParticles имеет значение true и не активна пользовательская модель.

Плавающая метка статуса

Каждая пушка создаёт билбордовый TextDisplay над своим основанием, показывающий отображаемое имя и текущий статус (Ready, Charging, Maintaining, Exhausted или Disabled). Метка не сохраняется в данные чанка и автоматически воссоздаётся при перезагрузке чанка. Она находится в 1,2 блока над пушкой или в 2,0 блока, когда активна модель FreeMinecraftModels.

Поведение проверки во время выполнения

CannonRTP отвергает кандидаты на точки приземления, когда не проходит любая из этих проверок:

  • целевой мир выгружен
  • центр поиска не удаётся определить (это происходит только тогда, когда целевой мир выгружен)
  • случайная выборка попала за границу мира
  • чанк-кандидат не удалось загрузить
  • не найдена безопасная твёрдая нежидкая поверхность
  • любой блок 52-блочной колонки высадки над точкой приземления заблокирован
  • поверхность или любой блок колонки совпадает с настроенными списками небезопасных материалов
  • интеграция с защитой блокирует приземление
  • слушатель CannonRTPLocationValidationEvent отклоняет кандидата

После searchTimeoutAttempts неудачных поисков (по умолчанию 100) предзагрузка может перейти в Exhausted. Уже имеющиеся в очереди точки остаются доступны. Сообщение об ошибке с частыми причинами отказа появляется только при активации с пустой очередью. Освобождение места после запуска сбрасывает счётчик.

Перед использованием сгенерируйте или исследуйте настроенную область поиска в целевом мире. CannonRTP загружает существующие чанки без генерации местности; неисследованный радиус может не дать ни одной точки назначения.

Защита взаимодействия

CannonRTP не позволяет игроку активировать пушку, пока он уже находится в активной последовательности запуска. Это срабатывание остаётся заблокированным до тех пор, пока запуск не завершится и игрок действительно не покинет радиус срабатывания пушки, поэтому возврат к пушке не может немедленно начать новый запуск. После принятия запуска общая для менеджера персональная задержка также блокирует все пушки на runtime.launchCooldownSeconds (по умолчанию 30 секунд). Задержка переживает отключения игрока, пока сервер продолжает работать, использует монотонные часы и сбрасывается командой /wc reload или выключением плагина. Слишком ранний вход в пушку отправляет настраиваемое сообщение launchCooldown; задайте в конфигурации значение 0, чтобы отключить это ограничение.