Совместимость и обновления
Как проверить совместимость плагина 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 карточки, а метаданные приходят от каталога.
Установка, замена и удаление не выгружают уже выполненный код из открытой страницы. В Мои плагины появляется сообщение об изменениях и кнопка Перезапустить. После перезапуска будет загружен актуальный список и новый код.
Для проверки обновления:
- Установите прежнюю версию, перезапустите BDEngine и выполните её основной сценарий.
- Сохраните проект, установите новый файл с тем же namespace либо выберите новую версию в каталоге.
- Перезапустите редактор, проверьте номер версии и отсутствие второй копии плагина.
- Повторите действия на новом и существующем проекте, включая чтение ранее сохранённых собственных настроек, если плагин их использует.
- Удалите плагин через Мои плагины, перезапустите BDEngine и проверьте отсутствие его интерфейса.
Пользовательский маршрут: установка и обновление плагинов. Удаление плагина не следует использовать как способ откатить уже сохранённые изменения модели.
Контрольные сценарии
Это список для проверки вашего инструмента, а не встроенная автоматическая система тестирования BDEngine. Выберите сценарии, которые относятся к его функциям.
| Сценарий | Что проверить |
|---|---|
| Чистая установка | Код запускается после перезапуска, кнопка появляется один раз. |
| Повторное действие | Не появляются лишние окна, таймеры и обработчики. |
| Закрытие и открытие | Обычное окно создаётся заново; ресурсы закрытой сессии освобождены. |
| Неподходящий ввод | Пустое выделение, другой тип объекта и неверные параметры обработаны до изменения сцены. |
| Асинхронная операция | Повторный клик не запускает конкурирующие задания; ошибка отображается и позволяет повторить действие. |
| Смена проекта или режима | Не используются устаревшие ссылки на объекты предыдущей сцены. |
| История | Undo/Redo работает для тех операций, которые плагин заявляет как отменяемые. |
| Обновление | Новый код заменяет предыдущий после перезапуска; старые настройки читаются корректно. |
| Удаление | После перезапуска плагин не запускается; проект остаётся пригоден к работе. |
| Разные среды | Размер окна, ввод, выбор файлов и внешние запросы работают в заявленных браузерах и приложении. |
Если заявляете поддержку телефона или планшета, проверьте её отдельно: доступность API не гарантирует удобство собственного интерфейса на маленьком экране.