WorldGuard: настройка защиты регионов и борьба с грифом

WorldGuard: настройка защиты регионов и борьба с грифом

Гриф убивает сервер быстрее любого DDoS: один раз кто-то затопил спавн лавой, и пол-онлайна ушло в обиду. Этот гайд про WorldGuard - стандарт де-факто для защиты территорий на Paper и Spigot. Разберём установку, создание регионов, флаги, иерархию, типичные грабли и как закрыть лазейки, про которые забывают почти все админы.

Что такое WorldGuard и зачем он нужен

WorldGuard - плагин от EngineHub, который добавляет регионы с настраиваемыми правилами поведения. Внутри региона вы решаете, можно ли ломать блоки, открывать сундуки, спавнить мобов, взрывать TNT, пускать огонь и так далее. Всё это управляется флагами, которых в плагине больше восьмидесяти.

Технически WorldGuard зависит от WorldEdit: выделение области под регион делается родными командами WorldEdit (//wand, //pos1, //pos2). Без WorldEdit плагин просто не запустится. Это нормальный подход в экосистеме EngineHub, к этому быстро привыкаешь.

Если коротко, WorldGuard решает три задачи: защита спавна и важных построек, разделение зон по правилам (PvE/PvP/арены), выдача регионов игрокам в качестве клейма с владельцами и членами.

Установка на Paper или Spigot 1.20+

WorldGuard поддерживает Paper и Spigot, начиная с 1.13, и обновляется быстро под новые версии. На 2026 год актуальная сборка работает на Paper 1.20.x и 1.21.x. С Folia ситуация неоднозначная: официальной полной поддержки нет, асинхронные регионы пока не реализованы, поэтому в продакшене лучше остаться на Paper.

Шаги установки простые:

# скачайте WorldEdit и WorldGuard (стабильные сборки) с EngineHub
cd /opt/minecraft/plugins
wget https://dev.bukkit.org/projects/worldedit/files/latest -O WorldEdit.jar
wget https://dev.bukkit.org/projects/worldguard/files/latest -O WorldGuard.jar

# рестарт сервера
systemctl restart minecraft

После старта плагин создаст папку plugins/WorldGuard/ с конфигом config.yml и подкаталогом worlds/<имя_мира>/ для каждого мира. Регионы хранятся в regions.yml или в SQL, если включить базу.

Базовый конфиг worldguard-config.yml

Дефолтные настройки нормальные, но пара параметров стоит того, чтобы их подкрутить сразу. Привожу пример минимального продакшен-конфига:

# plugins/WorldGuard/config.yml (выжимка)
regions:
  use-creature-spawn-event: true
  enable: true
  invincibility-removes-mobs: true
  high-frequency-flags: false
  use-paper-entity-origin: true

protection:
  item-durability: true
  remove-infinite-stacks: true
  disable-xp-orb-drops: false

ignition:
  block-tnt: false
  block-tnt-block-damage: false
  block-lighter: false

fire:
  disable-all-fire-spread: false
  disable-fire-spread-blocks: []

Файл config.yml глобальный, а правила конкретного мира лежат в plugins/WorldGuard/worlds/world/config.yml - там можно переопределить любой параметр для отдельного мира. Это удобно, когда у вас survival и creative в одном инстансе.

Создание первого региона: //wand → //pos1/pos2 → /rg define

Тут мне нравится простота WorldGuard. Берёте деревянный топор, выделяете область, называете регион - готово.

# 1. получить деревянный топор (инструмент выделения WorldEdit)
//wand

# 2. левый клик по углу - pos1, правый клик - pos2
# (или явно командами на текущей позиции)
//pos1
//pos2

# 3. создать регион spawn в пределах выделения
/rg define spawn

# 4. посмотреть, что получилось
/rg info spawn

Имя региона должно быть в нижнем регистре, без пробелов, без точек. На практике используют snake_case: spawn_market, pvp_arena_north, vip_zone_alpha.

Чтобы изменить границы существующего региона без перенаправления данных:

//pos1
//pos2
/rg redefine spawn

Команда /rg redefine сохранит флаги, владельцев и приоритет, поменяет только координаты. /rg remove spawn удалит регион полностью.

Иерархия регионов: parent, child и приоритеты

Это та часть, где новички спотыкаются. Регионы могут пересекаться, и WorldGuard должен решать, чьи флаги применять. Решает по двум правилам.

Приоритет (/rg setpriority <region> <number>): чем выше число, тем главнее регион в местах пересечения. По умолчанию приоритет 0. Для арены внутри спавна логично выставить spawn=5, pvp_arena=10 - тогда внутри арены работают её собственные флаги, а не наследованные от спавна.

Parent/child связь (/rg setparent <child> <parent>): дочерний регион наследует флаги родителя, если у дочернего нет собственного значения. Это удобно для шопов внутри спавна, домов внутри города и так далее.

# делаем shop дочерним регионом spawn
/rg setparent shop spawn

# теперь shop наследует все флаги spawn,
# но может переопределить use=allow для торговли
/rg flag shop use allow
/rg setpriority shop 10

В большинстве случаев приоритеты решают всё, parent нужен реже - в основном для административных вложенных территорий, где важно одной командой обновить флаг во всём дереве.

Главные флаги, которые надо знать

Полный список флагов есть в официальной документации WorldGuard, но в продакшене активно используется десятка два. Привожу те, что встречаются на каждом сервере.

# базовая защита постройки
/rg flag spawn build deny
/rg flag spawn use deny
/rg flag spawn chest-access deny
/rg flag spawn interact deny

# отключаем взрывы и пожары
/rg flag spawn tnt deny
/rg flag spawn creeper-explosion deny
/rg flag spawn other-explosion deny
/rg flag spawn fire-spread deny
/rg flag spawn lava-flow deny
/rg flag spawn water-flow deny

# никаких мобов на спавне
/rg flag spawn mob-spawning deny
/rg flag spawn mob-damage deny

# PvP выключен на спавне
/rg flag spawn pvp deny

# вход и выход + сообщения
/rg flag spawn entry allow
/rg flag spawn exit allow
/rg flag spawn greeting Добро пожаловать на спавн!
/rg flag spawn farewell Удачи в приключениях!

Несколько важных нюансов из практики. Флаг build блокирует постройку и разрушение блоков, но не открытие сундуков - для этого chest-access. Флаг use отвечает за нажатие кнопок, рычагов, открытие дверей и подобные взаимодействия. Если хотите запретить активацию ловушек на спавне, ставите use deny - и забываете о троллях с TNT-минками под кроватями.

Флаг interact шире, чем use: он покрывает любое взаимодействие с блоками и сущностями. На территории, где вы хотите полную заморозку, interact deny снимает 90% сценариев грифа.

Регион global: правила для всего мира

У каждого мира есть скрытый регион __global__, который покрывает всё пространство и применяется там, где нет других регионов. Очень удобно отключать неприятные механики во всём мире одной командой:

# отключаем огонь во всём мире
/rg flag __global__ fire-spread deny
/rg flag __global__ lava-fire deny

# никакого PvP вне арен
/rg flag __global__ pvp deny

# криперы взрывают мобов, но не ломают блоки
/rg flag __global__ creeper-explosion deny
/rg flag __global__ tnt deny

Главное помнить: __global__ имеет приоритет 0, поэтому любой обычный регион с приоритетом >= 0 переопределит эти флаги в своих границах. То есть выставив pvp deny глобально, вы можете внутри pvp_arena поставить pvp allow и арена заработает как ожидается.

Владельцы и участники региона

Регион поддерживает две роли: owner и member. Владельцы могут менять флаги и добавлять других, участники имеют права согласно флагам, но конфигурацией региона не управляют.

# добавить владельца
/rg addowner shop_alex Alex_M

# добавить участника
/rg addmember shop_alex Friend_42

# посмотреть состав
/rg info shop_alex

# удалить
/rg removemember shop_alex Friend_42

Игрок становится участником региона, если он явно добавлен или входит в группу LuckPerms, прописанную через префикс g:. Например, /rg addmember spawn g:vip сделает всех игроков с группой vip участниками региона spawn.

Флаги по группам: -g members, -g nonmembers, -g owners

Многие флаги можно применять не глобально, а к конкретной группе игроков. Параметр -g отвечает именно за это. Самый частый сценарий: разрешить участникам ломать блоки, а посторонним нет.

# участники могут строить, остальные нет
/rg flag shop_alex build deny
/rg flag shop_alex -g members build allow

# все могут заходить, никто не может выходить
# (странный, но рабочий пример - тюрьма)
/rg flag prison entry allow
/rg flag prison -g nonmembers exit deny

# только владельцы открывают сундуки
/rg flag shop_alex chest-access deny
/rg flag shop_alex -g owners chest-access allow

Группы, которые понимает WorldGuard: members, nonmembers, owners, nonowners, all. С плагином LuckPerms можно дополнительно завязывать права на ранги через регион-специфичные пермишены.

Интеграция WorldGuard и LuckPerms

LuckPerms умеет давать права контекстно - в зависимости от мира, региона, режима игры. Это хорошо стыкуется с WorldGuard.

# дать группе vip право использовать /home только в регионе spawn
/lp group vip permission set essentials.home true world=world region=spawn

Чтобы регионы попадали в контекст, в LuckPerms/config.yml должен быть включён сборщик контекстов от WorldGuard - в свежих версиях это работает из коробки. Проверить можно командой /lp networksync и затем /lp verbose при попытке игрока выполнить команду.

Типичные косяки, на которые натыкаются все

Расскажу про четыре грабли, по которым прошёл каждый, кто настраивал WorldGuard впервые.

Лава и вода всё равно текут через границу региона. Флаг build deny не останавливает потоки, нужны отдельные lava-flow deny и water-flow deny внутри региона, плюс lava-fire deny, чтобы лава не поджигала окружение.

Криперы всё ещё ломают спавн. tnt deny блокирует только TNT. Для криперов нужен creeper-explosion deny, для гастов и эндер-кристаллов - other-explosion deny. Проще всего ставить все три сразу.

Мобы спавнятся в защищённой зоне. Флаг mob-spawning deny отключает естественный спавн, но не препятствует переходу мобов из соседних чанков. Если на спавне ходят зомби, проверьте, нет ли вокруг тёмных пещер с приходящими толпами, и поставьте entry deny -g nonmembers для враждебных сущностей не получится. Альтернатива - mob-damage deny, чтобы мобы хотя бы не били игроков.

Командные блоки и кнопки на ловушках. Если у вас есть стрелочные ловушки или TNT-кнопки на территории, обязательно ставьте use deny или interact deny. Иначе любой посетитель щёлкнет рычаг и обнулит вам пол-карты.

WorldGuard, GriefPrevention или Lands - что выбрать

Коротко про конкурентов. GriefPrevention делает упор на автоматический клейм золотой лопатой и удобный игровой UX, но гибкость по флагам у него заметно меньше. Lands - современный платный плагин с GUI, экономикой и красивыми меню, отличный выбор для коммерческого выживания. WorldGuard же остаётся королём по количеству флагов и интеграций, и подходит, когда вы хотите контролировать всё до мелочей и уже работаете с WorldEdit.

В большинстве случаев на средне-крупном сервере связка WorldGuard + GriefPrevention или WorldGuard + Lands идёт вместе: WorldGuard охраняет административные зоны (спавн, шопы, арены), а второй плагин даёт игрокам клеймить домики самостоятельно.

FAQ

Совместим ли WorldGuard с Folia

На 2026 год полной поддержки нет. EngineHub занимается адаптацией, но регионы пока не работают в полной асинхронности Folia. Для серверов на Folia безопаснее использовать Paper или ждать официальной сборки, либо вынести WorldGuard на отдельный proxy-узел.

Как откатить гриф, если он уже произошёл

Сам WorldGuard не пишет историю изменений блоков. Для отката используйте CoreProtect или LogBlock: первый - стандарт индустрии, делает rollback по игроку и времени за пару команд. Поставьте его сразу же, как поставили WorldGuard, без него защита неполная.

Можно ли продавать регионы игрокам за внутриигровую валюту

Да, через интеграцию с Vault + любой плагин экономики. Команда /rg flag <region> buyable allow и /rg flag <region> price 5000 плюс /rg buy <region> - игрок покупает регион и автоматически становится владельцем. Удобно для проектов с городами и районами.

Как сделать, чтобы только владелец региона мог открывать сундуки

Запретите chest-access для всех и разрешите только владельцам. Вот рабочая комбинация:

/rg flag house_42 chest-access deny
/rg flag house_42 -g owners chest-access allow

Это закроет любые контейнеры от посторонних, включая сундуки эндера, бочки и шалкер-боксы.

WorldGuard тормозит сервер

Сам плагин очень лёгкий: проверка флагов идёт по индексу регионов через R-tree. Заметная нагрузка появляется при тысячах мелких пересекающихся регионов в одном чанке - тогда проверка усложняется. На обычном сервере с сотней регионов разницы вы не увидите. Если у вас мегапроект на 10000+ клеймов, вынесите регионы в SQL базу и включите кеш в config.yml.

Можно ли использовать WorldGuard без WorldEdit

Нет, WorldEdit - жёсткая зависимость. Без него WorldGuard просто не запустится, и в логах будет ошибка Unknown dependency: WorldEdit. Ставьте оба плагина одновременно одинаковой версии.

Как сделать защиту на весь мир, кроме отдельной зоны

Используйте __global__ регион. Ставите там общие запреты, потом создаёте обычный регион с приоритетом > 0 и разрешаете там нужные действия. Например, глобально pvp deny, в pvp_arena pvp allow priority 10.

Что дальше

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

И регулярно проверяйте логи на сообщения вида Region X has invalid flag - такое вылазит после обновлений плагинов и легко чинится через /rg flag <region> <flag> -e. Хорошей защиты вашему серверу.


Protege tu servidor contra ataques DDoS

Protección gratuita con configuración en 5 minutos. 1 TB de tráfico incluido.

Probar gratis


Artículos relacionados