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

Совместимость и обновления

Как проверить совместимость плагина BDEngine с Release, нужные методы editorAPI, внутренние зависимости и обновление установленной версии.

Зафиксировать проверенную сборку

Проверяйте плагин в Release BDEngine. Если используете возможность, пока доступную только в Beta, явно сообщите это пользователю; её наличие в Beta не доказывает совместимость с Release. Документация этой ветки рассчитана на основную версию.

В заметках к проверке запишите:

  • Версию самого плагина и конкретный проверенный .js.
  • Версию BDEngine и канал Release.
  • Среду: веб-редактор и браузер либо BDEngine App и версию приложения.
  • Нужные методы API и режим редактора, в котором доступен инструмент.
  • Требования к проекту: например, выделенная группа или открытый HeadPaint.

Версия Minecraft, выбранная для экспорта, не является версией BDEngine. Для диагностики номер сборки редактора можно увидеть в window.editorVersion в консоли; это глобальная диагностическая переменная страницы, а не метод editorAPI.

Проверка конкретной возможности

Проверяйте необходимые функции после готовности редактора и до добавления зависимого от них инструмента. Пример фрагмента внутри вашей функции инициализации:

const api = window.editorAPI;
const required = ['getSelectedObjects', 'addButtonDockMenu'];
const missing = required.filter(name => typeof api?.[name] !== 'function');
if (missing.length) {
console.warn('[my-useful-plugin] Missing editorAPI methods:', missing);
return;
}
// Здесь можно регистрировать инструмент.

Наличие window.editor не заменяет такую проверку. И наоборот, отсутствие GUI-зависимого API до bde:started может означать, что редактор ещё загружается. Например, editorAPI.headPaint появляется только при подготовке интерфейса.

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

Риск внутренних зависимостей

Использовать editor разрешено. Но внутренние подсистемы и глобальные классы могут меняться независимо от стабильных методов editorAPI. Составьте короткий список таких зависимостей: конкретные поля editor, методы объектов сцены, классы вроде Selectable и используемые детали Three.js.

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

Граница описана в статье Публичный API и внутренние объекты. Наличие свойства .editor внутри editorAPI не делает последующие внутренние обращения стабильными.

Обновление и замена

Локальные установки определяются по @namespace. Повторная установка файла с тем же namespace заменяет сохранённый код и метаданные. Другой namespace создаёт отдельную запись, даже если имя осталось тем же. Для каталожной установки идентификатором служит slug карточки, а метаданные приходят от каталога.

Установка, замена и удаление не выгружают уже выполненный код из открытой страницы. В Мои плагины появляется сообщение об изменениях и кнопка Перезапустить. После перезапуска будет загружен актуальный список и новый код.

Для проверки обновления:

  1. Установите прежнюю версию, перезапустите BDEngine и выполните её основной сценарий.
  2. Сохраните проект, установите новый файл с тем же namespace либо выберите новую версию в каталоге.
  3. Перезапустите редактор, проверьте номер версии и отсутствие второй копии плагина.
  4. Повторите действия на новом и существующем проекте, включая чтение ранее сохранённых собственных настроек, если плагин их использует.
  5. Удалите плагин через Мои плагины, перезапустите BDEngine и проверьте отсутствие его интерфейса.

Пользовательский маршрут: установка и обновление плагинов. Удаление плагина не следует использовать как способ откатить уже сохранённые изменения модели.

Контрольные сценарии

Это список для проверки вашего инструмента, а не встроенная автоматическая система тестирования BDEngine. Выберите сценарии, которые относятся к его функциям.

Сценарий Что проверить
Чистая установка Код запускается после перезапуска, кнопка появляется один раз.
Повторное действие Не появляются лишние окна, таймеры и обработчики.
Закрытие и открытие Обычное окно создаётся заново; ресурсы закрытой сессии освобождены.
Неподходящий ввод Пустое выделение, другой тип объекта и неверные параметры обработаны до изменения сцены.
Асинхронная операция Повторный клик не запускает конкурирующие задания; ошибка отображается и позволяет повторить действие.
Смена проекта или режима Не используются устаревшие ссылки на объекты предыдущей сцены.
История Undo/Redo работает для тех операций, которые плагин заявляет как отменяемые.
Обновление Новый код заменяет предыдущий после перезапуска; старые настройки читаются корректно.
Удаление После перезапуска плагин не запускается; проект остаётся пригоден к работе.
Разные среды Размер окна, ввод, выбор файлов и внешние запросы работают в заявленных браузерах и приложении.

Если заявляете поддержку телефона или планшета, проверьте её отдельно: доступность API не гарантирует удобство собственного интерфейса на маленьком экране.