@xnlc/skins реализует предметную область скинов Minecraft без зависимости от Electron, SQLite или файловой системы. Он работает с каталогом Laby.net, локальной библиотекой «Избранное», активным скином на аккаунте и кэшем текстур. Хранилище и доступ к аккаунтам описаны через порты, которые реализует приложение.
Версия 1.0.6
Лицензия: GPL-3.0 (как и лаунчер)
67 тестов
Установка
Возможности
- Каталог Laby.net: страницы, теги, игроки, «похожие» скины
- Локальная библиотека «Избранное» с импортом из каталога
- Активный скин на аккаунте: надевание, сброс, плащ, профиль
- Кэш текстур в памяти (TTL) и на диске (последнее удачное значение)
- Валидация текстур, нормализация модели slim/classic
- Поиск по тегам с серверной и локальной пагинацией
Архитектура
Создание системы
LabyCatalog
Каталог скинов Laby.net. Поддерживает три режима выдачи:- Общая лента: чистая серверная пагинация без фильтров
- Один тег без текста: серверная пагинация по
/api/v3/tag/{id}(доступны все страницы) - Несколько тегов и/или текст: локальная фильтрация по пулу (до 5 страниц по 100 элементов)
Страница каталога
object
Теги
Профиль игрока
Текстура по хэшу
Похожие скины
SkinLibrary
Локальная библиотека «Избранное».SkinLibraryStore.
MinecraftSkins
Управление активным скином на Minecraft-аккаунте.Кэш
SkinCache работает в два уровня:
- Память: BoundedMap с TTL (до 256 записей)
- Диск: последнее удачное значение для офлайн-режима
Валидация
URL-хелперы
Модуль экспортирует константы и функции для работы с адресами Laby API:Маппинг
Функции для преобразования ответов API Laby в модель лаунчера:Скоринг и фильтрация
Идентификаторы скинов
Laby-скины адресуются поsourceId вида laby:<hash>. Конвертация:
Порты
Порты определяют контракт между доменом скинов и приложением:electron/main/skins/ports.ts, а IPC-канал в electron/main/skins/index.ts.
Сброс состояния
Типы
Реэкспортируются из@xnlc/types:
LabyCatalogPage,LabySkin,LabyTag,LabyPlayer,LabyPlayerSkinLibrarySkin,MinecraftSkin,MinecraftCape,McProfileLabyApiError,LabyImportResult,LabyOrder