Загрузка данных
Разработай полноценный профессиональный плагин приватных регионов для Nukkit-MOT 1.26.30-R1, Java 17.
Название плагина: RGPlus.
Плагин должен быть полноценной системой регионов по типу WorldGuard/WorldEdit, но адаптированной под Bedrock/Nukkit-MOT.
Основные возможности
Добавь команды:
- "/rg pos1" — установить первую точку выделения
- "/rg pos2" — установить вторую точку
- "/rg define <название>" — создать регион
- "/rg claim <название>" — алиас define
- "/rg info [название]" — информация о регионе
- "/rg list" — список регионов игрока
- "/rg remove <название>" — удалить регион
- "/rg addmember <регион> <игрок>" — добавить участника
- "/rg removemember <регион> <игрок>" — удалить участника
- "/rg addowner <регион> <игрок>" — добавить владельца
- "/rg removeowner <регион> <игрок>" — удалить владельца
- "/rg flag <регион> <флаг> <значение>" — изменить флаг
- "/rg flags <регион>" — посмотреть флаги
- "/rg setpriority <регион> <приоритет>" — установить приоритет
- "/rg help" — помощь
Поддержать короткие алиасы, например "/region", "/regions", "/r".
Права
Сделать permissions:
- "rgplus.admin"
- "rgplus.bypass"
- "rgplus.create"
- "rgplus.remove"
- "rgplus.info"
- "rgplus.member"
- "rgplus.owner"
- "rgplus.flag"
Администратор должен иметь возможность обходить защиту регионов.
Владельцы и участники
У каждого региона должны быть:
- владелец;
- несколько владельцев;
- список участников;
- список разрешений.
Владелец может управлять своим регионом и участниками.
Участник получает доступ к разрешённым действиям внутри региона.
Флаги
Реализовать основные флаги:
- "build"
- "break"
- "place"
- "pvp"
- "damage"
- "use"
- "chest-access"
- "door-use"
- "button-use"
- "lever-use"
- "item-pickup"
- "item-drop"
- "mob-spawning"
- "animal-damage"
- "mob-damage"
- "tnt"
- "fire-spread"
- "lighter"
- "explosion"
- "fall-damage"
- "entry"
- "exit"
Флаги должны иметь значения "allow" / "deny".
У каждого флага должно быть понятное описание.
Защита
Регион должен защищать территорию от:
- ломания блоков;
- установки блоков;
- PvP;
- взаимодействия с контейнерами;
- открытия дверей;
- кнопок и рычагов;
- подбора предметов;
- выбрасывания предметов;
- взрывов;
- TNT;
- распространения огня;
- спавна мобов;
- повреждения животных;
- других действий, которые предусмотрены флагами.
Проверять владельцев и участников до запрета действия.
Пересечения регионов
Добавить корректную обработку пересечений регионов.
Если регионы пересекаются, использовать систему приоритетов:
- регион с большим priority имеет преимущество;
- при одинаковом priority использовать понятную и стабильную логику;
- не допускать конфликтов и случайного поведения.
Хранение
Все регионы должны сохраняться после перезапуска сервера.
Использовать отдельный файл:
"plugins/RGPlus/regions.yml"
Хранить:
- название;
- мир;
- координаты min/max;
- владельцев;
- участников;
- флаги;
- priority;
- дату создания.
При запуске сервера автоматически загружать регионы.
При изменении региона автоматически сохранять данные.
Конфигурация
Создать:
"config.yml"
В конфиг вынести:
- лимит размера региона;
- максимальное количество регионов игрока;
- настройки сообщений;
- настройки защиты;
- значения флагов по умолчанию;
- формат сообщений.
Все сообщения вынести в:
"messages.yml"
Сообщения должны быть красивыми, короткими и понятными.
Использовать цвета Minecraft "§".
Пример стиля:
"§8[§bRGPlus§8] §fРегион §b{region} §fуспешно создан."
Ошибки:
"§8[§bRGPlus§8] §cУ тебя нет прав для этого действия."
UX
Команды должны выдавать понятные сообщения:
- регион создан;
- регион удалён;
- игрок добавлен;
- игрок удалён;
- флаг изменён;
- регион не найден;
- недостаточно прав;
- точки не установлены;
- регион пересекается;
- превышен лимит;
- действие запрещено защитой региона.
Добавить красивое оформление "/rg help".
Архитектура
Сделать проект чистым и профессиональным.
Использовать отдельные классы:
- "RGPlus"
- "Region"
- "RegionManager"
- "RegionStorage"
- "RegionProtectionListener"
- "RegionCommand"
- "SelectionManager"
- "Flag"
- "FlagManager"
- "MessageManager"
- "PermissionManager"
Не помещать всю логику в один класс.
Код должен быть совместим именно с Nukkit-MOT 1.26.30-R1 и Java 17.
Не использовать API, которого нет в Nukkit-MOT.
Maven
Создать полноценный "pom.xml" для сборки через Maven.
Зависимость:
"com.nukkit-mot:nukkit-mot:1.26.30-R1"
Собираемый результат:
"target/RGPlus-1.0.0.jar"
plugin.yml
Создать корректный "plugin.yml":
- name: RGPlus
- version: 1.0.0
- main: ru.mot.rgplus.RGPlus
- api: [1.0.0]
- description;
- authors;
- commands;
- permissions.
Важно
Перед выдачей результата проверь проект на ошибки компиляции.
Не оставляй заглушки, TODO и неработающие методы.
Предоставь полностью готовый исходный код проекта, который можно открыть в IntelliJ IDEA и собрать командой:
"mvn clean package"
Результатом должен быть рабочий JAR-плагин для Nukkit-MOT.