• Исправление для параметра max scale у стойки для брони — теперь поддерживаются дробные числа.
• Добавлены 2 новых разрешения:
cmi.command.armorstand.scalemax.[value] и cmi.command.armorstand.scalemin.[value], которые задают минимальные и максимальные значения масштаба индивидуально для игрока. Обратите внимание: значения из конфигурации всё ещё учитываются. Если у игрока задано разрешение с максимальным значением, то будет выбрано наибольшее из двух (из конфига и из разрешения). Таким образом, конфигурация определяет общие лимиты, а разрешения позволяют их превышать.
• Команда /spawnmob теперь поддерживает случайный масштаб мобов через переменную scale{0.5-2.5}.
• Добавлена команда /cmi trim (playerName) (trimpattern) (trimMaterial), которая применяет заданные украшения (тримы) к броне, находящейся в руке игрока. Если шаблон или материал не указаны, откроется GUI с выбором.
• Исправлена ошибка на серверах Folia, связанная с динамическими табличками.
• Небольшое исправление, из-за которого глобальные переменные [prefix], [suffix], [name]
не переводились, если целью была консоль.
• Добавлены пропущенные примеры статистик в файл ranks.yml — они были допустимы, но отсутствовали в примере.
• Исправлены ошибочные названия статистик в ranks.yml. Например, "ChestOpen" заменено на правильное "ChestOpened". Некоторые другие имена также обновлены, хотя старые и новые варианты всё ещё работают.
• Добавлена опция (по умолчанию включена), запрещающая игрокам менять ник на уже существующее имя другого игрока. Теперь не нужно вручную добавлять игроков в чёрный список — система сама блокирует совпадения. Однако список всё ещё работает. Игрок с разрешением cmi.command.nick.bypassrealname может обойти это ограничение. Это предотвращает путаницу и ошибки при определении, к какому игроку относится упоминание имени.
• Исправлена проблема с MySQL-базами данных при добавлении новой записи о игроке.
• Теперь во время прогрева команды (warmup) игрок не может открывать GUI, не отменив текущее действие.
• Проблема, при которой новые записи игроков могли не создаваться при использовании базы данных MySQL с включённым авто-бэкапом.
• Команда /vanishedit больше не открывает GUI при прямом изменении состояния; без указания нового состояния теперь корректно переключает текущее.
• Ошибка работы действий scale и других на серверах Paper 1.21.10.
• Ошибка команды /checkban.
• Ошибка команды /cplaytime, добавлявшей лишнее игровое время.
• Сообщение об ошибке при использовании старого метода голограм на старых серверах.
• Проблема с шестнадцатеричными цветами в голограммах, которые иногда не переводились.
• Проблема с сохранёнными предметами, возвращавшимися с жёлтым курсивным именем.
• Оптимизирована команда /cmi reload, теперь работает быстрее, особенно при большом числе диалогов или голограмм.
• Изменена логика команд ban и tempban — теперь корректно работают с игроками, никогда не заходившими на сервер (предварительные баны).
• Команда /spawnmob расширена для лучшей поддержки area_effect_cloud, включая пользовательские визуальные эффекты и частицы (пример: /spawnmob area_effect_cloud;radius{32};potion{healing};radiustick{-0.2};particle{dust:green}).
• Добавлено отсутствующее сообщение о смерти от облака эффектов.
• Теперь команда /itemname по умолчанию задаёт белое имя без курсива (вместо жёлтого ванильного).
• Исправлена команда scan: результаты больше не будут случайными, все записи отображаются в порядке их фиксации.
• Добавлено удобство: результаты scan подчёркиваются при телепортации к ним, чтобы легче отслеживать посещённые места.
• Небольшое улучшение команды /cmi enchant: теперь показываются более известные названия чар (например, вместо damageall — sharpness). Сообщение упрощено, а автозаполнение выводит имена чар так, как они отображаются на предмете.
• Добавлена дополнительная информация в /cmi status: при наведении на первую строку показывается количество ожидающих задач для каждого плагина; при наведении на строку CPU — имена потоков с наибольшей активностью.
• Небольшие корректировки процесса сохранения данных игроков для предотвращения использования устаревших методов запросов.
• Исправлено: можно было сидеть на счастливом гаста, который потом удалялся, оставляя игрока в воздухе.
• Исправлена ошибка автозаполнения значений gamerule при некорректно заданном имени gamerule.
• Исправлено: требование к возрасту аккаунта для рангов теперь корректно распознаётся.
• Внесены небольшие внутренние изменения в обработку асинхронных потоков.
• Небольшое быстрое исправление, связанное с управлением скинами.
• Небольшое исправление сохранения данных игроков.
• Исправлена ошибка, связанная с диалогами и опцией типа singleton, из-за которой отображался символ «:», даже если метка не была задана.
• Добавлена возможность использовать плейсхолдеры в режиме singleton при определении варианта по умолчанию.
• Исправлен плейсхолдер %cmi_user_balance%, возвращавший некорректное значение при большом балансе.
• Исправлена ошибка обработки банов на старых серверах.
• Небольшое изменение команды banlist — теперь кнопка разблокировки отображается в начале списка для более аккуратного вида.
• Исправлена проблема на серверах Folia, из-за которой голограммы некорректно обрабатывали многострочный текст.
• Поддержка версии 1.21.9. Имейте в виду, что ветка Paper всё ещё находится в экспериментальном режиме, и некоторые функции могут не работать. Известная проблема — скины игроков могут не применяться.
• Исправлена обработка переменной %filler% при наведении на строки голограммы.
• Исправлена ошибка импорта домов Essentials в некоторых случаях.
• Добавлен новый плейсхолдер %cmi_p_[nickname/uuid]name% для получения реального имени игрока.
• Добавлены новые плейсхолдеры %cmi_baltop_cname[1-10]% и %cmi_playtimetop_cname_[1-10]% для получения реальных имён игроков из топов.
• Добавлена возможность использовать несколько переменных %filler% в строках голограмм, что позволяет центрировать текст внутри существующего текста, если заключить его с обеих сторон этой переменной.
• Небольшое улучшение команды /scan — теперь при указании только названия мира без диапазона будет сканироваться весь мир.
• Добавлена опция автозаполнения пустого пространства в голограммах с помощью переменной %filler% и настройки количества заполнителя в GUI. Имейте в виду, что выравнивание зависит от шрифта, поэтому возможны небольшие смещения. Пример строки:
1. %cmi_baltop_name_1%%filler%%cmi_baltop_money_1%
Расстояние задаётся в GUI голограмм, по умолчанию — 245 поинтов, что немного меньше максимальной ширины голограммы при новом методе.
• Для китов в GUI описание теперь показывается под названием, а не в конце.
• Небольшие корректировки в обработке банов для серверов на Paper.
•Исправлена работа чат-баблов на серверах Paper 1.21–1.21.3.
• Дополнительная корректировка обработки тихого редактирования сундуков.
• Исправлена ошибка при проверке создания портала.
• Небольшое исправление/изменение для /maxhp, теперь поддерживаются дробные значения (например, /maxhp set Zrips 20.5).
• Исправлена команда /dialogs, переменная -s теперь обрабатывается корректно.
• Исправлена обработка локализации для некоторых языков.
• Улучшена команда /cmi sc для новых версий: теперь текст табличек вставляется в том же порядке, в котором был скопирован, в зависимости от того, с какой стороны вы смотрите на табличку. Ориентация таблички больше не имеет значения, всё зависит от направления взгляда игрока.
• Добавлена новая переменная oneside для команды /cmi sc, которая копирует только одну сторону таблички (ту, на которую вы смотрите), и при вставке изменяет только её.
• Теперь команда /cmi sc учитывает права на цвета табличек: текст при вставке будет очищаться от недоступных цветов в зависимости от прав cmi.color.signs.[color].
• Добавлена опция для ограничения редактирования шалкеров из инвентаря: требуется право cmi.openshulker.edit. По умолчанию оно выдано, но вы можете его отрицать, чтобы оставить только возможность предпросмотра без редактирования.
• Корректировка проверки AFK для игроков, которые заходят на сервер и не выполняют никаких действий.
• Исправлен баг, из-за которого notarget мешал животным реагировать на вас, когда вы держите в руках их еду.
• Улучшено автодополнение для команды /saveditems, теперь корректно подставляются названия сохранённых предметов для подкоманд get/remove.
• Небольшое улучшение механизма обнаружения экономики: теперь выполняется дополнительная проверка после полной загрузки сервера, если экономический плагин загружается позже CMI (что является некорректной настройкой, так как плагины экономики должны грузиться первыми).
• Исправлена ошибка форматирования баланса экономики в некоторых случаях.
• Внесены внутренние изменения в обработку чат-баблов (chatbubble), как подготовка к будущему обновлению и расширенной поддержке Paper-серверов с новыми возможностями для игровых сообщений (работа в процессе).
• Полностью переработана команда mirror:
— Добавлены новые опции, расчет работает по-другому, чем раньше.
— Появились визуальные частицы, показывающие, где будет размещён блок, с динамической информацией о количестве.
— По умолчанию ограничение — максимум 16 блоков за действие. В action bar выводится сообщение о том, сколько блоков из потенциальных будет поставлено.
— Всего теперь 22 режима зеркала, включая 3 режима для построения блоков по кругу.
— Добавлен оффсет начальной точки (8 вариантов), что покрывает все комбинации зеркалирования — теперь можно строить и с чётным количеством блоков.
• Улучшена производительность при включённой опции принудительной загрузки данных игрока при входе.
• Исправлена работа команды invremove.
• Исправлено сообщение об ошибке при отправке bungee-тип сообщений.
• Возвращена поддержка серверов на Java 8 (на время).
• Изменена обработка shulkerbackpack для устранения потенциального эксплойта с чит-клиентами.
• Исправлена проблема с командой recipe, когда некоторые рецепты могли пропускаться при использовании datapack'ов или сторонних плагинов.
• Добавлена автоматическая система бэкапов базы данных:
— Работает по умолчанию, сохраняет ключевые таблицы каждые 24 часа.
— Проверка бэкапов — через 1 минуту после запуска сервера и затем каждый час.
— Сохраняются в отдельную папку DatabaseBackups как sqlite-файлы, независимо от того, используется MySQL или SQLite.
— Файлы могут автоматически архивироваться (например, с 500 МБ до ~65 МБ).
— По умолчанию сохраняются только player data и player rewards.
— При восстановлении архив будет автоматически разархивирован.
— Кастомные бэкапы (имя должно заканчиваться на .db) не удаляются автоматически.
• Новый командный инструмент:
/cmi database [action] (playerName) (dataType) (fileName)
— Можно создать новый бэкап (только из консоли) или восстановить данные игрока.
— При создании по умолчанию файл получает отметку времени и участвует в автосистеме.
— При восстановлении можно указать конкретный бэкап или использовать последний (cmi.sqlite.db).
— По умолчанию сохраняются/восстанавливаются основные таблицы данных игрока и наград.
• Дополнительные исправления:
— Ошибка при использовании команды titlemsg в новых версиях.
— Ошибка с silent chests.
— Некорректная работа usermeta при сохранённых hex-цветах.
— Чеки больше нельзя внести с помощью левой кнопки или Q, только правым кликом.
• Исправлено: проблема с командой itemframe на Spigot 1.21.6+ при установке состояния невидимости.
• Оптимизация: улучшена обработка голограмм при выходе игрока.
• Изменено: команда notarget теперь позволяет игрокам подбирать сферы опыта.
• Исправлено: команда killall некорректно работала при указании диапазона.
• Оптимизация: повышена производительность при глобальной замене переменных в строках локализации и командах.
• Исправлено: сохранение инвентаря на серверах Spigot.
• Исправлено: заряд полёта продолжал тратиться в режиме наблюдателя, теперь расход идёт только в Survival и Adventure.
• Диалоги:
— Добавлена возможность числового сравнения плейсхолдеров (%placeholder%>=20).
— Добавлена проверка на отсутствие определённого разрешения через !permission.
• Исправлено: проблема с тихим открытием сундуков.
• Исправлено: команда /heal принимала отрицательные значения
• Исправлено: команда /itemframe не работала на серверах версии 1.21.6+
• Исправлено: GUI для gamerule сжимался при использовании последних версий CMILib
• Добавлена поддержка Custom Model Data для работы с предметом elytra — теперь можно запросить конкретный предмет с заданным custom model data для запуска, потребления или общего использования при полёте.
• Оптимизирована работа с голограммами при использовании нового метода отображения
• Исправлено: команда /give показывала двойное сообщение об ошибке, если не удавалось определить целевого игрока; также исправлено некорректное сообщение, когда запрашиваемый предмет не был распознан
• Исправлено: команда /cuff показывала информационное окно при неудаче из-за попытки надеть наручники на самого себя
• Добавлена возможность задавать условия для диалогов не только по правам (permission), но и по значению плейсхолдера. Теперь можно проверять либо общее значение плейсхолдера, либо конкретное, указанное вами. Подробности — на zrips.net/cmi/commands/dialogs в разделе new conditions
Всё о диалогах!!!
Подробнее: Dialogs – Zrips
• Добавлено текстовое поле ввода для диалогов. Переменная [value] может использоваться в секциях commands/opendialog для вставки введённого значения, которое затем можно обрабатывать под свои нужды.
• Добавлена возможность задавать кастомное значение для выбора одиночной кнопки (singleton) в диалогах, чтобы использовать переменную [value] внутри команд или открытия диалога на основе выбранного значения, вместо жёстко заданных команд. Теперь в секции singleton можно задать базовое действие для всей группы, а не для каждой опции отдельно — это упрощает настройку, если нужно использовать [value] для полу-динамических результатов.
• Добавлена возможность использовать [value] для булевого типа ввода в диалогах, что заменит его на true/false в зависимости от выбора. Опционально можно задать собственное значение, которое будет выводиться вместо true/false при выборе или снятии галочки.
• Поддержка плейсхолдеров в некоторых секциях конфигурации ввода для диалогов. Подробнее на вики.
• Добавлена возможность скрывать поля ввода, визуальные элементы, кнопки и отключать целые диалоги, если у игрока нет определённого разрешения. Это позволяет скрывать части интерфейса диалога. Учтите, что при отключении кнопки она будет заменена на 1-пиксельную невидимую кнопку, чтобы сохранить расположение элементов (актуально только при более чем одном столбце кнопок). Поля текста и ввода в таком случае будут полностью скрыты.
• Изменён источник выполнения команд по умолчанию в диалогах — ранее команды выполнялись от имени консоли, теперь от имени игрока. Чтобы вернуть выполнение от консоли, добавьте asConsole! в начало команды. Это сделано для предотвращения потенциальных эксплойтов и ошибок в будущем, когда игроки выполняют команды, к которым у них нет доступа.
• Проведён общий рефакторинг, обновление и улучшение обработки диалогов для упрощения внутренней логики и облегчения использования API.