Skip to main content
Модуль @xnlc/skins реализует предметную область скинов Minecraft без зависимости от Electron, SQLite или файловой системы. Он работает с каталогом Laby.net, локальной библиотекой «Избранное», активным скином на аккаунте и кэшем текстур. Хранилище и доступ к аккаунтам описаны через порты, которые реализует приложение.

Версия 1.0.6

Лицензия: GPL-3.0 (как и лаунчер)

67 тестов

Установка

Возможности

  • Каталог Laby.net: страницы, теги, игроки, «похожие» скины
  • Локальная библиотека «Избранное» с импортом из каталога
  • Активный скин на аккаунте: надевание, сброс, плащ, профиль
  • Кэш текстур в памяти (TTL) и на диске (последнее удачное значение)
  • Валидация текстур, нормализация модели slim/classic
  • Поиск по тегам с серверной и локальной пагинацией

Архитектура

Все внешние зависимости (Electron IPC, база данных, файловая система) описаны портами и передаются при создании системы.

Создание системы

LabyCatalog

Каталог скинов Laby.net. Поддерживает три режима выдачи:
  1. Общая лента: чистая серверная пагинация без фильтров
  2. Один тег без текста: серверная пагинация по /api/v3/tag/{id} (доступны все страницы)
  3. Несколько тегов и/или текст: локальная фильтрация по пулу (до 5 страниц по 100 элементов)

Страница каталога

object
LabySkin[]
Скины на странице
number
Номер страницы
boolean
Есть ли следующая страница
boolean
Конец выдачи
boolean
Данные из дискового кэша
boolean
Фильтрация выполнена локально
LabyApiError | null
Ошибка API

Теги

Профиль игрока

Ник должен быть точным: Laby не поддерживает поиск по частичному совпадению. Профиль кэшируется на 15 минут.

Текстура по хэшу

Текстуры кэшируются бессрочно: хэш гарантирует неизменность.

Похожие скины

Если пулы пусты, функция использует популярные скины из общей ленты.

SkinLibrary

Локальная библиотека «Избранное».
Хранение реализуется приложением через порт SkinLibraryStore.

MinecraftSkins

Управление активным скином на Minecraft-аккаунте.

Кэш

SkinCache работает в два уровня:
  • Память: BoundedMap с TTL (до 256 записей)
  • Диск: последнее удачное значение для офлайн-режима

Валидация

URL-хелперы

Модуль экспортирует константы и функции для работы с адресами Laby API:

Маппинг

Функции для преобразования ответов API Laby в модель лаунчера:

Скоринг и фильтрация

Идентификаторы скинов

Laby-скины адресуются по sourceId вида laby:<hash>. Конвертация:

Порты

Порты определяют контракт между доменом скинов и приложением:
В Xneon Launcher порты реализованы в electron/main/skins/ports.ts, а IPC-канал в electron/main/skins/index.ts.

Сброс состояния

Типы

Реэкспортируются из @xnlc/types:
  • LabyCatalogPage, LabySkin, LabyTag, LabyPlayer, LabyPlayerSkin
  • LibrarySkin, MinecraftSkin, MinecraftCape, McProfile
  • LabyApiError, LabyImportResult, LabyOrder