Интеграции CannonRTP с защитой
CannonRTP может проверять кандидатов на точки приземления против нескольких плагинов защиты, прежде чем поставить их в очередь использования.
Поддерживаемые интеграции
Поддерживаются следующие плагины защиты:
- WorldGuard (также требует WorldEdit, который WorldGuard в любом случае требует сам)
- Towny
- Lands
- GriefPrevention
- HuskTowns
- HuskClaims
Все они объявлены как softdepend в plugin.yml (наряду с WorldEdit и FreeMinecraftModels). CannonRTP работает и без единого из них; отсутствующие плагины молча пропускаются.
Как работают проверки защиты
- Адаптеры проверяются в фиксированном порядке: WorldGuard, Towny, Lands, GriefPrevention, HuskTowns, HuskClaims.
- Адаптер защиты регистрируется только тогда, когда (а) его переключатель
enabledравенtrueвprotection.ymlИ (б) плагин присутствует и загружен на сервере. - Первый адаптер, который блокирует точку, останавливает проверку и становится сообщаемой причиной.
- Если API защиты выбрасывает ошибку, CannonRTP по умолчанию блокирует это приземление (fail-closed, безопасный отказ). Это управляется параметром
failOpenOnProtectionErrorsвlanding.yml. - Если адаптер включён и его плагин присутствует, но сам адаптер не загружается (отсутствующий класс, несовместимая версия API), CannonRTP записывает в лог
Failed to hook into <plugin>и сохраняет для этого плагина заглушку в цепочке проверок, поэтому сбой не трактуется так, будто плагин не установлен. Что делает заглушка, определяетfailOpenOnProtectionErrors:false(по умолчанию): заглушка блокирует каждую точку с причинойits adapter failed to initialize (...), и пушки прекращают поиск. Каждая пушка помечается как Exhausted с защищённой территорией в качестве причины, вместо того чтобы перебирать точки, которые заведомо не пройдут проверку. Исправьте интеграцию или отключите её вprotection.yml, затем выполните/wc reload.true: заглушка разрешает каждую точку, а остальные адаптеры продолжают работать.
Глобальный переключатель безопасности при сбоях API:
failOpenOnProtectionErrors(вlanding.yml)
По умолчанию: false
Когда установлено в true, CannonRTP разрешит приземления, если плагин защиты не может быть безопасно опрошен. При false ошибка запроса блокирует эту точку с причиной its API could not be queried safely. При любом значении ошибки запроса записываются в лог как предупреждения.
Команда /wc probe
Администраторы могут выполнить /wc probe в любой точке, чтобы проверить её во всех включённых адаптерах защиты. Результат указывает заблокировавший точку плагин и причину либо подтверждает разрешение адаптеров. Команда не проверяет рельеф, вертикальное пространство для высадки или радиус поиска и не вызывает событие API для проверки местоположения.
Файл конфигурации
Все переключатели защиты находятся в plugins/CannonRTP/protection.yml. Ключи расположены на верхнем уровне (например, worldGuard.enabled, а не protection.worldGuard.enabled).
Поведение по каждому плагину
WorldGuard
Ключи конфигурации:
worldGuard.enabledworldGuard.allowGlobalRegionOnlyworldGuard.allowBuildAllowedRegionsworldGuard.allowPassthroughRegions
Поведение по умолчанию:
- включено по умолчанию
- точки, покрытые только регионом
__global__, разрешены по умолчанию - регионы с
build=ALLOWразрешены по умолчанию - регионы с
passthrough=ALLOWразрешены по умолчанию - другие совпадающие защищённые регионы блокируются
Towny
Ключи конфигурации:
towny.enabledtowny.allowWildernesstowny.allowNationZonestowny.allowClaimedTownBlocks
Поведение по умолчанию:
- включено по умолчанию
- миры, где Towny не включён, всегда разрешены
- дикая местность разрешена
- зоны наций блокируются
- застолблённые блоки городов блокируются
Lands
Ключи конфигурации:
lands.enabledlands.allowUnclaimedAreaslands.allowClaimedAreas
Поведение по умолчанию:
- включено по умолчанию
- незастолблённые области разрешены
- застолблённые области блокируются
GriefPrevention
Ключи конфигурации:
griefPrevention.enabledgriefPrevention.allowWildernessgriefPrevention.allowAdminClaimsgriefPrevention.allowPlayerClaims
Поведение по умолчанию:
- включено по умолчанию
- дикая местность разрешена
- административные клеймы блокируются
- игровые клеймы блокируются
HuskTowns
Ключи конфигурации:
huskTowns.enabledhuskTowns.allowWildernesshuskTowns.allowAdminClaimshuskTowns.allowRegularClaimshuskTowns.allowFarmClaimshuskTowns.allowPlotClaims
Поведение по умолчанию:
- включено по умолчанию
- дикая местность разрешена
- административные клеймы блокируются
- обычные городские клеймы блокируются
- фермерские клеймы блокируются
- участковые клеймы блокируются
HuskClaims
Ключи конфигурации:
huskClaims.enabledhuskClaims.allowWildernesshuskClaims.allowAdminClaimshuskClaims.allowPlayerClaims
Поведение по умолчанию:
- включено по умолчанию
- дикая местность разрешена
- административные клеймы блокируются
- игровые клеймы блокируются
Проверки за пределами защиты по-прежнему действуют
Интеграции с защитой — только одна часть проверки приземления. Точка всё равно может быть отклонена, потому что:
- она находится за границей мира
- не существует безопасной поверхности
- пространство для ног или головы заблокировано
- рельеф совпадает с настроенными списками небезопасных материалов
- слушатель
CannonRTPLocationValidationEventотклоняет её (см. API события)
Отчёт о неудачах
Когда пушка истощается (расходует searchTimeoutAttempts, не найдя достаточно подходящих точек, или прекращает поиск раньше из-за того, что не загрузилась интеграция защиты), статус и сообщения игрокам перечисляют категории отказов за это окно поиска. Защищённая территория упоминается, даже если по этой причине отклонён всего один кандидат. Несмотря на выражения вроде «most samples» в стандартном тексте, сообщение не содержит количеств и не ранжирует категории по частоте. Используйте его для выбора проверок, которые стоит исследовать, а не для определения самой частой причины отказа.