Загрузка данных


Разработай полноценный профессиональный плагин приватных регионов для 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.