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

Protection

Устаревший движок регионов с флагами и событиями регионов. Для новых проектов используйте официальное расширение Region.

БесплатныеУстаревшиеv1.3Мир и строительство
Это расширение устарело и больше не получает новых функций. Используйте Region (official TypeWriter extension).

Обзор​

Устарело

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 — читайте регионы вокруг игрока и значения их флагов.

Установка​

  1. Установите PacketEvents, который TypeWriter и так требует.
  2. По желанию: установите WorldEdit или FastAsyncWorldEdit, чтобы импортировать выделения командой /typewriter protection import-we.
  3. По желанию: установите MythicMobs, чтобы флаг mob-spawning действовал и на мобов Mythic, и BlueMap, чтобы показывать регионы на карте.
  4. По желанию: PlaceholderAPI для плейсхолдеров.
  5. Положите JAR-файл Protection в plugins/Typewriter/extensions/ и перезапустите сервер.

Быстрый старт​

Защитим зону спавна от строительства и PvP:

  1. В веб-панели TypeWriter откройте страницу manifest и добавьте Protection Region Artifact. Оставьте artifactId сгенерированным: в артефакте хранится форма региона.
  2. Добавьте Protection Region Definition и свяжите артефакт в artifact. Задайте priority (например 10).
  3. В flags добавьте флаг с ключом build и булевым значением false. Таким же образом добавьте pvp. Булев флаг со значением false запрещает действие.
  4. Опубликуйте страницу.
  5. В игре выполните /typewriter protection edit <definition>. В хотбаре появится панель инструментов: огненный стержень добавляет точку в блоке, на который вы смотрите, редстоун удаляет последнюю точку, компас переключает режимы кубоида и полигона, лаймовый краситель применяет выделение, а барьер отменяет. Для кубоида добавьте два противоположных угла и примените.
  6. Зайдите в зону и попробуйте сломать блок. Проверить, что действует, можно командой /typewriter protection inspect.
Импорт выделения WorldEdit

Сделайте выделение в 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. Общий подход такой:

  1. Выведите список регионов командой /typewriter protection list и для каждого запишите форму, приоритет, родителя, владельцев и участников и флаги (/typewriter protection info <region>).
  2. Воссоздайте каждый регион в новом расширении и сопоставьте каждый флаг с эквивалентной настройкой там. Некоторые флаги Protection не применяются (см. выше), поэтому они могут вам не понадобиться.
  3. Проверьте на копии вашего сервера с игроками, которые не являются владельцами, участниками или обладателями bypass.
  4. Удалите записи Protection и JAR-файл, когда новые регионы заработают как ожидалось. Сначала сделайте резервную копию страниц и ресурсов TypeWriter.

Записи​

Записей: 9, сгенерированы из исходного кода расширения.

События2
Факты1
Аудитории1
Группы1
Артефакты2
Манифесты2

Устранение неполадок​

Флаг ничего не делает. Проверьте флаг в разделе Флаги: некоторые ключи не применяются. Также проверьте, что регион сохранён и опубликован, что игрок не является владельцем, участником или обладателем 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.