Справочник реестров
Актуальные точки расширения лаунчера: встроенные реестры core.* и реестры экосистемы чатов (@rynt/chats-calls.*).
Импорт use-функций: @rynt/sdk/extension или @rynt/sdk.
Два паттерна потребления
| Паттерн | Как читает хост | Когда использовать |
|---|---|---|
| A (keyed) | registry.get(semanticKey) | Ключ = семантика: loader.id, invite.type, payload.type |
| B (list) | registry.entries() | Нужно добавить элементы в список; ключ — id записи |
Шаблон для паттерна B:
vue
<template
v-for="entry in useBuildCardActionsRegistry().entries()"
:key="`${entry.extensionId}:${entry.registryKey}`"
>
<component :is="entry.value" :build="build" />
</template>ts
const entries = computed(() => useBuildCardActionsRegistry().entries());Запись из расширения (в setup):
ts
import { markRaw } from 'vue';
import { defineRyntExtension, useBuildCardActionsRegistry } from '@rynt/sdk/extension';
import MyBuildAction from './MyBuildAction.vue';
export default defineRyntExtension(() => {
useBuildCardActionsRegistry().register('optifine-link', markRaw(MyBuildAction), 10);
});Встроенные реестры core.* (по категориям)
| Раздел | Описание |
|---|---|
| Навигация и оболочка | core.page, core.nav, core.sidebar, core.shell, core.userStrip, core.theme |
| TopBar и сайдбар | Виджеты TopBar, сайдбар, меню профиля |
| Экраны | Лента, библиотека, друзья, проекты, настройки |
| Карточки сущностей | Сборки, карты, серверы, пользователи |
| Детальные экраны | Build / Map / Server detail |
| Редактор сборки и диалоги | Моды, ресурспаки, шейдеры, footer диалогов |
| Markdown | TipTap, тулбар, рендерер |
| Keyed-реестры | core.loader, core.modProvider, core.accountProvider, core.inviteHandler, core.fileEditor |
| Ограничения | Что нельзя делать через core.* |
Чаты и звонки
Расширение @rynt/chats-calls объявляет собственные реестры для типов сообщений и кнопок ввода. Отдельные пакеты расширяют чат без форка ядра.
Собственные реестры
Объявление declaresRegistries / пополнение extendsRegistries — не только для чатов. Общая теория:
Манифест
Для записи в чужой реестр укажите в contributes.rynt:
json
{
"extendsRegistries": [
{ "registryId": "core.buildCardActions", "keys": ["my-action"] }
]
}Объявление собственного реестра — declaresRegistries.