Небольшое обновление с исправлениями ошибок. Спасибо requeim за очень подробный отчёт и Lunar за то, что снова поделился заметками со своих серверов!
ExecutableBlocksExecutableItems
- Заголовки блоков теперь значительно меньше нагружают сервер при использовании DecentHolograms: теперь они обновляются, вместо того чтобы каждые несколько секунд удаляться и создаваться заново. На больших серверах с большим количеством блоков разница должна быть заметна.
Все плагины (SCore)
- Предмет, который нельзя выбросить, мог исчезнуть при заполненном инвентаре. Теперь вместо потери он выпадает на землю.
Конфигурации не изменяются. Если после обновления что-то работает некорректно, создайте сообщение в канале для багов.
- Активатор с неправильным названием option: (например, из-за опечатки) больше не запускается как активатор клика. Теперь он отключается, а в консоли предлагается правильное название.
- Условия с плейсхолдерами стали более гибкими: теперь можно сравнивать значение с плейсхолдером игрока, например %player%, а также использовать простые вычисления, например %player_y%-0.2.
- Условие «может сломать целевой блок» теперь проверяет именно тот блок, который игрок фактически сломал или по которому кликнул.
- %block_item_material% теперь работает с большим количеством блоков, например настенными факелами, настенными табличками и цветочными горшками.
Это обновление объединяет изменения из двух выпусков и исправляет три проблемы, о которых сообщили в нашем Discord, включая уязвимость в рецептах печи, а также десять ошибок, найденных и исправленных Lunar на собственных серверах. Большое спасибо Lunar за подробные отчёты и помощь — без него большая часть этих исправлений не вошла бы в это обновление.
ExecutableCraftingExecutableBlocks
- Исправлена уязвимость в рецептах печи. Обычный ванильный предмет, помещённый в печь, можно было превратить в кастомный результат рецепта, требующего ингредиент ExecutableItems, если покинуть область, чтобы чанк выгрузился, а затем вернуться. Теперь печь проверяет настоящий ингредиент в момент получения результата. Настоящие кастомные ингредиенты продолжают переплавляться как раньше.
SCore
- Значительно снижена нагрузка от заголовков блоков на больших серверах. Заголовки, содержащие плейсхолдер, теперь обновляются только рядом с игроками и группируются по чанкам, а заголовки без плейсхолдеров больше не обновляются каждые несколько секунд. Они по-прежнему отображаются при установке блока и обновляются после перезагрузки.
ExecutableItems
- Правила инструментов теперь поддерживают группы материалов, такие как ALL_ORES или ALL_TERRACOTTA. Ранее они принимались конфигурацией, но молча игнорировались, из-за чего предмет не мог добывать соответствующие блоки.
- Условия блоков «контейнер пуст» и «контейнер не пуст» теперь работают с меньшими затратами ресурсов для контейнеров, содержащих большое количество предметов.
SCore
- Игроки в режиме наблюдателя больше не активируют предметы (циклы, приседание, экипировка и т. д.) и не расходуют их использования. Это опциональная функция: установите disableActivatorsInSpectator: true в config.yml, чтобы включить её. Вход, выход, смерть, возрождение, введённые команды, а также перемещение предметов в инвентарь и из него по-прежнему работают в режиме наблюдателя.
- При перемещении предмета в левую руку или между хотбаром и инвентарём с помощью цифровой клавиши больше не теряются и не дублируются эффекты «при удержании». Теперь выход из слота всегда обрабатывается перед входом в новый.
- Взятие блока / предмета (средняя кнопка мыши, Paper) теперь считается выходом предмета из инвентаря и его последующим входом, поэтому эффекты удаляются и применяются так же, как при любом другом перемещении.
- Активаторы equip и unequip теперь определяют реальный слот брони, поэтому ограничение их работы на определённый слот, например [39] (шлем), теперь работает корректно.
ExecutableBlocks, ExecutableCrafting, ExecutableEvents, MyFurniture, ExecutableLevers, CustomPiglinsTrades
- На загруженных серверах при одновременном истечении большого количества кулдаунов могла возникать ошибка. Исправлено.
- Команды других плагинов, начинающиеся так же, как команда SCore (например, launchprojectile, начинающаяся с LAUNCH), перехватывались SCore и не работали. Теперь SCore перехватывает команду только при полном совпадении её имени.
- DELAYTICK или DELAY, написанный внутри текста другой команды (например, команды, которая сохраняет другие команды для последующего выполнения), ошибочно воспринимался как задержка всей строки и приводил к сбою активатора. Теперь такая команда обрабатывается самостоятельно.
- Плейсхолдеры, вложенные внутрь другого плейсхолдера PlaceholderAPI (например, %javascript_x_%block_lower%,a,b%) в подкомандах IF, AROUND, NEAREST и других, работали некорректно. Теперь они корректно обрабатываются, в том числе отдельно для каждой цели, если команда выполняется для нескольких игроков.
- Взвешенная случайная запись, расположенная сразу после плейсхолдера (<%placeholder%::weight>), теряла свой вес. Исправлено.
- Переменная, имя которой формируется из другой переменной (%var_world%var_selection%%), теперь работает независимо от порядка объявления переменных.
Существующие конфигурации не изменяются: единственная новая настройка отключена по умолчанию.
- Пересобраны с новой версией SCore, других изменений нет.
Если после обновления что-то работает некорректно, создайте сообщение в канале для багов. Спасибо всем, кто сообщил об этих проблемах!
Это обновление исправляет ряд ошибок, о которых сообщалось в нашем Discord, и добавляет две новые опции.
ExecutableItemsExecutableCrafting
- Сообщение, отображаемое при получении предмета, теперь показывает настоящее название предмета, а также корректно заполняет счётчик использований и другие плейсхолдеры.
- Лор предметов теперь может использовать MiniMessage на Paper и его форках. Строка лора, начинающаяся с <, обрабатывается как MiniMessage, остальные строки сохраняют обычные цвета &, поэтому оба стиля могут использоваться в одном предмете. Предметы, не использующие MiniMessage, не затрагиваются.
ExecutableEvents
- Рецепты наковальни теперь выполняют свои команды. Команды игрока раньше не выполнялись, а команды предмета не оказывали никакого эффекта на получаемый предмет.
- Рецепт с пустым результатом больше не ломает список рецептов или редактор.
- Новое: рецепт теперь можно отключить без его удаления. Переключатель Enabled в редакторе рецепта делает невозможным его создание и удаляет его из книги рецептов после перезагрузки.
SCore
- Настройка отключённых миров теперь учитывается везде. Многие активаторы, такие как нацеливание моба на игрока и большинство событий сущностей и блоков, раньше срабатывали в каждом мире независимо от этой настройки.
Остальная часть набора плагинов опубликована заново с новым SCore внутри, без собственных изменений.
- Открытие списка предметов через /ei show больше не приводит к зависанию сервера. Каждый значок заново создавался на каждой странице; теперь они сохраняются до тех пор, пока вы не отредактируете объект.
- Вложенные условия теперь работают корректно. IF a IF b command1 <+> command2 раньше выполняло command2, даже если внутреннее условие было ложным.
- Условие больше не удаляет пробелы внутри плейсхолдера, поэтому сравнение текста, содержащего пробелы, теперь корректно совпадает.
- Переменная, читаемая внутри команды сущности, теперь использует правильного игрока. Переменная для конкретного игрока раньше всегда возвращала своё значение по умолчанию.
- Заголовки блоков больше не спамят ошибками на серверах Folia. На Paper и Spigot ничего не изменилось.
Спасибо всем, кто сообщил об этих проблемах. Если после обновления что-то работает неправильно, создайте пост в канале для багов.
SCore (все плагины):
- Исправлена проблема с GetItem, где в условии if отсутствовал символ :, из-за чего любой материал с "IA" в названии, например DIAMOND_BLOCK, ошибочно распознавался как предмет ItemsAdder.
- Добавлена дополнительная задержка в 2 тика для механики сброса после окончания EQUIPMENT_VISUAL_REPLACE, чтобы исправить проблему, при которой сброс происходил слишком рано.
- Подробное объяснение: предыдущие тесты показали, что проблема не возникает, если длительность маскировки составляет менее 10 тиков, но с большей вероятностью проявляется при значениях от 20 тиков и выше. Механика сброса выполнялась слишком рано, из-за чего последние 1–2 задачи маскировки выполнялись уже без задачи сброса, которая должна была отменить маскировку. В результате она сохранялась до тех пор, пока в целевом слоте не происходило обновление.
- Добавлена дополнительная логика в EQUIPMENT_VISUAL_CANCEL для корректного снятия маскировки с использованием логики EQUIPMENT_VISUAL_REPLACE: пакеты повторно отправляются всем игрокам, чтобы они снова отображали правильную экипировку.
SCore
Исправления
- Исправлен спам IllegalStateException: zip file closed из глобальной задачи активатора (ActivatorEIFeature.activateOptionGlobal) — возникал из-за конфликта с загрузчиком классов при перезагрузке сервера. 831a26fd (сопутствующее исправление ExecutableItems@d754388e).
- Исправлено разрешение вложенных плейсхолдеров переменных SCore (%score_variables_X_{score_variables_Y}%) — теперь они корректно обрабатываются вместо ошибки на вложенном плейсхолдере. eb0170a4.
- Folia — спам голограмм Block Title (IllegalStateException, вызовы автообновления сущности выполнялись вне потока соответствующего региона) — remove() теперь безопасно работает на Folia. b082215a. Частичное исправление: spawn()/update() по-прежнему выполняются синхронно; если после этого обновления спам сохранится, потребуется дополнительное исправление.
- Исправлено игнорирование аргумента distance: у селектора AROUND внутри blockCommands (при обычных командах он уже работал корректно). 3b5d222b.
ExecutableItems
Исправления
- Исправлен обход ограничения "Cancel Place in Bundle" с помощью перетаскивания предметов — ранее ограничение применялось только при добавлении предметов через клик в инвентаре.
- Исправлено падение TPS при открытии и закрытии сундуков, содержащих ExecutableItems.
ExecutableBlocks
Исправления
- Folia — спам голограмм Block Title — исправление Folia из SCore теперь включено через обновлённый встроенный SCore.jar (ранее используемый JAR содержал старую версию без исправления). Те же ограничения частичного исправления, что и для SCore.
MyFurniture
Исправления
- Исправлен краш/ошибка при использовании активатора PLAYER_BREAK, если для него настроены команды — возникала повторная попытка удаления мебели во время выполнения команды. c84db9d.
- EE: теперь в активаторе LEAVES_DECAY можно использовать плейсхолдеры материалов.
- SCore: улучшена логика IF — добавлена поддержка одиночных | и &, а также пользовательского плейсхолдера rand.
Пример: IF %rand:1|2%=2- EI: исправлена проблема с getEntity() в EntityReceiveEffectEvent — событие теперь приводится к EntityEvent, что позволяет корректно получать объект Entity.
ExecutableCrafting
- Исправлено множество ошибок.
SCore (все плагины)
- Дополнительный дроп (Extra Drops) из AuraSkills теперь совместим с командами переплавки (smelt).
- Действия SET_BABY и SET_ADULT теперь поддерживают лягушек и головастиков.
- Улучшена производительность.
ExecutableItems
- Исправлен автоматический импорт эффекта свечения (Glow) при выполнении команды /ei create с предметом в руке.
- В редактор компонентов расходуемых предметов (Consumable Components Editor) добавлены новые возможности:
- clear_all_effects — удаляет все эффекты после использования предмета.
- remove_effects — удаляет указанные эффекты после использования.
- apply_effects — накладывает указанные эффекты после использования.
- teleport_randomly — случайная телепортация с настраиваемым радиусом (эффект Chorus Fruit).
- play_sound — воспроизводит звук после полного поедания предмета.
- Исправлено: устранено множество проблем в версиях ниже 1.14.
- Новое: добавлены компоненты оружия из 1.21.11 (Attack Range, Piercing, Kinetic).
- Новое: добавлены компоненты Dye и Sulfur Cube.
- Улучшение: API улучшен и получил более полную и корректную документацию.
- Исправлено: множество других ошибок.
Добавлена поддержка ADD_ITEM_NBT для команд предметов (ItemCommands) и игрока (PlayerCommands).