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 gratisArtículos relacionados
Сезонный SMP: как организовать ротацию сезонов на Minecraft сервере
Длина сезона, что переносить, как архивировать миры и запускать новый SMP без потери комьюнити. С командами и Chunky pre-gen.
GeyserMC и кроссплей: как защитить сервер с Bedrock-игроками
GeyserMC открывает двери для мобильных и консольных игроков, но добавляет UDP-порт, новые вектора атак и головную боль с аутентификацией. Разбираем риски кроссплея и как их закрыть.
Правила и модерация Minecraft-сервера: полное руководство
Как составить правила для Minecraft-сервера, выстроить иерархию модераторов, настроить плагины наказаний и античит. Практический опыт и готовые шаблоны.