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

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

CannonRTP использует один глобальный файл конфигурации плюс один файл конфигурации на каждую пушку.

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

  • Глобальная конфигурация: plugins/CannonRTP/config.yml
  • Конфигурации пушек: plugins/CannonRTP/cannons/<id>.yml

Плагин также включает пример пакета пушки под названием example_world_cannon. Он включён по умолчанию и размещается на спавне первого мира.

Структура глобальной конфигурации

Основная конфигурация организована под:

  • runtime.*
  • landing.*
  • messages.*
  • protection.*

Настройки выполнения

КлючПо умолчаниюПоведение
runtime.particleIntervalTicks15Как часто рендерятся частицы неактивной пушки (минимум 5)
runtime.cannonModelPriority[cannonrtp_premium, cannonrtp]Приоритетный список имён моделей FreeMinecraftModels, проверяемых сверху вниз. Первая найденная на сервере модель используется для любой пушки, у которой не задан собственный customModel. Если ни одна не найдена, используются частицы.

Настройки поиска посадки

КлючПо умолчаниюПоведение
landing.searchAttemptsPerTick2Попытки поиска на пушку на тик при предзагрузке (минимум 1)
landing.preloadedLocationsPerCannon10Общее количество безопасных назначений, которые плагин держит в очереди на пушку (минимум 1)
landing.chargedLocationsPerCannon5Сколько точек должна иметь пушка для готовности к запуску (минимум 1, ограничено preloadedLocationsPerCannon)
landing.searchTimeoutSeconds1000Время в секундах до отметки пушки как исчерпанной (минимум 10)
landing.slowFallingSeconds60Длительность Медленного падения после прибытия (секунды); эффект снимается досрочно при посадке (минимум 1)
landing.failOpenOnProtectionErrorsfalseЕсли API защиты выдаёт ошибку, посадка блокируется по умолчанию

Звуки посадки

Следующие ключи звуков настраиваемы:

  • landing.sounds.levitationStart.sound (по умолчанию: BLOCK_BEACON_ACTIVATE)
  • landing.sounds.levitationStart.volume (по умолчанию: 1.0)
  • landing.sounds.levitationStart.pitch (по умолчанию: 1.15)
  • landing.sounds.blastOff.sound (по умолчанию: ENTITY_GENERIC_EXPLODE)
  • landing.sounds.blastOff.volume (по умолчанию: 1.0)
  • landing.sounds.blastOff.pitch (по умолчанию: 0.9)

Значения звуков используют реестровые имена Sound Bukkit или ключи с пространством имён. Некорректные имена звуков записываются как предупреждения, и звук молча пропускается.

Списки опасных материалов

CannonRTP отклоняет кандидатов на посадку на основе двух списков материалов:

  • landing.unsafeGroundMaterials -- блоки, на которых нельзя стоять
  • landing.unsafeBodyMaterials -- блоки, которые не должны занимать пространство ног или головы

Опасные материалы пола по умолчанию:

  • LAVA
  • MAGMA_BLOCK
  • CAMPFIRE
  • SOUL_CAMPFIRE
  • CACTUS
  • POWDER_SNOW

Опасные материалы тела по умолчанию:

  • LAVA
  • WATER
  • FIRE
  • SOUL_FIRE
  • SWEET_BERRY_BUSH
  • POWDER_SNOW
  • COBWEB

Настройки сообщений

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

Плагин предоставляет следующие ключи сообщений:

КлючПлейсхолдерыОписание
messages.prefix--Префикс, используемый всеми сообщениями CannonRTP
messages.helpHeader$prefixЗаголовок, показываемый командой /cannonrtp
messages.createdCannon$prefix, $cannon, $id, $pathОтправляется после создания пушки
messages.deletedCannon$prefix, $cannonОтправляется после удаления пушки
messages.movedCannon$prefix, $cannonОтправляется после перемещения пушки
messages.targetWorldUpdated$prefix, $cannon, $worldОтправляется после изменения целевого мира пушки
messages.searchCenterUpdated$prefix, $cannonОтправляется после изменения центра поиска пушки
messages.reload$prefix, $countОтправляется после перезагрузки
messages.noPermission$prefix, $cannonОтправляется, когда игрок видит пушку, но не может её использовать
messages.cannonDisabled$prefix, $cannonОтправляется, когда игрок входит в отключённую пушку
messages.queueCalibration$prefix, $cannon, $queued, $target, $secondsОтправляется, пока пушка ещё предзагружается
messages.noValidLocationYet$prefix, $cannonОтправляется, когда безопасная точка ещё не найдена
messages.noValidLocationFound$prefix, $cannon, $reasonОтправляется, когда CannonRTP сдаётся после тайм-аута
messages.invalidConfiguration$prefix, $cannon, $reasonОтправляется при обнаружении ошибки конфигурации
messages.statusLine$prefix, $cannon, $status, $queued, $target, $reasonФормат строки, используемый /wc status и /wc list
messages.probeAllowed$prefixОтправляется командой /wc probe, когда точка корректна
messages.probeBlocked$prefix, $plugin, $reasonОтправляется командой /wc probe, когда точка заблокирована
messages.unknownCommand$prefixОтправляется, когда администратор использует неизвестную подкоманду

Сообщения заголовков

КлючПлейсхолдерыОписание
messages.titles.launchQueuedTitle$cannonЗаголовок, показываемый при начале запуска
messages.titles.launchQueuedSubtitle$cannonПодзаголовок, показываемый при начале запуска
messages.titles.destinationPreviewTitle$x, $y, $zЗаголовок, показываемый во время фазы поиска
messages.titles.destinationPreviewSubtitle$x, $y, $zПодзаголовок, показываемый во время фазы поиска
messages.titles.destinationConfirmedTitle$x, $y, $z, $worldЗаголовок, показываемый в начале фазы выстрела и снова после телепортации
messages.titles.destinationConfirmedSubtitle$x, $y, $z, $worldПодзаголовок, показываемый в начале фазы выстрела и снова после телепортации
messages.titles.arrivalSubtitles--Список заголовков; один выбирается случайно и показывается после того, как игрок опущен над местом назначения

Предварительный просмотр координат во время фазы поиска не показывает реальное место назначения — он показывает случайные координаты в области поиска пушки как визуальный эффект. Истинное место назначения раскрывается только в подтверждённом заголовке в начале фазы выстрела.

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

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

ПолеПо умолчаниюПримечания
isEnabledtrue для новых пушекОтключённые пушки не срабатывают
displayNameCannonRTP (или имя, указанное при создании)Используется в сообщениях, выводе статуса и плавающей метке
cannonLocationОбязательноГде находится триггер пушки
targetWorldТекущий мир при созданииДолжен быть загружен во время выполнения
searchCenternull (используется спавн целевого мира)Если не задан, плагин использует спавн целевого мира
triggerRadius1.75Радиус обнаружения ближайших игроков (минимум 0.5)
minSearchRadius500Минимальное расстояние поиска посадки от центра поиска (минимум 0)
maxSearchRadius5000Максимальное расстояние поиска посадки от центра поиска (всегда не менее minSearchRadius + 1)
verticalBoostTicks45Тики вертикальной скорости перед телепортацией (минимум 0)
verticalBoostVelocity1.35Вертикальная скорость при запуске (минимум 0)
enableParticlestrueУправляет анимацией частиц неактивной пушки (используется только при отсутствии пользовательской модели)
requiredPermissionпустоОпциональный дополнительный гейт разрешения для конкретной пушки
customModelпустоОпциональное имя модели FreeMinecraftModels для конкретной пушки. Если пусто, плагин использует runtime.cannonModelPriority

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

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

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

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

Интеграция FreeMinecraftModels

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

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

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

CannonRTP отклоняет кандидатов на посадку, если не проходит любая из этих проверок:

  • целевой мир не загружен
  • центр поиска недействителен
  • случайная выборка попадает за пределы границы мира
  • не найдена безопасная твёрдая поверхность
  • пространство ног или головы заблокировано
  • местность или блоки тела совпадают с настроенными списками опасных материалов
  • интеграция защиты блокирует посадку

Если пушка не может найти достаточно корректных точек до истечения landing.searchTimeoutSeconds, она становится исчерпанной и начинает возвращать настроенное сообщение об ошибке вместо запуска игроков. Сообщение об ошибке включает сводку наиболее частых причин отклонения.

Окно поиска пушки перезапускается, когда ей нужно пополнить использованные точки (например, после запуска игрока и освобождения слота).

Защита от повторного взаимодействия

CannonRTP предотвращает срабатывание пушки, пока игрок уже находится в активной последовательности запуска. После завершения текущего запуска (приземление или отключение) игрок может снова использовать пушку. Дополнительного таймера задержки нет.