Repository navigation
pnCases 1.5.1
pnCases 1.5.1
Версия 1.5.1 — большое обновление системы кейсов, анимаций, витрин и интерфейсов. Кейсы стали самостоятельными YAML-конфигурациями, Machine получил новую структуру меню, добавлены новые анимации и темы витрины, а хранение наград и пользовательских настроек стало надёжнее.
Что нового
Самостоятельные кейсы в cases/*.yml
- Убрана привязка кейсов к заранее заданным типам вроде
moneyилиluckperms. - Каждый кейс создаётся командой
/pncases createcase <id>и хранится в отдельном файлеcases/<id>.yml. - В одном кейсе можно свободно сочетать предметы, деньги Vault, поинты PlayerPoints, группы и права LuckPerms, а также персональные команды.
- Имя файла является внутренним ID кейса, а
display-nameотвечает за отображаемое название в GUI, голограммах, ключах и сообщениях. - Новый кейс сразу получает одноимённый ключ без суффикса
_key. /givekey,/takekey,/setcase,/delcaseи автодополнение работают с актуальными ID кейсов и ключей.- Исправлено удаление файла кейса и его привязанных блоков через
/pncases delcase <id>. - Команда
/pncases setcase <id>привязывает выбранный кейс к блоку без копирования чужого шаблона.
Новая архитектура конфигурации кейса
blocksрасположен в начале файла, а списки слотов сохраняются в компактном формате[0, 1, 2].- Конфигурация разбита на понятные секции: голограмма, витрина, GUI, broadcast, стоимость, анимация и награды.
- Виртуальный ключ и цена открытия теперь определяются самим кейсом: всегда используется один ключ с ID кейса, поэтому лишние
cost.type,cost.keyиcost.amountудалены. - Покупка ключа за опыт вынесена из плоских
buy_xp_*в понятную секциюcost.xp-purchase. - Убраны лишние технические поля витрины из создаваемых файлов:
interval_ticks,radius,heightиspeedиспользуют внутренние безопасные значения. - Удалён дублирующий параметр
idle-particles.effects: включение витрины теперь управляется одним параметромenabled. - В начале нового файла выводится единая подробная подсказка по плейсхолдерам, типам наград и всем доступным редкостям.
- Убраны повторяющиеся комментарии-заголовки перед каждой секцией.
- Обычное сохранение больше не создаёт рядом лишние
.bak-файлы. Резервная копия.broken.bakсоздаётся только при обнаружении повреждённого YAML. - Запись YAML выполняется через временный файл с проверкой и атомарной заменой.
Настройки GUI внутри каждого кейса
- Кнопка кейса перенесена из общего
gui.ymlвcases/<id>.yml -> gui.button. - Каждый кейс может иметь собственные материал, Base64-текстуру, название и lore основной кнопки.
- Старое поле
gui.open-itemавтоматически переносится вgui.button. - Устранено предупреждение о якобы отсутствующем
gui.open-item. - Сохраняются пустые строки в конце lore, поэтому оформление больше не обрезается.
item_dataбольше не мешает явно заданнымnameиlore.- Название кнопки, ключа и голограммы корректно обновляется после изменения
display-name. - Для состояния нехватки ключей добавлены настраиваемые
gui.insufficient-keys.nameиgui.insufficient-keys.lore. - Добавлен
gui.preview_enabled:true— ЛКМ показывает содержимое, ПКМ открывает кейс;false— и ЛКМ, и ПКМ сразу открывают кейс.
- Переключатель просмотра содержимого доступен в Machine.
Настраиваемая история и разметка слотов
- Пустой элемент истории настраивается для каждого кейса через
gui.history.empty. - Старое поле
gui.history.empty-itemавтоматически переносится в новую секцию. - Иконку пустой истории можно изменить предметом с курсора в Machine.
- Разметка меню позволяет назначать слоты основной кнопки, выбора анимации, истории, декора и пустого пространства.
- Обязательные роли при переносе корректно меняются местами и больше не создают дубликаты.
- Если выбор анимации отключён и слот 49 освобождён, его автоматически занимает история.
- При повторном включении пользовательского выбора слот возвращается кнопке анимации.
- Исправлен пустой 50-й слот в стандартной разметке нового кейса.
Редкости и предпросмотр наград
- Добавлены редкости
COMMON,UNCOMMON,RARE,EPIC,LEGENDARYиMYTHIC. - Название, цвет, символ и свечение каждой редкости настраиваются в
gui.yml -> preview.rarities. - Цвет и символ объединены в одном поле
name, например&d✹ Мифическая. - В заголовке создаваемого кейса перечислены все допустимые ID редкостей.
- Предпросмотр показывает реальную вероятность выпадения без технического веса.
- Из публичного lore убраны внутренний тип награды, команды и служебные пояснения.
- Кнопка «Содержимое кейса» получила отдельную Base64-иконку и короткое RGB-название без lore.
- Стрелки страниц полностью скрываются, если все награды помещаются на одной странице.
- Для нескольких страниц используются Base64-кнопки назад, вперёд и недоступного направления.
Персональные сообщения и broadcast
- Сообщение об успешной выдаче задаётся непосредственно в конкретной награде через
rewards[].message. - Удалены общие успешные сообщения
reward.default,reward.luckperms,reward.vaultиreward.playerpointsизmessages.yml. - Если
messageу награды отсутствует, лишнее сообщение игроку не отправляется. - Системные ошибки провайдеров и неверных предметов по-прежнему настраиваются в
messages.yml. - Broadcast перенесён из общего
messages.ymlв каждый файл кейса. - Для каждого кейса broadcast можно отдельно включить или выключить через
broadcast.enabled. - Строки задаются в
broadcast.linesи поддерживают{player},{case},{case_id}и{reward}.
Тип награды PERSONAL
- Добавлен тип награды
PERSONAL, выполняющий персональную консольную команду. - В командах доступны
{player}и{uuid}. - Команда сохраняется вместе с отложенной наградой в SQLite, MySQL и MongoDB.
- Для JDBC-хранилищ добавлена автоматическая миграция поля
command. - В комплект добавлен
cases/test.ymlс примерамиITEM,VAULT,PLAYERPOINTS,LUCKPERMS,PERSONALи кастомных Base64-голов.
Анимации открытия
Новые анимации
- Добавлена «Дыхание дракона»: крупный дракон из частиц облетает кейс, снижается и выдыхает пламя, из которого появляется награда.
- Добавлен «Голодный мимик»: сундук оживает, проглатывает ложные награды и выдаёт выигранную.
- Обе новые анимации отмечены меткой
NEWв меню выбора. - Полностью удалена старая анимация
CAULDRON— «Астральный разлом».
Новая архитектура анимаций
- Современные реализации для Minecraft 1.21+ перенесены в
animation/main, совместимые — вanimation/legacy. - Для Minecraft 1.16.5 принудительно используется совместимый «Круг фортуны».
- Для Minecraft 1.17–1.20 используется отдельный совместимый режим без загрузки классов Display Entities.
- Все открытия работают через единый жизненный цикл
AnimationRun. - Контекст открытия централизованно отслеживает задачи, временные сущности, listener-ы и изменённые блоки.
- Завершение, ошибка запуска, выход игрока, выгрузка мира и выключение плагина используют одну очистку.
- Добавлен watchdog, который завершает зависшее открытие и не оставляет кейс заблокированным.
- Звуки анимаций перенесены в код и приведены к единому безопасному диапазону громкости.
Единое отображение награды
- Все современные анимации используют единый визуальный предмет и подпись награды.
- Убран отдельный title с названием награды по центру экрана.
- Название остаётся над вращающимся предметом и следует за ним до завершения.
- Исправлены лишние и зависшие
TextDisplay, появлявшиеся под блоком кейса. - Для отображения используется настоящий визуальный предмет награды, включая Base64-голову.
- Количество частиц в момент выпадения уменьшено: предмет и его название больше не перекрываются финальным эффектом.
Защита сцены
- Пока идёт анимация, посторонние игроки мягко отталкиваются от кейса в радиусе 5 блоков.
- Открывающий игрок удерживается за пределами радиуса 3 блоков.
- Защита отключается сразу после завершения или отмены открытия.
Полностью новая витрина кейса
- Старые стили заменены полноценными темами витрины.
- Доступны:
- «Арканный ритуал»;
- «Разлом пустоты»;
- «Штормовая клетка»;
- «Огненный феникс»;
- «Ядовитая кобра»;
- «Ледяная корона»;
- «Плач душ»;
- «Зов левиафана»;
- «Небесные крылья»;
- «Драконья орбита».
- Темы получили отдельные силуэты, движение, траектории и цветовые композиции.
- Феникс, левиафан и дракон перемещаются вокруг кейса; крылья взмахивают; статичным сценам сохранена устойчивая композиция.
- Витрина больше не создаёт предмет или сундук над блоком — отображается только выбранная анимация частиц.
- Оставлена одна кнопка включения витрины и одна кнопка выбора темы без дублирующего переключателя эффектов.
- После изменения в Machine обновляется только витрина выбранного кейса, а не все кейсы сервера.
- Старые служебные display-сущности витрин очищаются при загрузке и выключении.
Новый Machine и дизайн GUI
- Machine полностью перестроен на отдельные понятные экраны: основные настройки, меню кейса, анимация, голограмма, витрина, покупка за опыт и разметка.
- Удалён лишний экран «Быстрые настройки».
- Повторяющиеся иконки заменены уникальными Base64-текстурами.
- Кнопки «Вернуться» и «Выйти» используют единую красную Base64-иконку без лишнего lore.
- Основные кнопки, категории, анимации, темы витрины и системные действия получили собственные Base64-иконки.
- Заголовки Machine и выбора анимации используют чёрный цвет
&0; пользовательские заголовки самих кейсов остаются настраиваемыми. - Lore Machine приведён к единому RGB-дизайну с разделами «Основная информация», «Текущие параметры» и «Действие».
- Плейсхолдеры голограммы отображаются в Machine уже подставленными, а не буквальным текстом
{display-name}. - В
gui.ymlоставлены только изменяемые пользовательские тексты, lore предпросмотра и оформление редкостей. - Слоты, навигация, системные иконки, звуки и дизайн Machine теперь находятся в коде.
Выбор анимаций
- Анимации разделены на «Обычные» и «С мобами».
- Разделы доступны и игрокам, и администратору в Machine.
- Категории и кнопка возврата используют Base64-головы.
- Убраны служебные строки о категории, технических эффектах и внутреннем способе отображения.
- Каждая анимация получила RGB-название, собственную иконку и понятное визуальное описание.
- Выбор игрока хранится отдельно для каждого сочетания «игрок + кейс».
- Исправлена ошибка, из-за которой разные кейсы использовали одну общую выбранную анимацию.
Плавное и безопасное обновление GUI
- Сервисы анимации открытия и обновления слотов вынесены в общую библиотеку pnLibrary для повторного использования в других плагинах.
- GUI появляется от центра к краям, а поддерживаемые сервером заголовки раскрываются плавно.
- Быстрое закрытие и повторное открытие больше не оставляет инвентарь частично пустым: незавершённая сессия сначала восстанавливает все предметы.
- Отложенное обновление проверяет, что у игрока всё ещё открыт именно тот инвентарь, для которого оно создавалось.
- При изменении настройки обновляются только действительно изменившиеся слоты.
- С ProtocolLib дополнительно отправляется отдельный пакет
SET_SLOTс отслеживаниемcontainerIdиstateId. - Bukkit-инвентарь остаётся основным состоянием, поэтому без ProtocolLib используется безопасное штатное обновление.
- Убраны мигание, повторное раскрытие всего меню и одновременное обновление соседних Base64-кнопок.
Исправления
Отложенные награды и хранение
- Pending-награда записывается до запуска анимации и не может быть перезаписана другим открытием.
- Исправлена блокировка следующего открытия сообщением о необходимости сначала получить отложенную награду.
- Активная анимация не позволяет обработчику входа преждевременно выдать её pending-награду.
- При ошибке сохранения стоимость безопасно возвращается, если отсутствие записи подтверждено.
- Если состояние хранилища определить нельзя, открытие останавливается без повторной выдачи.
- Старая однозначно определяемая
PERSONAL-награда без сохранённой команды может быть восстановлена из актуальной конфигурации. - Настройки выбранной анимации сохраняются по ID кейса в SQLite, MySQL и MongoDB.
Кейсы, шаблоны и голограммы
- При применении настроек кейса обновляются не только награды, но и связанные визуальные параметры.
- После изменения конкретного кейса обновляются его голограмма и витрина без пересоздания остальных.
- Исправлено сохранение нового
display-nameво всех меню и подсказках команд. - Исправлены удаление кейса, очистка его ключа и обновление списка загруженных кейсов.
- Конфликтующие привязки блоков обнаруживаются до применения новой конфигурации.
- При ошибке YAML старые рабочие кейсы остаются активными вместо частичной перезагрузки.
- FancyHolograms и DecentHolograms используют единый жизненный цикл и безопасный выбор провайдера
AUTO.
Команды и сообщения
- Панель
/pncasesполучила отдельный блок состояния с версией, поддерживаемыми серверами, обновлением и Discord без скрытого hover. - Команды в панели стали интерактивными: нажатие подставляет выбранную команду в строку чата.
- Убрана большая статическая служебная секция
command-menuиз YAML. - Исполнитель команд и автодополнение объединены в одном классе.
- Автодополнение показывает только существующие кейсы и реально используемые ключи.
- Удалён неиспользуемый
primaryизmessages.yml. config.ymlсокращён до базы данных, провайдера голограмм и символов наград.- Удалён неиспользуемый
case-files.auto-export.