Перейти к основному содержимому

История изменений

Заметки о выпусках расширений и плагинов BTC Studio.

Каждая запись указывает расширение, его версию, дату выпуска и перечень изменений. Записи добавляются сюда по мере выхода новых версий.

Скоро

Эти расширения готовы и ожидают публикации. Они перечислены здесь, чтобы вы знали, что готовится: ни один релиз ещё не опубликован, а приведённые ниже номера версий — это те, которые эти релизы получат.

Corpse Extension v0.1 — первый релиз

  • Трупы отрисовываются отдельно для каждого зрителя, как собственные entity-дисплеи движка, поэтому их видят все, кто рядом; анимация модели и таблички с именами работают на бэкендах BetterModel, BTC Mob NPC и MythicMobs NPC.
  • Работает на Folia: всё планирование идёт через Folia-совместимый планировщик, а выпадение предметов, сферы опыта и частицы выполняются в регионе, которому принадлежит труп.
  • Инвентарь, который хранит труп, переживает перезапуск, падение сервера или релоад. Трупы сохраняются в MySQL, когда она доступна, иначе в папке плагина, и восстанавливаются при запуске.
  • onlyOwnerCanLoot действительно соблюдается, а сбор лута привязан к id сущности самого трупа, а не к любому правому клику в радиусе четырёх блоков.
  • Определение трупа выбирается при каждой смерти по миру и приоритету, а его время жизни вычисляется ровно один раз, для этого трупа.
  • События on_corpse_spawn, on_corpse_loot и on_corpse_expire проходят через конвейер триггеров движка и публикуют владельца, лут и позицию трупа как контекст.
  • displayName, showDisplayName, dropOnInteract, renderArmor, playDeathAnimation и deathAnimationName учитываются полностью, а большинство настроек — динамические значения, так что ими можно управлять через плейсхолдеры и факты.
  • Светящийся контур, отрисовываемый на клиенте, с настраиваемым цветом, и звуки трупа, отправляемые каждому игроку поблизости, а не на весь мир.
  • Факты has_corpse и corpse_count, аудитория corpse_owner_audience, corpse_waypoint с расстоянием и направлением до собственного трупа, corpse_recovery_objective, а также corpse_admin_command с подкомандами list и clear.
  • Окно защиты лута, по истечении которого труп открывается всем.

Custom Biome Extension v0.5

  • Пользовательские биомы существуют сразу. Определение регистрируется в живом реестре сразу при сохранении, а не только после перезапуска сервера. Сгенерированный датапак становится слоем хранения, а не единственным путём.
  • Исправлено: сервер игнорировал сгенерированный датапак, потому что его pack format был жёстко задан старым значением, а сам он записывался в папку, которую сервер никогда не читает.
  • Исправлено: baseBiome не действовал ни на что, кроме plains. Теперь биомы строятся на основе базового биома, который держит сервер, и кодируются его собственным кодеком, поэтому спавны мобов, фичи и карверы наследуются, а не теряются.
  • Исправлено: смена биома пробивала дыры в мире. Обновление отправляло пакеты выгрузки чанка, за которыми сервер никогда не присылал повторную отправку. Теперь клиенты получают обновление биома, построенное по реальным данным чанка.
  • Исправлено: leave_biome_event никогда не срабатывал. Слушатели входа и выхода перезаписывали состояние друг друга, поэтому результат зависел от порядка регистрации.
  • Исправлено: покраска записывала каждый блок колонны вместо одного на ячейку 4x4x4, и делала это из вызывающего потока. Теперь записи планируются в регионе, которому принадлежит каждый чанк.
  • Биом, который сервер отказался бы сериализовать, теперь отклоняется при регистрации с указанием проблемного значения. Раньше он принимался, а затем ломал каждый вход в игру.
  • Наложения биома для отдельного игрока (player_biome_overlay_action): показать одному игроку другой биом, не трогая мир и не затрагивая остальных.
  • Покраска региона (paint_biome_region_action) со снимками и restore_biome_action, чтобы вернуть регион в прежнее состояние.
  • biome_transition_cinematic: менять биом, который видит игрок, по ходу кат-сцены.
  • custom_biome_preset: делить цвета и визуальные атрибуты между биомами с переопределением для каждого определения.
  • explore_biome_objective и biome_discovery_fact: задания, которые выполняются посещением биомов.
  • Каждая читающая запись получила опцию source, выбирающую между тем, что показывают игроку, и тем, что содержит мир.
  • Удалены /tw biome setcolor, создававший одноразовые биомы, которые никогда не сохранялись, и режим факта HASH, значение которого не было стабильным между перезапусками.
  • Jar расширения уменьшился с 2,6 МБ до 230 КБ: он больше не включает библиотеки, которые сервер уже предоставляет.

Enchantment Creator Extension v0.8

  • levelMode у механики сравнивает runOnLevel как точный уровень, как минимум (AT_LEAST) или как максимум (AT_MOST). Раньше было доступно только точное совпадение.
  • eventPhase выполняет действия механики внутри текущего события Bukkit, поэтому отмена события или изменение урона действительно срабатывают. Для отложенных взаимодействий Typewriter ставьте false.
  • clientSideEffects теперь учитывает клиента и получил действие client_particle_effect: кастомный артефакт BTC использует рендерер на PacketEvents, когда тот доступен, а публичный артефакт для Paper — резервный путь через Bukkit, адресованный конкретному игроку.
  • Ключи реестра теперь строятся на основе id. Прежний name сохраняется как устаревший алиас при загрузке существующих страниц и предметов, так что ничего переделывать не нужно.
  • Публичный артефакт намеренно не зависит ни от BTC-CORE, ни от BTC Velocity: он работает на Paper 1.21.x с Java 21 и собирается на JDK 25 в байт-код Java 21.

Numerical Storage Extension v0.9

  • transactionMode в конфигурации транзакции: INTERNAL сохраняет путь через PlaceholderAPI и консольные команды, VAULT работает напрямую через Vault Economy API и игнорирует amountPlaceholder и поля команд.
  • addCommand и removeCommand были описаны наоборот. addCommand завершает внесение в хранилище и проверяется до сохраняемого изменения; removeCommand завершает снятие.
  • Сохранение теперь асинхронное, с блокировками изменений на каждый артефакт и коротким кэшем, так что два одновременных пополнения больше не мешают друг другу.
  • Файлы хранилища переходят на JSON-схему версии 2 и технический путь артефакта. Старый файл на основе смыслового artifactId сохраняется в backups/numericalstorage/ и мигрируется при первом обращении — перед обновлением сделайте резервную копию каталога assets/ Typewriter.
  • artifactId — это генерируемый технический идентификатор: оставьте поле пустым, Typewriter заполнит его сам.
  • Плейсхолдеры принимают явный аргумент определения (%typewriter_ns_balance_bank%), что снимает прежнюю неоднозначность разбиения по подчёркиваниям, когда идентификатор определения сам их содержит.
  • Опциональные ключи с учётом профиля, когда установлена интеграция Profiles.

2026-08-07

QuestCodex Extension v2.8

  • Настоящие достижения Minecraft. Новая запись advancement_definition создаёт подлинные достижения в наборе данных, которым управляет само расширение: они появляются в ванильном окне достижений со своей вкладкой, деревом, рамками и всплывающими уведомлениями. Поле parent ссылается на другое определение, поэтому дерево рисуется в узловом редакторе.
  • grant_advancement выдаёт достижение или отбирает его и проходит по цепочке родителей, чтобы дочернее достижение никогда не оказалось получено при неполученном родителе.
  • autoGrant выдаёт достижение на первом тике игрока. Для корневого достижения именно это даёт его вкладке существование до того, как что-либо получено.
  • Исправлен порядок заданий: вложенное задание берёт порядок из своей подкатегории, задания без явного порядка больше не сливаются друг с другом, а добавление задания больше не стирает уже заданный порядок.
  • Маркеры заданий разбиты на страницы, режим сортировки индивидуален для каждого игрока, а множественное отслеживание переживает переподключение в выбранном порядке.

Release v2.8

OmniGUI Extension v0.11

  • Подсказки предметов и переключатель hideVanillaItemStats в записи конфигурации интерфейса.
  • Постраничная раскладка может содержать индикатор страницы через новую роль INDICATOR.
  • Меню проверяются при запуске сервера: слот за границами, отсутствующий шаблон или неизвестный тип кнопки называются в консоли ещё до того, как игрок откроет меню.
  • <shift:N> работает без CraftEngine, благодаря встроенному шрифту Magic Digit.
  • count и repeatY описаны как счётчики повторения слотов, а не как размер стопки.

Release v0.11

Shop Extension v1.3

  • Магазин больше не может увести баланс игрока ниже нуля. Это допускали три независимых пути.
  • Нечитаемый баланс больше не принимается за ноль, а форматированные суммы вроде 12.5k разбираются корректно.

Release v1.3

2026-08-03

QuestCodex Extension v2.7

  • Добавлены режимы отображения путевых точек: WORLD_DIRECTIONAL проецирует маркеры на сферу вокруг глаз игрока по действительному направлению на цель, TARGET_ANCHORED размещает их на самой цели, а ADAPTIVE плавно переключается между ними. HUD_LOCKED остаётся режимом по умолчанию, поэтому существующие страницы не меняются.
  • Добавлены постоянный видимый размер и угловое разнесение, чтобы несколько маркеров оставались читаемыми, когда их цели находятся на одной линии взгляда.
  • Добавлен вывод нескольких целей в одной записи путевой точки, с новыми вариантами выбора отслеживаемых задач ALL и ONE_PER_QUEST и ограничением maxTargets.
  • Исправлено игнорирование множественного отслеживания путевыми точками: задачи вторичных отслеживаемых квестов никогда не разрешались, поэтому маркер создавал только основной квест.
  • Добавлен quest_codex_locator_bar, который выводит те же разрешённые цели как точки ванильной панели локатора в Minecraft 1.21.6+, не создавая ни одной сущности.

Выпуск v2.7

2026-08-02

QuestCodex Extension v2.6

  • Добавлено устойчивое восстановление прерванных диалогов и кат-сцен Typewriter, включая последний кадр кат-сцены. Восстановление теперь сохраняет снятый снимок состояния, когда Typewriter отправляет события завершения после отключения игрока.
  • Добавлено устойчивое отслеживание нескольких квестов: меню отслеживаемых квестов, отдельные плейсхолдеры и публичный пример путевой точки с двумя квестами.
  • Добавлены клиентские путевые точки только из текста: настраиваемый текст значка, центрированные блочные дисплеи, центрированное вращение маяка, выравнивание цели по уровню, плавная интерполяция, размещение вблизи цели и настраиваемый горизонтальный конус видимости.
  • Удалены прежние слои путевых точек (item display и направляющая стрелка) до их первого публичного развёртывания.

Выпуск v2.6

OmniGUI Extension v0.10

  • Добавлены движки компоновки Flex и Composite для адаптивного размещения слотов и составных слоёв меню.
  • Добавлены переиспользуемые адресуемые представления с наследуемыми пулами компоновки, представлениями по умолчанию, «хлебными крошками», тегами представлений и необязательной интеграцией с историей.
  • Добавлены миграция схемы с учётом представлений и интеграция с QuestCodex, а также метаданные публикации в Maven.
  • Исправлено переключение представлений: меню перестраиваются без мигания закрытия и повторного открытия, а закрытие инвентаря стало безопасным для Folia.

Выпуск v0.10

Shop Extension v1.2

  • Публичное расширение Shop пересобрано и проверено с OmniGUI v0.10.
  • Сохранены существующие динамические макеты магазина, история навигации, обработка заполнителей, правила запаса и лимитов, а также пользовательские обработчики кнопок магазина.
  • Миграция с Shop Extension v1.1 не требуется.

Выпуск v1.2

MythicMobsNPC Extension v0.4.6

  • Исправлено игнорирование изменения масштаба у моделей без единой анимации — так же, как в расширении BetterModel.
  • Ванильные варианты мобов (кошка, лиса, волк, житель и подобные) теперь один раз сообщаются в консоль вместо молчаливого игнорирования: они принадлежат конфигурации MythicMobs, которая владеет личностью моба и перезаписывала бы их при каждом возрождении.
  • Исправлено, что одна сбойная запись данных отменяла все остальные записи того же пакета, из-за чего NPC мог остаться вообще без настроенных данных.
  • Эффект свечения и снаряжение теперь применяются к модели, а не только к мобу. Тело моба скрыто за моделью, поэтому применение только к мобу ничего не показывало.
  • Снаряжение теперь сообщает в консоль, когда у модели нет кости-держателя предмета, вместо молчаливого бездействия.
  • Огонь подтверждается каждую секунду, чтобы не гаснуть сам по себе, и сообщает, когда BetterModel скрывает тело, на котором рисуется пламя.
  • Исправлено дёрганье таблички с именем, когда NPC идёт или следует по дорожной сети: текстовый дисплей теперь интерполирует между обновлениями вместо телепортации рывками.

BetterModel Extension v1.3

  • Исправлено игнорирование масштаба модели у моделей без единой анимации. BetterModel пересчитывает трансформацию модели только пока идёт анимация, поэтому изменение масштаба во время выполнения никогда не доходило до статичной модели. Теперь расширение принудительно вызывает пересчёт само.
  • То же исправление относится к смещению модели, которое шло по тому же пути кода.
  • Записи данных сущности теперь действительно доходят до модели вместо того, чтобы отбрасываться. Поддерживаются: эффект свечения, цвет эффекта зелья (выводится как окраска предмета), яркость, ограничение билборда, длительность интерполяции, перенос, трёхмерный масштаб, размер коробки, снаряжение и огонь.
  • Добавлен bettermodel_bone_appearance — вариант настроек свечения, окраски, мерцания и яркости для отдельной кости, с той же системой критериев, что и bettermodel_bone_visibility.
  • Снаряжение сопоставляется с костями предметов руки и головы в BetterModel. Слоты брони один раз сообщаются в консоль вместо молчаливого игнорирования, поскольку торс и ноги модели несут её собственную геометрию.
  • Неравномерный трёхмерный масштаб теперь выдаёт предупреждение вместо молчаливого использования одной оси: BetterModel поддерживает только равномерный масштаб.
  • Любая запись данных, не имеющая смысла для трёхмерной модели (позы, варианты мобов, состояние размножения…), теперь один раз сообщается в консоль вместо молчаливого отбрасывания.
  • Свечение, окраска, яркость, билборд, перенос и снаряжение переживают перезагрузку набора ресурсов или возрождение и больше не сбрасываются к исходному виду модели.
  • Снаряжение сообщает в консоль, когда у модели нет кости с тегом ri, li или ph, вместо молчаливого бездействия — это обычная причина, по которой предмет не появляется.
  • Огонь теперь рисуется на сущности взаимодействия NPC, а не на костях модели: клиент масштабирует пламя по ограничивающей коробке сущности, а у display-сущности её нет, поэтому пламя выводилось нулевого размера.

Nexo Extension v1.0

  • Добавлены факты для проверки того, что игрок держит, несёт в инвентаре, на что смотрит и на чём стоит.
  • Добавлены переменные, дающие идентификатор и свойства выбранного предмета, блока и мебели.
  • Добавлены действия выдачи и удаления предмета, оба по идентификатору предмета Nexo.
  • Добавлены события подбора, выбрасывания и использования предмета.
  • Добавлены события взаимодействия и урона для пользовательских блоков и мебели, а также событие добычи.
  • События теперь передают свои данные (идентификатор блока, позицию, предмет в руке) дальше по цепочке, так что диалог или действие могут использовать их напрямую.

CraftEngine Extension v1.0

  • Задачи квестов работают. Их можно привязать к квесту, они сохраняют прогресс и могут запускать последовательность при завершении.
  • Добавлены факты для перезарядок, для удерживаемых и переносимых предметов, а также для блока или мебели, на которые смотрит игрок.
  • Добавлены переменные, дающие идентификаторы, свойства предметов и список загруженного контента.
  • Добавлены действия выдачи и удаления предмета, оба по идентификатору предмета CraftEngine.
  • Добавлены события подбора, выбрасывания и использования предмета.
  • Добавлены события попытки установки и удара по мебели.
  • События теперь передают свои данные дальше по цепочке.

ItemsAdder Extension v1.0

  • События блоков и мебели теперь читают ItemsAdder напрямую, а не выводятся из ванильных событий. Это делает их надёжными и убирает короткую задержку, из-за которой срабатывание могло теряться или повторяться.
  • Добавлены факты для удерживаемых и переносимых предметов, оставшихся использований, пользовательской прочности, видимости HUD и роста посевов.
  • Добавлены переменные, дающие идентификаторы, свойства предметов и шрифтовые изображения.
  • Добавлены действия выдачи и удаления предмета, оба по идентификатору предмета ItemsAdder.
  • Добавлены события подбора, выбрасывания и использования предмета.
  • Добавлены события взаимодействия, событие перед установкой мебели и событие смерти пользовательской сущности.
  • События теперь передают свои данные дальше по цепочке.
  • Исправлены задачи квестов — так же, как в расширении Nexo.

2026-07-26

QuestCodex Extension v2.5

  • Добавлено устойчивое отслеживание нескольких квестов через запись quest_codex_tracking_artifact.
  • Добавлены режим меню категорий @tracked и динамические маркеры TRACKED_QUEST_SLOT.
  • Добавлены /tw codex tracked и внутренняя команда GUI codex:tracked.
  • Добавлены плейсхолдеры PlaceholderAPI для количества отслеживаемых квестов, лимита, основного квеста, индексированных отслеживаемых квестов, статусов, задач и приоритетов.
  • Задокументирована структура публичного набора страниц: основной манифест, статический артефакт отслеживания, определения квестов и настройки GUI.

OmniGUI Extension v0.9

  • Добавлена автоматическая миграция схемы публичных страниц для встроенного хранения и прежних полей постраничной навигации.
  • Задокументирована компактная схема storagePool / storageId и navigationButtons, применяемая для уменьшения зависаний публикации в редакторе Typewriter.
  • Уточнён рекомендуемый приём меню по ссылке для больших меню QuestCodex.