Мощный плагин для Paper/Spigot Minecraft, добавляющий систему способностей по чанкам и пользовательские генераторы мобов.
Версия: 1.0.2 | API: Minecraft 1.21 | Разработчик: noloverme
Статус: Активно поддерживается
- Обзор
- Установка
- Конфигурация
- Способности
- Команды
- Права доступа
- Структура проекта
- Как это работает
- Примеры использования
- Решение проблем
NUnReal преобразует геймплей Minecraft, предоставляя систему активируемых по чанкам способностей. Игроки могут размещать специальные блоки способностей в чанках, чтобы разблокировать мощные модификаторы, влияющие на:
- Скорость добычи и ломания блоков
- Полёты и передвижение
- Сбор предметов и ресурсов
- Взаимодействие с сущностями
- Рост растений и урожайность
- И многое другое...
| Функция | Описание |
|---|---|
| 15+ Способностей | От добычи до полёта, от магнита до вечной сытости |
| 27+ Мобов | Все враждебные и мирные мобы с кастомными рецептами |
| Система Чанков | Один блок на чанк с постоянным сохранением данных |
| Полная конфигурируемость | Все параметры регулируются через config.yml |
| Продвинутая обработка событий | Кастомный крафт, взаимодействие, состояния игрока |
| Асинхронные задачи | Магнит предметов и проверка чанков работают без лагов |
Java 21+
Paper/Spigot Server (протестировано на 1.21.8)
Maven 3.6+ (для сборки)
git clone https://github.com/noloverme/NUnReal/
cd NUnRealmvn clean packageСкомпилированный JAR появится по пути: target/NUnReal-1.0.2.jar
cp target/NUnReal-1.0.2.jar /path/to/server/plugins//restart
Или просто перезагрузите сервер полностью.
/nunreal give
Вы должны получить блок способностей в инвентарь.
Плагин полностью настраивается через config.yml. При первом запуске автоматически создаётся файл конфигурации со значениями по умолчанию.
Определяет рецепт создания блока способностей:
craft:
enabled: true
shape:
- "C D E"
- "F L F"
- "M N O"
slots:
C: CRYING_OBSIDIAN
D: AMETHYST_CLUSTER
E: OBSIDIAN
F: TINTED_GLASS
L: TOTEM_OF_UNDYING
M: ENCHANTED_GOLDEN_APPLE
N: END_CRYSTAL
O: TURTLE_HELMET
result-name: "§6Блок Способностей"
result-lore:
- "§7Поставьте и нажмите ПКМ"
- "§7чтобы выбрать способность"Управляет поведением блоков способностей:
blocks:
one-per-chunk: true # Один блок на чанк
require-pickaxe: true # Требует кирку для разрушения
break-time-ticks: 20 # Время разрушения (20 тиков = 1 сек)
insta-break: false # Моментальное разрушение
drop-item: true # Выпускает предмет при разрушении
messages:
placed: "§aБлок способностей установлен!"
already-exists: "§cВ этом чанке уже есть блок!"
broken: "§eБлок способностей разрушен."
need-pickaxe: "§cИспользуйте кирку!"Система стоимости способностей:
economy:
default-cost:
material: DIAMOND
amount: 1
ability-costs:
MINING: # Копание: 20 алмазов
material: DIAMOND
amount: 20
FLIGHT: # Полёт: 10 незеритовых слитков
material: NETHERITE_INGOT
amount: 10
KEEP_RESOURCES: # Сохранение ресурсов: 32 алмаза
material: DIAMOND
amount: 32
# ... остальные способностиЛогика стоимости: Когда игрок активирует способность, из его инвентаря удаляются предметы согласно конфигурации.
Настройка интерфейса выбора способностей:
menu:
title: "§8Выбор способности"
size: 18 # Размер инвентаря (должен быть кратен 9)
filler:
enabled: true
material: GRAY_STAINED_GLASS_PANE
name: " "
abilities:
MINING:
slot: 0 # Слот в меню (0-17)
material: GOLDEN_PICKAXE
name: "§eКопание"
lore:
- "§7+30.0 к скорости ломания"
- ""
- "§eЦена: 20 алмазов"
active-lore-line: "§aАктивно"Детальные параметры каждой способности:
abilities:
# Способности на основе атрибутов
MINING:
attribute: BLOCK_BREAK_SPEED
value: 30.0
# Специальные способности
MAGNET:
radius: 8.0 # Радиус сбора (блоки)
speed: 0.30 # Скорость притягивания
interval-ticks: 5 # Частота проверки
max-items-per-tick: 100 # Максимум предметов за тик
FLIGHT:
fly-speed: 0.1 # Скорость полёта
exit-protection: SLOW_FALLING
slow-falling-seconds: 5 # Длительность защиты при выходеСистема крафта для спавнеров:
spawners:
enabled: true
require-silk-touch: true # Требует "Шёлковое касание"
recipes:
SKELETON:
enabled: true
shape:
- "G C G" # Строки рецепта (3x3)
- "D B D"
- "A A A"
ingredients:
G: "BONE" # G = BONE
C: "BOW" # C = BOW
B: "NETHERITE_INGOT" # B = NETHERITE_INGOT
D: "ARROW" # D = ARROW
A: "DIAMOND" # A = DIAMONDЛогика рецепта: Верстак будет требовать расстановку предметов в виде:
[BONE] [BOW] [BONE]
[ARROW] [NETHERITE] [ARROW]
[DIAMOND] [DIAMOND] [DIAMOND]
В плагине доступно 15 уникальных способностей:
| Способность | Эффект | Стоимость | Как работает |
|---|---|---|---|
| MINING | +30 к скорости ломания | 20 💎 | Ускоряет добычу всех блоков в чанке |
| LONG_ARM | +15 к дальности взаимодействия | 20 💎 | Позволяет взаимодействовать с блоками издалека |
| ANTI_KNOCKBACK | +30 к сопротивлению отдаче | 1 💎 | Защита от отброса при попадании |
| LUCK | +30 к удаче | 5 💎 | Больше дропа, чаще редкие предметы |
| DWARF | -0.75 к масштабу | 1 💎 | Игрок становится меньше ростом |
| FALL_RESIST | +10 к безопасной высоте падения | 1 💎 | Можно падать без урона с большей высоты |
| Способность | Эффект | Стоимость | Как работает |
|---|---|---|---|
| GROWTH | Растения растут на 50% быстрее | 5 💎 | Ускоряет рост пшеницы, тыквы и т.д. |
| MAGNET | Автосбор выброшенных предметов | 10 💎 | Предметы притягиваются к игроку |
| FLIGHT | Полёт в чанке | 10 🔷 | Игроки могут летать внутри чанка |
| INFINITE_TRADES | Жители не исчерпывают сделки | 10 🔷 | Бесконечные трейды с жителями |
| KEEP_RESOURCES | Сохранение ресурсов при смерти | 32 💎 | Предметы и опыт не теряются |
| SATURATION | Голод не уменьшается | 3 💎 | Полоса голода "замораживается" |
| AUTO_SMELT | Руда переплавляется автоматически | 15 💎 | Железо, золото, медь → слитки |
| HOLY_GROUND | Блокировка спавна враждебных мобов | 20 💎 | Натуральный спавн мобов невозможен |
| THRIFTY_CRAFT | 15% шанс вернуть ингредиент | 2 🔷 | При крафте на верстаке может вернуться 1 ингредиент |
Обозначения: 💎 = Алмаз | 🔷 = Незеритовый слиток
Все команды требуют права nunreal.admin (по умолчанию = OP).
Описание: Перезагружает конфигурацию и переинициализирует все рецепты.
Использование: /nunreal reload
Результат:
✓ Конфиг перезагружен
✓ Рецепты способностей обновлены
✓ Рецепты спавнеров обновлены
✓ Меню переинициализировано
Когда использовать: После редактирования config.yml
Описание: Выдаёт блок способностей игроку. Если игрок не указан, выдаёт себе.
Примеры:
/nunreal give
/nunreal give PlayerName
Описание: Выдаёт спавнер определённого моба.
Примеры:
/nunreal givespawner SKELETON
/nunreal givespawner SKELETON PlayerName
Доступные мобы:
Враждебные: SKELETON, ZOMBIE, WITHER_SKELETON, GHAST, CREEPER,
HOGLIN, SHULKER, SPIDER, BLAZE, VINDICATOR,
MAGMA_CUBE, SLIME, ENDERMAN, DROWNED
Мирные: COW, MOOSHROOM, BREEZE, SNIFFER, IRON_GOLEM,
ARMADILLO, WOLF, TURTLE, VILLAGER, SALMON,
COD, CAT, SNOW_GOLEM
- Поместите блок способностей в чанк (ПКМ)
- Нажмите ПКМ по блоку → откроется меню способностей
- Кликните на способность в меню
- Проверьте стоимость и подтвердите активацию
| Право | Описание | По умолчанию |
|---|---|---|
nunreal.admin |
Доступ к командам администратора | OP |
nunreal.craft |
Право крафтить блоки способностей | TRUE |
nunreal.use |
Право использовать меню способностей | TRUE |
nunreal.spawner.place |
Право устанавливать блоки способностей | TRUE |
nunreal.spawner.break |
Право разрушать блоки способностей | OP |
Через LuckPerms:
/lp user PlayerName permission set nunreal.admin true
/lp user PlayerName permission set nunreal.craft true
Через командный блок:
/execute as @a unless entity @s[tag=nunreal.verified] run function nunreal:check_perms
NUnReal/
│
├── src/main/java/com/noloverme/nunreal/
│ │
│ ├── NUnReal.java
│ │ └─ Главный класс плагина, управление жизненным циклом
│ │
│ ├── ability/
│ │ ├─ AbilityType.java (перечисление типов способностей)
│ │ ├─ AbilityManager.java (управление состоянием игроков)
│ │ ├─ AbilityApplier.java (применение атрибутов)
│ │ └─ FlightManager.java (управление полётом)
│ │
│ ├── block/
│ │ ├─ CommandBlockData.java (структура данных блока)
│ │ └─ CommandBlockManager.java (сохранение/загрузка блоков)
│ │
│ ├── chunk/
│ │ └─ ChunkManager.java (отслеживание состояния чанков)
│ │
│ ├── spawner/
│ │ ├─ SpawnerType.java (перечисление мобов)
│ │ ├─ SpawnerItemFactory.java (создание предметов спавнеров)
│ │ └─ SpawnerRecipeManager.java (управление рецептами)
│ │
│ ├── craft/
│ │ └─ CommandBlockRecipe.java (рецепт блока способностей)
│ │
│ ├── config/
│ │ └─ ConfigManager.java (загрузка и доступ к конфигурации)
│ │
│ ├── command/
│ │ └─ NUnRealCommand.java (обработка команд)
│ │
│ ├── menu/
│ │ ├─ AbilityMenu.java (GUI меню выбора способностей)
│ │ └─ MenuListener.java (обработка событий инвентаря)
│ │
│ ├── listener/ (15+ слушателей событий)
│ │ ├─ BlockPlaceListener.java
│ │ ├─ BlockBreakListener.java
│ │ ├─ BlockInteractListener.java
│ │ ├─ FlightListener.java
│ │ ├─ PlayerDeathListener.java
│ │ ├─ AutoSmeltListener.java
│ │ ├─ HolyGroundListener.java
│ │ ├─ SaturationListener.java
│ │ ├─ ThriftyCraftListener.java
│ │ └─ ... (и другие)
│ │
│ └── task/
│ ├─ ChunkCheckTask.java (проверка чанков)
│ └─ MagnetTask.java (магнит предметов)
│
├── src/main/resources/
│ ├── plugin.yml (метаданные плагина)
│ └── config.yml (конфигурация по умолчанию)
│
├── pom.xml (конфигурация Maven)
│
└── target/
└── NUnReal-1.0.2.jar (скомпилированный плагин)
1. Крафт → Игрок создаёт блок способностей по рецепту
↓
2. Установка → Игрок размещает блок в чанке (ПКМ)
↓
3. Взаимодействие → Игрок нажимает ПКМ по блоку
↓
4. Меню → Открывается GUI с выбором способностей
↓
5. Активация → Игрок выбирает способность
↓
6. Проверка → Система проверяет стоимость
↓
7. Применение → Если хватает ресурсов:
- Ресурсы удаляются из инвентаря
- Способность применяется ко ВСЕМ игрокам в чанке
- Данные сохраняются
- Загрузка: При старте плагина все данные блоков загружаются из памяти
- Хранение: Во время работы данные хранятся в памяти (быстро)
- Сохранение: При остановке плагина данные записываются на диск
- Восстановление: При следующем старте данные восстанавливаются
Два фоновых процесса работают отдельно от основного потока:
ChunkCheckTask (каждые 20 тиков = 1 сек по умолчанию)
- Проверяет, в каком чанке находится игрок
- Если чанк изменился, переприменяет способности
- Предотвращает "застревание" способностей при движении
MagnetTask (каждые 5 тиков по умолчанию)
- Ищет выброшенные предметы в радиусе 8 блоков
- Притягивает их к игроку со скоростью 0.30
- Обрабатывает до 100 предметов за тик (для оптимизации)
Цель: Создать чанк, где добыча происходит в 2 раза быстрее.
Конфигурация:
economy:
ability-costs:
MINING:
material: DIAMOND
amount: 10Действия:
1. /nunreal give # Получить блок способностей
2. Поместить блок в чанк
3. ПКМ по блоку → выбрать MINING
4. Подтвердить (10 алмазов)
5. Готово! Добыча ускорена в чанке
Цель: Руда переплавляется сразу в слитки.
Конфигурация:
abilities:
AUTO_SMELT:
affected-blocks:
IRON_ORE: IRON_INGOT
GOLD_ORE: GOLD_INGOT
COPPER_ORE: COPPER_INGOT
respect-silk-touch: true
respect-fortune: trueДействия:
1. Активировать способность AUTO_SMELT в чанке (15 💎)
2. Копать руду в чанке
3. Вместо руды падают сразу слитки
4. Экономия времени на плавку
Цель: Создать зону, где враги не спауняются и игрок не падает.
Конфигурация:
abilities:
HOLY_GROUND:
block-raids: false
blocked-spawn-reasons:
- NATURAL
- JOCKEY
- PATROL
FALL_RESIST:
attribute: SAFE_FALL_DISTANCE
value: 10.0Действия:
1. Активировать HOLY_GROUND (20 💎)
2. Активировать FALL_RESIST (1 💎)
3. В чанке враги не спауняются
4. Можно безопасно падать с высоты
Цель: Создать кастомный рецепт для спавнера скелета.
Конфигурация:
spawners:
recipes:
SKELETON:
enabled: true
shape:
- "B B B"
- "B S B"
- "B B B"
ingredients:
B: "BONE"
S: "SPAWNER"Логика:
Рецепт требует:
[BONE] [BONE] [BONE]
[BONE] [SPAWNER] [BONE]
[BONE] [BONE] [BONE]
Просто вкладываешь ингредиенты на верстак - получаешь спавнер скелета!
Симптомы: В логе консоли ошибки при загрузке.
Решение:
1. Проверить версию Java: java -version
→ Должно быть Java 21 или выше
2. Проверить plugin.yml:
main: com.noloverme.nunreal.NUnReal
3. Посмотреть логи:
tail -f logs/latest.log
4. Пересоздать конфиг:
rm plugins/NUnReal/config.yml
/reload
Симптомы: Даже с правильными ингредиентами блок не крафтится.
Решение:
# Проверить в config.yml:
craft:
enabled: true # Должно быть true!
# Запустить команду:
/nunreal reload
# Проверить права:
# Игрок должен иметь nunreal.craftСимптомы: Выбираю способность, но эффект не применяется.
Проверочный список:
□ Достаточно ресурсов в инвентаре?
□ Права nunreal.use установлены?
□ Блок находится в правильном чанке?
□ В чанке уже есть другой блок способностей?
(система ограничивает: один блок на чанк)
□ Способность включена в config.yml?
Решение:
# Перезагрузить конфиг
/nunreal reload
# Снова попробовать
/nunreal give
# Если не помогает - проверить логи
tail -f logs/latest.log | grep -i nunrealСимптомы: Активирована способность FLIGHT, но полёт не включается.
Решение:
# В config.yml проверить:
abilities:
FLIGHT:
fly-speed: 0.1 # Не должна быть 0!
exit-protection: SLOW_FALLING
# Убедиться что:
□ Вы находитесь в чанке с активированной способностью
□ Нижняя часть вашего тела в этом чанке
□ Нет конфликтов с другими плагинами полётаОтладка:
1. Смена чанка: ПКМ ПКМ ПКМ (нажимайте края чанка)
2. Переход в спектром режим: /gamemode spectator
3. Возврат: /gamemode survival
4. Переподключение: /disconnect → повторное подключение
Симптомы: Вкладываю ингредиенты на верстак, но спавнер не создаётся.
Проверка:
# Убедитесь что:
spawners:
enabled: true
recipes:
SKELETON:
enabled: true # true = включен!
shape:
- "G C G"
- "D B D"
- "A A A"
ingredients:
G: "BONE" # Точные названия!
C: "BOW"
B: "NETHERITE_INGOT"
D: "ARROW"
A: "DIAMOND"Проверка ингредиентов:
1. Все ли ингредиенты существуют в Minecraft?
/give @s BONE 1
2. Все ли буквы используются в shape?
shape:
- "G C G" # Используется: G, C
- "D B D" # Используется: D, B
- "A A A" # Используется: A
Итого используется: G, C, D, B, A ✓
3. Все ли используемые буквы определены в ingredients?
ingredients:
G: "BONE" ✓
C: "BOW" ✓
D: "ARROW" ✓
B: "NETHERITE_INGOT" ✓
A: "DIAMOND" ✓
Решение:
# Перезагрузить конфиг
/nunreal reload
# Проверить в логах
tail -f logs/latest.log | grep -i "recipe"
# Выдать спавнер командой
/nunreal givespawner SKELETONУменьшить нагрузку ChunkCheckTask:
task:
interval-ticks: 40 # Вместо 20 (проверка каждые 2 сек)Оптимизировать магнит:
abilities:
MAGNET:
radius: 6.0 # Вместо 8.0
interval-ticks: 10 # Вместо 5 (проверка реже)
max-items-per-tick: 50 # Вместо 100Ускорить разрушение блока:
blocks:
break-time-ticks: 10 # Вместо 20# Посмотреть TPS прямо в игре
/tps
# Если TPS падает при активации способностей:
1. Отключить асинхронные задачи (временно)
2. Уменьшить radius магнита
3. Увеличить interval-ticksJava 21 JDK
Maven 3.6+
Git
IntelliJ IDEA или VS Code (рекомендуется)
# Полная сборка с очисткой
mvn clean package
# Быстрая сборка (без тестов)
mvn package -DskipTests
# Компиляция без упаковки
mvn compile
# Очистка
mvn clean<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>26.1.2.build.66-stable</version>
<scope>provided</scope>
</dependency>
</dependencies>- Все сообщения в игре на русском языке - настраиваются через
config.yml - Плагин использует Bukkit Attribute System для применения модификаторов
- Обнаружение чанков автоматическое через Bukkit API
- Все стоимости настраиваются отдельно для каждой способности
- Рецепты спавнеров поддерживают 3×3 сетку (9 ингредиентов максимум)
- Данные сохраняются при выключении плагина и загружаются при включении
| Параметр | Значение |
|---|---|
| Версия | 1.0.2 |
| Разработчик | noloverme |
| API версия | 1.21 |
| Java | 21+ |
| Статус | Активно поддерживается |
| Девиз | "Невозможное возможно, наверное" |
Спасибо за использование NUnReal! Для вопросов и предложений обратитесь к разработчику или оставьте issue в репозитории.
Извините что начал заливать с 1.0.2. Пока тестил не закидывал на GitHub. Делал для одного сервера, решил выложить сюда. Может будет кто-то пользоваться. Не знаю.