Protection
Обзор
Protection объявлено устаревшим. Новых функций оно не получает, а v1.3 — финальный релиз совместимости. Новым проектам следует использовать официальное расширение Region от TypeWriter, описанное на docs.typewritermc.com. Эта страница сохранена для серверов, на которых Protection уже работает.
Protection позволяет определять регионы в веб-панели TypeWriter и задавать им правила, называемые флагами. Регион — это кубоид или полигональная призма, хранящиеся в артефакте, с приоритетом, владельцами, участниками, необязательным родительским регионом и списком флагов, таких как build, pvp или mob-spawning. Когда игроки действуют внутри региона, расширение отменяет или изменяет действие в соответствии с флагами.
Регионы также являются объектами TypeWriter. Вы можете запускать последовательность, когда игрок входит в регион или покидает его, фильтровать аудиторию по региону, группировать игроков по регионам, читать факт, сообщающий, находится ли игрок внутри, и показывать регионы на карте BlueMap.
Возможности
- Кубоидные и полигональные регионы — рисуйте регион в игре с помощью панели инструментов или импортируйте выделение WorldEdit.
- Регионы на весь мир — глобальный артефакт охватывает целые миры между двумя высотами.
- Пересечение и приоритет — регионы могут пересекаться; они вычисляются от наивысшего приоритета вниз.
- Родительские регионы — дочерний регион наследует флаги, владельцев и участников родителя.
- Много флагов — 99 ключей флагов, охватывающих строительство, бой, взрывы, окружающую среду, перемещение и чат.
- Владельцы и участники — эти игроки никогда не ограничиваются внутри своего региона.
- События регионов — события входа и выхода, фильтр аудитории, группа и факт.
- Инструменты проверки —
/typewriter protection inspect,infoиflagsпоказывают, какие флаги действуют там, где вы стоите. - Маркеры BlueMap — отображайте регион на BlueMap с вашими цветами.
- PlaceholderAPI — читайте регионы вокруг игрока и значения их флагов.
Установка
- Установите PacketEvents, который TypeWriter и так требует.
- По желанию: установите WorldEdit или FastAsyncWorldEdit, чтобы импортировать выделения командой
/typewriter protection import-we. - По желанию: установите MythicMobs, чтобы флаг
mob-spawningдействовал и на мобов Mythic, и BlueMap, чтобы показывать регионы на карте. - По желанию: PlaceholderAPI для плейсхолдеров.
- Положите JAR-файл Protection в
plugins/Typewriter/extensions/и перезапустите сервер.
Быстрый старт
Защитим зону спавна от строительства и PvP:
- В веб-панели TypeWriter откройте страницу manifest и добавьте Protection Region Artifact. Оставьте
artifactIdсгенерированным: в артефакте хранится форма региона. - Добавьте Protection Region Definition и свяжите артефакт в
artifact. Задайтеpriority(например10). - В
flagsдобавьте флаг с ключомbuildи булевым значением false. Таким же образом добавьтеpvp. Булев флаг со значением false запрещает действие. - Опубликуйте страницу.
- В игре выполните
/typewriter protection edit <definition>. В хотбаре появится панель инструментов: огненный стержень добавляет точку в блоке, на который вы смотрите, редстоун удаляет последнюю точку, компас переключает режимы кубоида и полигона, лаймовый краситель применяет выделение, а барьер отменяет. Для кубоида добавьте два противоположных угла и примените. - Зайдите в зону и попробуйте сломать блок. Проверить, что действует, можно командой
/typewriter protection inspect.
Сделайте выделение в WorldEdit, затем выполните /typewriter protection import-we <definition>. Ваше выделение будет преобразовано в точки, которые затем можно применить.
Владельцы и участники региона, а также игроки с typewriter.protection.bypass игнорируют все флаги этого региона. Проверяйте с игроком, которого нет в списке и который не является оператором с правом bypass.
Как это работает
Регион существует, только пока существует и опубликована запись его определения. Его форма хранится в артефакте, а определение содержит всё остальное.
Пересечение. Одна точка может принадлежать нескольким регионам. Они проверяются от наибольшего priority к наименьшему. Для булевых флагов достаточно одного флага false, чтобы запретить действие: регион с build true не отменяет запрет региона с меньшим приоритетом. Флаги, что-либо изменяющие (сообщения, действия, телепортации), применяются первым регионом, который их определяет.
Наследование. Регион с parentRegion также вычисляет флаги своих родителей. Владельцы и участники родителей добавляются к дочернему региону. Дочерний регион использует собственный priority либо родительский, если собственный равен 0.
Границы регионов. Вход и выход определяются, когда игрок переходит на другой блок или телепортируется. Игрок, зашедший на сервер внутри региона, вызывает событие входа при первом движении на новый блок.
Конфигурация
Сообщения и проверка. Добавьте одну запись Protection Settings, чтобы изменить способ показа запрещённых действий: чат, панель действий или боссбар, шаблоны MiniMessage ({reason}, {reason_line}, {region}, {flag}), частоту обновления режима проверки (inspectRefreshTicks, не менее 5 тиков) и текст сообщений команд в messages. Без этой записи используются значения по умолчанию. Читается только первая найденная запись.
BlueMap. В определении региона включите bluemapSettings.enabled, чтобы рисовать регион на BlueMap. Вы выбираете набор маркеров, цвета линий и заливки, подпись ({name}, {id}, {priority}) и то, будет ли маркер объёмным или плоским. Регионы синхронизируются при запуске BlueMap и при каждом изменении региона.
Владельцы и участники. owners и members содержат UUID игроков. Команды addowner и addmember принимают имя игрока и сохраняют UUID, если игрок известен серверу.
Флаги
Флаги добавляются в список flags определения региона. У каждого флага есть ключ и типизированное значение. Большинство флагов булевы: значение false запрещает действие. Приведённые ниже ключи флагов используются в веб-панели и в командах.
Строительство и взаимодействие
| Флаг | Что делает значение false |
|---|---|
build | Отменяет разрушение и установку блоков. Проверяется раньше block-break и block-place. |
block-break, block-place | Отменяет разрушение или установку блоков. |
use | Отменяет правые клики по дверям, кнопкам, рычагам, калиткам, люкам, табличкам, сундукам, бочкам, шулкерам, печам, наковальням, верстакам и другим станциям, компонентам редстоуна и подобным блокам. |
interact | Отменяет любое взаимодействие игрока, включая клики по воздуху. Используйте осторожно. |
chest-access | Отменяет открытие контейнеров (сундуков, бочек, шулкеров, воронок, раздатчиков, выбрасывателей, печей, варочных стоек). |
sleep | Отменяет использование кроватей. |
lighter | Отменяет использование огнива и огненных зарядов. |
vehicle-place, vehicle-destroy | Отменяет установку вагонеток и лодок или разрушение транспорта игроком. |
entity-painting-destroy | Отменяет разрушение игроком картин и рамок. |
crop-trampling | Отменяет вытаптывание пашни. |
pistons | Отменяет перемещение блоков поршнями в регион или из него. |
item-pickup, item-drop | Отменяет подбор или выбрасывание предметов. |
Бой и мобы
| Флаг | Что делает значение false |
|---|---|
pvp | Отменяет урон между игроками. |
mob-damage | Отменяет урон игроку, нанесённый сущностью, не являющейся игроком. |
damage-animals | Отменяет удары игрока по животным. |
tnt-damage, firework-damage | Отменяет урон от TNT и вагонеток с TNT либо от фейерверков. |
mob-spawning | Отменяет появление существ независимо от причины. Также действует на MythicMobs, если он установлен. |
btcmob-spawning, btcmob-damage | То же самое для существ BTC Mobs, если BTC Mobs установлен. |
exp-drops | Мобы, убитые в регионе, не роняют опыт. |
potion-splash | Отменяет попадание взрывных зелий в регион. |
Взрывы и окружающая среда
| Флаг | Что делает значение false |
|---|---|
creeper-explosion, tnt | Отменяет взрывы криперов либо TNT, вагонеток с TNT и якорей возрождения. |
ghast-fireball | Отменяет взрывы огненных шаров, черепов иссушителя, огненных шаров дракона и зарядов ветра. |
fire-spread | Отменяет распространение огня, горение блоков и поджог, не вызванный лавой или молнией. |
lava-fire, lightning | Отменяет поджог лавой, а также удары молнии и поджог от них. |
lava-flow, water-flow | Отменяет затекание лавы или воды в регион. |
ice-melt, snow-melt | Отменяет таяние льда или снега. |
ice-form, snow-fall | Отменяет образование льда или снега. |
frostwalker | Отменяет лёд от «Ледохода». |
leaf-decay, grass-growth, vine-growth | Отменяет опадание листвы, распространение травы, мицелия, тропинок и грибов и рост лиан. |
enderman-grief, ravager-grief | Отменяет изменение блоков эндерменами и разорителями. |
chunk-unload | Значение true удерживает чанки региона принудительно загруженными. |
Перемещение
| Флаг | Значение | Эффект |
|---|---|---|
entry, exit | булево | Значение false запрещает вход в регион или выход из него. Заблокированные игроки получают сообщение deniedEntry. |
entry-deny-action, exit-deny-action | действия | Действия TypeWriter, выполняемые для игрока при входе или выходе и при запрете входа или выхода. Для обычной логики используйте записи событий входа и выхода. |
ender-pearl | булево | Значение false отменяет телепортацию жемчугом Края в регион. |
fall-damage | булево | Значение false отменяет урон от падения. |
fly | булево | Значение false отключает полёт у игроков в регионе. |
walk-speed, fly-speed | число | Задаёт скорость ходьбы или полёта игроков внутри, от 0 до 1. Шкала Bukkit: 0.2 — обычная скорость ходьбы, 0.1 — обычная скорость полёта. За пределами региона значение по умолчанию восстанавливается. |
glide | текст | deny останавливает планирование на элитрах и переключение полёта. allow и default ничего не делают. |
join-location | позиция | Игроки, входящие на сервер или возрождающиеся внутри региона, перемещаются в эту позицию. |
Состояние игрока, чат и команды
| Флаг | Значение | Эффект |
|---|---|---|
hunger | булево | Значение false останавливает потерю сытости. |
heal-amount, heal-min-health, heal-max-health | число | Лечит игроков в регионе на heal-amount единиц здоровья каждую секунду между минимальным и максимальным здоровьем. Лечение приостанавливается на 5 секунд после любого урона. |
item-durability | булево | Значение true останавливает потерю прочности инструментами, оружием и бронёй. |
send-chat, receive-chat | булево | Значение false блокирует сообщения, отправленные из региона или полученные внутри него. |
chat-prefix, chat-suffix | текст | Добавляет текст до или после сообщений чата, отправленных из региона. |
blocked-cmds, allowed-cmds | список | Имена команд (без слэша), которые блокируются или всегда разрешены. * блокирует все команды. allowed-cmds имеет приоритет. |
worldedit | булево | Значение true блокирует команды WorldEdit для игроков в регионе. |
Не применяются этим расширением
Следующие флаги можно добавить в регион, но Protection ничего с ними не делает: passthrough, teleport, godmode, nether-portals, entry-min-level, entry-max-level, permit-completely, mobtrap-use, blocked-effects, heal-delay, biome (биом не изменяется), а также RPG-флаги mana-regen, mana-drain, double-drop, grappling-hook, fishing, alchemy, enchanting-override, elytra-auto-switch, ground-item-glow, pistol, corruption, auction, backpack, wardrobe, profession, experience, gathering и resin.
keep-inventory, keep-exp и invincible тоже не действуют на обычных игроков: они работают только для владельцев, участников и игроков с правом bypass.
Команды
Все команды являются подкомандами /typewriter (псевдоним /tw), например /typewriter protection list. Их могут использовать только игроки, и для них нужно typewriter.protection. Команды с пометкой admin требуют typewriter.protection.admin.
| Команда | Описание |
|---|---|
/typewriter protection list | Выводит загруженные регионы, сначала с наивысшим приоритетом. |
/typewriter protection edit <definition> | Начинает рисование региона в игре с помощью панели инструментов в хотбаре. Для глобального артефакта сразу применяет значения артефакта. |
/typewriter protection apply | Сохраняет текущее выделение. |
/typewriter protection cancel | Отменяет текущее выделение. |
/typewriter protection remove <1-16> | Удаляет одну точку текущего выделения. |
/typewriter protection import-we <definition> | Импортирует ваше выделение WorldEdit как точки региона. |
/typewriter protection info <region> | Показывает форму, приоритет, владельцев, участников и флаги региона. |
/typewriter protection flags <region> | Показывает, какие флаги действуют, унаследованы, переопределены или заблокированы наследованием. |
/typewriter protection inspect | Включает или выключает живой просмотр регионов и флагов там, где вы стоите, на панели действий и в боссбарах. |
/typewriter protection teleport <region> | Телепортирует в центр региона (или в точку спавна мира для глобального региона). |
/typewriter protection wand | Выдаёт палку с названием Protection Wand. В этом релизе она ни на что не реагирует. |
/typewriter protection setflag <region> <flag> <value> (admin) | Изменяет флаг в памяти. |
/typewriter protection clearflag <region> <flag> (admin) | Очищает флаг в памяти. |
/typewriter protection addowner|removeowner|addmember|removemember <region> <player> (admin) | Изменяет владельцев или участников в памяти. |
/typewriter protection delete <region> (admin) | Удаляет регион из памяти. |
/typewriter protection reload (admin) | Перезагружает регионы из опубликованных записей. |
/typewriter protection migrate-from-worldguard (admin) | Экспериментальный импорт границ кубоидов регионов WorldGuard. См. страницу об идентификаторе артефакта и миграции. |
setflag, clearflag, addowner, removeowner, addmember, removemember и delete не записывают изменения в ваши записи. Они изменяют загруженную копию, и изменения теряются при перезагрузке или перезапуске. Большинство флагов применяется из записи определения региона, поэтому setflag не меняет поведение build, pvp и большинства других флагов. Редактируйте флаги в веб-панели и публикуйте.
Права
| Право | Даёт доступ к |
|---|---|
typewriter.protection | Командам /typewriter protection, не относящимся только к администраторам. |
typewriter.protection.admin | Административным командам: флаги, владельцы, участники, удаление, перезагрузка и миграция из WorldGuard. |
typewriter.protection.bypass | Игнорированию всех флагов во всех регионах. |
Плейсхолдеры
Плейсхолдеры PlaceholderAPI имеют вид %typewriter_regions:<path>%. Они читают регионы в позиции игрока, отсортированные по приоритету; primary — первый из них.
| Плейсхолдер | Возвращает |
|---|---|
%typewriter_regions:count% | Сколько регионов содержат игрока. |
%typewriter_regions:list%, %typewriter_regions:list_names% | Id или названия этих регионов через запятую. |
%typewriter_regions:stack% | Приоритет и название каждого региона, разделённые |. |
%typewriter_regions:has:<id1>,<id2>% | true, если игрок находится в одном из перечисленных регионов. |
%typewriter_regions:primary% | Название региона с наивысшим приоритетом. Добавьте :id, :name, :priority, :overlap_count, :parent, :parent_name, :owner_count, :member_count, :is_global, :depth или :path для других полей. |
%typewriter_regions:active:<n>% | Те же поля для n-го региона стека, начиная с 1, например %typewriter_regions:active:2:id%. |
%typewriter_regions:flag:<flag>% | Значение флага в основном регионе. Добавьте :state, :source или :source_name, чтобы узнать, откуда оно берётся. |
%typewriter_regions:by_id:<region>:<field>% | Поле заданного региона, например %typewriter_regions:by_id:spawn:priority%. |
%typewriter_regions:exists:<region>% | true, если регион существует. |
%typewriter_regions:nearest% | Регион, минимальный угол которого ближе всего к игроку. Доступны те же поля. |
%typewriter_regions:can_build%, %typewriter_regions:can_interact% | false, если первый по приоритету регион, задающий build (или interact), установил его в false, иначе true. |
Переход на Region
Protection не получит новых функций, поэтому планируйте переход на официальное расширение Region от TypeWriter, описанное на docs.typewritermc.com. Эта страница не описывает Region: следуйте его собственной документации.
В Protection нет инструмента для преобразования его регионов в Region. Общий подход такой:
- Выведите список регионов командой
/typewriter protection listи для каждого запишите форму, приоритет, родителя, владельцев и участников и флаги (/typewriter protection info <region>). - Воссоздайте каждый регион в новом расширении и сопоставьте каждый флаг с эквивалентной настройкой там. Некоторые флаги Protection не применяются (см. выше), поэтому они могут вам не понадобиться.
- Проверьте на копии вашего сервера с игроками, которые не являются владельцами, участниками или обладателями bypass.
- Удалите записи Protection и JAR-файл, когда новые регионы заработают как ожидалось. Сначала сделайте резервную копию страниц и ресурсов TypeWriter.
Записи
Записей: 9, сгенерированы из исходного кода расширения.
События2
- On Enter Protection RegionWhen a player enters a protection region
- On Exit Protection RegionWhen a player exits a protection region
Факты1
- In Protection Region FactIf the player is in a protection region
Аудитории1
- Protection Region AudienceFilter players based on if they are in a protection region
Группы1
- Protection Region GroupAll players grouped by protection regions
Артефакты2
- Global Protection Region ArtifactPersistent data for a world-wide protection region
- Protection Region ArtifactPersistent data for a TypeWriter-managed protection region
Манифесты2
- Protection SettingsConfiguration for protection tooling
- Region DefinitionProtection region definition
Устранение неполадок
Флаг ничего не делает. Проверьте флаг в разделе Флаги: некоторые ключи не применяются. Также проверьте, что регион сохранён и опубликован, что игрок не является владельцем, участником или обладателем typewriter.protection.bypass и что значение — булево false для запрещающих флагов.
Регион существует, но игроки не находятся внутри. Форма берётся из артефакта. Определение без артефакта или артефакт, к которому вы ни разу не применили выделение, ничего не охватывает. Выполните /typewriter protection edit <definition> и примените выделение, затем проверьте командой /typewriter protection info <region>. Все точки должны находиться в одном мире, а для кубоида нужны 2 точки, для полигона — 3.
Панель инструментов выделения не появляется. Для edit нужно опубликованное определение региона, связанное с артефактом. Если в сообщении сказано, что определение не связано ни с одним артефактом, свяжите его. Для глобального артефакта панели инструментов нет: задайте worlds, minY и maxY в артефакте.
/typewriter protection import-we сообщает об отсутствии выделения или адаптера. WorldEdit или FastAsyncWorldEdit должен быть установлен, а выделение вы должны сделать в том мире, где стоите.
Изменение через setflag пропадает. Команда изменяет только память. Задайте флаг в определении региона и опубликуйте.
Миграция из WorldGuard не создала регионы. Миграция не создаёт определения регионов, флаги, владельцев или участников: она обрабатывает только границы кубоида каждого региона и читает регионы WorldGuard через первый загруженный мир. Создайте определения в веб-панели.
Игроков не телепортирует или не блокирует entry. Проверка выполняется, когда игрок переходит на другой блок или телепортируется. Вход через плагин, перемещающий игрока без события движения или телепортации, не замечается.
Связанные расширения
- MythicMobs —
mob-spawningтакже действует на мобов Mythic.