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

Сообщения и тайтлы CannonRTP

Все строки, видимые игрокам, находятся в plugins/CannonRTP/messages.yml и полностью переопределяемы. Каждое значение поддерживает градиенты MagmaCore (<gradient:#start:#end>...</gradient>), теги MiniMessage и устаревшие цветовые коды &. Плейсхолдер $prefix в любом сообщении заменяется на настроенное значение prefix.

Релиз 1 поставляется только на английском; ключ language в config.yml существует, чтобы будущие языковые пакеты могли его использовать.

Префикс и заголовок справки

КлючПлейсхолдерыПо умолчаниюОписание
prefix<gradient:#ff9a3d:#ffd166>CannonRTP</gradient> &8|Префикс, вставляемый в каждое сообщение через $prefix
helpHeader$prefix$prefix &fCannonRTP commands:Приветственная строка, выводимая в начале /cannonrtp, /wc help и /wc list / /wc status

Сообщения чата

КлючПлейсхолдерыОписание
createdCannon$prefix, $cannon, $id, $pathОтправляется после успешного /wc create
placedCannon$prefix, $cannonОтправляется после успешного /wc place
removedCannon$prefix, $cannonОтправляется после успешного /wc remove
deletedCannon$prefix, $cannonОтправляется после успешного /wc delete
targetWorldUpdated$prefix, $cannon, $worldОтправляется после успешного /wc target
searchCenterUpdated$prefix, $cannonОтправляется после успешного /wc center
reload$prefix, $countОтправляется после завершения /wc reload
noPermission$prefix, $cannonОтправляется, когда игрок входит в пушку, для которой ему не хватает requiredPermission (ограничено одним отправлением в 3 секунды на игрока на пушку)
launchCooldown$prefix, $cannon, $seconds, $unitОтправляется, когда игрок входит в любую пушку до истечения задержки после принятого запуска. $seconds округляется вверх; $unit — это second или seconds. Уведомления ограничены одним отправлением в 3 секунды на игрока на пушку.
cannonDisabled$prefix, $cannonЗарезервировано. Отключённые пушки полностью исключены из цикла тиков, поэтому текущая сборка никогда не отправляет это сообщение — ключ записывается в messages.yml, но его ничто не читает.
queueCalibration$prefix, $cannon, $queued, $target, $attemptsОтправляется, когда пушка ещё выполняет предзагрузку, а игрок входит в неё. В этом сообщении $target — это chargedLocationsPerCannon; $attempts — оставшийся бюджет попыток поиска до истощения пушки
noValidLocationYet$prefix, $cannonОтправляется, когда в очереди ещё нет безопасных точек
noValidLocationFound$prefix, $cannon, $reasonОтправляется, когда CannonRTP сдаётся после исчерпания searchTimeoutAttempts. $reason — сводка наиболее частых причин отклонения, разделённая запятыми
invalidConfiguration$prefix, $cannon, $reasonОтправляется при обнаружении ошибки конфигурации (например, незагруженный целевой мир)
statusLine$prefix, $cannon, $status, $queued, $target, $reasonФормат строки, используемый для каждой записи /wc list и /wc status. В этом сообщении $target — это preloadedLocationsPerCannon (полная цель резерва, а не порог зарядки)
probeAllowed$prefixОтправляется командой /wc probe, когда точка корректна
probeBlocked$prefix, $plugin, $reasonОтправляется командой /wc probe, когда точка заблокирована
unknownCommand$prefixЗарезервировано. Нераспознанные подкоманды обрабатываются общим менеджером команд MagmaCore, поэтому текущая сборка никогда не отправляет это сообщение — ключ записывается в messages.yml, но его ничто не читает.

invalidConfiguration служит также общей строкой ошибки для администраторов: именно оно отправляется командами /wc list / /wc status, когда не размещено ни одной пушки, и командами /wc create, /wc place, /wc remove, /wc delete, /wc target и /wc center, когда id или мир не удаётся определить.

Метки статуса

Слова статуса, используемые плавающей табличкой пушки, командой /wc list и плейсхолдером $status, настраиваются.

КлючПо умолчаниюКогда показывается
statusLabels.readyReadyУ пушки достаточно предзагруженных точек для запуска игроков
statusLabels.chargingChargingПушка всё ещё ищет свою первую безопасную точку назначения
statusLabels.maintainingMaintainingПушка пополняет резерв точек назначения
statusLabels.exhaustedExhaustedПушке не удалось найти безопасную точку назначения
statusLabels.disabledDisabledПушка отключена в своей конфигурации
statusLabels.invalidInvalidЗарезервировано. Текущая сборка определяет любой статус через три внутренних состояния поиска (READY, SEARCHING, EXHAUSTED) плюс проверку отключения, поэтому эту метку ничто не отображает. Пушка с незагруженным targetWorld сохраняет свою метку состояния поиска и сообщает о проблеме через $reason.

Это обычные строки, поэтому градиенты и цветовые коды работают и здесь. То, что вы зададите, становится значением $status в statusLine.

Пулы тайтлов

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

КлючПлейсхолдерыФазаОписание
titles.launchQueuedTitles$cannonначало SEARCHINGПул тайтлов, показываемых при начале запуска
titles.launchQueuedSubtitles$cannonначало SEARCHINGПул сабтайтлов, сопровождающих тайтл начала запуска
titles.destinationPreviewTitlesSEARCHINGПул тайтлов, показываемых, пока мелькают случайные координаты. Одна запись выбирается в начале фазы и удерживается всю фазу.
titles.destinationPreviewSubtitle$x, $y, $zSEARCHING (каждый тик)Одиночная строка сабтайтла, показывающая мелькающие случайные координаты
titles.destinationConfirmedTitles$x, $y, $z, $worldначало FIRINGПул тайтлов, показываемых в момент фиксации настоящей точки назначения
titles.destinationConfirmedSubtitle$x, $y, $z, $worldначало FIRINGОдиночный сабтайтл, показывающий реальную точку назначения
titles.arrivalTitles$x, $y, $z, $worldTELEPORTINGПул тайтлов, показываемых сразу после телепортации высадки
titles.arrivalSubtitles$x, $y, $z, $worldTELEPORTINGПул сабтайтлов, показываемых вместе с тайтлом прибытия

Плейсхолдеры подставляются в тайтл и его сабтайтл из одного и того же набора, поэтому любой плейсхолдер, указанный для одной половины пары, работает и в другой. $prefix разрешается везде, хотя внутри тайтла он нужен редко.

Одиночное значение против пула

destinationPreviewSubtitle и destinationConfirmedSubtitle — это одиночные строки, потому что они содержат динамические координаты, которые всегда должны отображаться. Остальные слоты тайтлов и сабтайтлов — пулы, и из каждого при запуске случайным образом выбирается одна запись.

Пулы тайтлов по умолчанию

Значения по умолчанию, поставляемые в messages.yml:

launchQueuedTitlesLaunching, Ignition, Liftoff (оранжево-золотой градиент)

launchQueuedSubtitles$cannon (тёплый золотой)

destinationPreviewTitlesCalibrating, Scanning, Targeting (оранжево-золотой)

destinationConfirmedTitlesLocked, Set, Engaged (зелёный)

arrivalTitlesArrived, Touchdown, Airborne (холодный белый)

arrivalSubtitlesGood luck., Stick the landing., Eyes up. Ground soon., Wind check complete. Good luck., Drop zone acquired. Good luck.

Справочник плейсхолдеров

ПлейсхолдерЗначение
$prefixЗначение messages.yml -> prefix
$cannondisplayName пушки
$idId конфигурации пушки (очищенный, в нижнем регистре)
$pathАбсолютный путь к только что созданному файлу конфигурации пушки (только в createdCannon)
$worldИмя целевого мира
$countКоличество пушек, загруженных после перезагрузки
$queuedТекущий размер очереди пушки
$targetЗависит от контекста: chargedLocationsPerCannon в queueCalibration, preloadedLocationsPerCannon в statusLine. Оба ключа находятся в landing.yml.
$attemptsОставшиеся попытки поиска до истощения пушки
$secondsОставшаяся задержка запуска, округлённая вверх
$unitsecond или seconds — в соответствии с $seconds
$statusСоответствующее значение statusLabels.* — по умолчанию Ready, Charging, Maintaining, Exhausted или Disabled
$reasonДетализация статуса или неудачи в читаемом виде
$pluginИмя плагина защиты, который заблокировал точку
$x, $y, $zКоординаты (один знак после запятой)

Примечание о локализации

Каждый ключ, перечисленный выше, проходит через процессор цветов/градиентов MagmaCore перед показом игроку. Языковые пакеты, ориентированные на language в config.yml, будут подключены через тот же хук translatable() (на момент Релиза 1 — это passthrough).