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

Lib99j

Ещё одна полезная библиотека для серверной разработки.

FabricQuilt
Загрузчики
FabricQuilt
Скачиваний на Modrinth
710
Подписчиков на Modrinth
4
версия
21
Обновлён
29 марта 202629 мар.
Опубликован
в 2025
Это библиотека — она нужна другим модам и сама ничего не добавляет в игру

Коротко о моде

Библиотека — нужна другим модам
Работает на Fabric и Quilt
Для Minecraft 1.21.5, 1.21.8–26.1
Ставится только на сервер; игрокам ставить не нужно
Последняя версия — 1.4.1 от 29 марта 2026
Нужен Polymer
Где нужен
В игрене нуженНа сервереобязателен

Ставится только на сервер; игрокам ставить не нужно

Версии игры1.21.5, 1.21.8–26.1
Описание переведено автоматическиПоказать оригинал (EN)

О моде

Это мод, используемый как основа для всех моих модов. Не стесняйтесь использовать его, если хотите.

Возможности библиотеки

  • Визуальные эффекты, включая блокировку камеры, оверлеи и многое другое
  • Серверные текстуры GUI
  • Серверные частицы
  • Скрытие боссбаров
  • Кастомные эффекты
  • Pondering
  • Простое создание конфигов
  • И многое другое...

Использование

При инициализации мода, пожалуйста, запустите Lib99j.ensureLoaded(). Это заставляет библиотеку загрузиться раньше вашей, что позволяет всем функциям работать корректно

build.gradle (номер версии с modrinth)

repositories {
    maven { url = 'https://dj.ucc.asn.au/maven/' }
}

dependencies {
  implementation include("com.daniel99j:djutil:1.1")
  implementation include("com.daniel99j:lib99j:VERSION")
}

Ponder (серверный)

Это воссоздание системы ponder из Create Mod, теперь на стороне сервера. Смотрите https://modrinth.com/mod/ponderplus для примера.

Возможности:

  • Не требует клиентских модов
  • Пропуск, перемотка назад и пауза
  • Если установлен вместе с Polydex или Booklet, кликните один раз, чтобы открыть ponder
  • Быстрый
  • Не изменяет игрока — ни сервер, ни клиент не знают, что вы в ponder, всё происходит на сетевом уровне
  • Полностью самодостаточный
  • Без изменений в реальном мире
  • Работает с Polymer и серверными модами (а также с клиентскими!)

Управление (внутриигровой HUD показывает их):

  • F: Identify — летайте вокруг, и он покажет, на что вы смотрите
  • SPACE: Пауза/воспроизведение
  • Q: Выход
  • L: Открыть меню
  • S: Перезапустить сцену
  • D: Следующая сцена (если возможно)
  • A: Предыдущая сцена (если возможно)
  • SCROLL: Выбрать шаг для пропуска
  • W: Пропустить до выбранного шага

Команды:

/ponder all <id>
/ponder item <item>
/ponder item <item> scene <id>
/ponder item hand
/ponder item hand <id>
/ponder scene pause
/ponder scene unpause
/ponder scene exit

Команды для разработчиков:

/ponder dev ui_creator -> Открывает создатель UI.
/ponder dev ui_creator_from <ponder command> -> Открывает создатель UI после выполнения указанной команды ponder
/ponder dev toggle_free_movement -> Переключить свободное перемещение в сцене ponder
/ponder dev get_edits -> Список всех взаимодействий с миром в режиме свободного перемещения

Создатель UI:

  • Витраж показывает безопасную зону
  • Откройте меню [L], чтобы начать редактирование
  • Если вы на клиенте, удерживайте shift в меню, чтобы увидеть, над какой координатой UI ponder находится курсор, CTRL-C для копирования
Демо-видео:

Свойства игры

  • enableHideableBossbar() делает жёлтые боссбары белыми, а с помощью BossBarVisibility вы можете сделать любой боссбар невидимым
  • enableCustomEffectBadLuck() заставляет эффект неудачи отображаться как "Custom Effect (/polymer effects)" и иметь кастомный спрайт
  • enablePonder() включает ponder (см. выше)
  • enableAddingAssetTranslationsToServer() заставляет все файлы lang в папке assets обрабатываться как серверный перевод в Nucleoid Server Translations API

Конфиги

  • Lib99j также предоставляет простой в использовании API конфигов
  • Настройки для каждого мира, общие, только для клиента и только для сервера
  • Опциональная синхронизация с клиентом
  • Использует cloth config для экрана
  • Внутриигровое серверное диалоговое воссоздание cloth config (/lib99j config {modid})
  • Поддержка mod menu
  • JSON-сериализация через GSON
  • Поддерживает примитивы, идентификаторы, vec2, vec3, цвета автоматически во всех экранах конфигов и файлах конфигов
  • Используйте ConfigManager.addConfig(modid, modconfig) для добавления конфигов. Каждый ModConfig содержит nullable ConfigHolder для каждого контекста. Просто предоставьте класс конфига, и всё готово
  • Используйте ServerConfigCopy.getConfigOption(modid, serializedName, optionClass, fallback) для получения синхронизированной опции с сервера (опция должна быть аннотирована sync = true)

Пример класса конфига:

public class ExampleConfig {
    @ConfigEntry
    public boolean testBool = true;

    @ConfigEntry(sync = true)
    @SerializedName("wavy_ui")
    public boolean wavyUi = false;

    //Примитивы-объекты тоже работают!
    @ConfigEntry(min = 0, max = 10000)
    public Integer explosionDamage = 10;

    @ConfigEntry(displayType = ConfigDisplayType.SLIDER, max = 50, min = 0)
    public int explosionSize = 10;

    @ConfigEntry(displayType = ConfigDisplayType.COLOUR_PICKER)
    public int worldTint = 0xff00ff;

    @ConfigEntry(displayType = ConfigDisplayType.COLOUR_PICKER_ALPHA)
    public int overlayColour = 0xff0000ff;

    @ConfigEntry
    public Identifier packId = Identifier.withDefaultNamespace("test");

    @ConfigEntry
    public Vec2 spawnRotation = Vec2.ZERO;

    @ConfigEntry
    public Vec3 spawnPos = Vec3.ZERO;

    //ChatFormatting — это Enum
    @ConfigEntry
    public ChatFormatting formatType = ChatFormatting.RED;
}

Статус установки мода

  • Используйте ModInstallManager.syncInstalledStatus(modid), чтобы отметить ваш мод для синхронизации статуса установки, затем используйте ModInstallManager.isInstalled(modid, player), чтобы проверить, установлен ли мод на клиенте

Утилиты Gui

  • По умолчанию Lib99j генерирует диапазон пробелов шрифта от -256 до 256 (Учтите: при использовании, например, space=270, он использует комбинацию 256 и 14!). Используйте GuiUtils.getSpace() и связанные функции
  • GuiUtils.nextPage(), GuiUtils.previousPage() и GuiUtils.head() создают головы игроков для использования в интерфейсах
  • GuiUtils.doesPlayerHaveMods() позволяет увидеть, какие моды установлены; читайте документацию для подробностей
  • GuiUtils.toast() отображает всплывающее окно достижения с кастомным предметом и текстом
  • А теперь самое главное!
  • GuiUtils.generateTexture() и GuiUtils.generateColourableTexture() создают GuiElementBuilder с автоматически сгенерированной моделью предмета и определением. Формат текстуры: "examplemod", "ui/test/image". Учтите, что другие базовые пути тоже принимаются, но рекомендуется использовать /ui/, так как другие функции используют только его
  • GuiUtils.generateBarTexture() создаёт вертикальную полосу заполнения снизу вверх с основой, заполнением и наложением.
  • BackgroundTextures — это базовый генератор фона шрифта на основе инвентаря, например: new BackgroundTexture(Identifier.fromNamespaceAndPath(MagmaNetworkMod.MOD_ID, "test/test_ui"), 176). Использует /ui/ для ссылок на текстуры.

VFX

  • VfxUtils.shake() вызывает эффект тряски камеры, похожий на Bedrock Edition
  • VfxUtils.addGenericScreenEffect() добавляет множество других клиентских эффектов, таких как:
  • RED_TINT — красный оттенок границы мира
  • SNOW — наложение рыхлого снега
  • FIRE — говорит само за себя
  • NAUSEA — ну, вы поняли.
  • BLACK_HEARTS — сердца иссушения
  • GREEN_HEARTS — отравленные сердца
  • GREEN_HUNGER — зелёные полуголодные сердца
  • BLINDNESS — эффект слепоты
  • NIGHT_VISION — эффект ночного видения
  • CONDUIT_POWER — эффект силы проводника
  • DARKNESS — эффект тьмы Warden'а
  • LOCK_CAMERA_AND_POS — сложнее, объясняется далее.
  • Блокировка камеры
  • Чтобы заблокировать камеру и движение игрока, добавьте эффект LOCK_CAMERA_AND_POS
  • setCameraInterpolation, setCameraPos, setCameraPitch и setCameraYaw управляют различными аспектами заблокированной камеры
  • По техническим причинам игрок не может видеть хотбар, и игра выглядит так, будто он в режиме наблюдателя
  • registerCameraLockHandler регистрирует обработчик блокировки камеры для source id, который предоставляет поворот камеры и игрока
  • РАЗНОЕ
  • VfxUtils.clientSideExplode() вызывает клиентский взрыв, разрушающий блоки (ТОЛЬКО НА КЛИЕНТЕ). Используйте только для катсцен, так как блоки-призраки работают с багами
  • VfxUtils.fireworkExplode() создаёт взрыв фейерверка, как если бы фейерверк действительно был запущен
  • VfxUtils.sendFakeEntity() отправляет клиентскую сущность. Учтите, что она никогда не будет удалена обычным способом, поэтому рекомендуется использовать это только с молниями или другими сущностями, которые удаляются автоматически

Частицы

ФУНКЦИЯ В РАЗРАБОТКЕ, может вызывать сильные лаги сервера. Переработка произойдёт скоро, когда у меня будет время.

Разное

  • PlayPacketUtils содержит список всех PLAY-пакетов
  • ConfigUtils имеет некоторые базовые функции конфигурации
  • GameProperties содержит некоторые переключатели и информацию об игре

Этот проект не связан с Create Mod, Ponder или любыми похожими модами.

Частые вопросы

Как установить Lib99j?

Установите Fabric под свою версию Minecraft, скачайте Lib99j под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть Lib99j?

У Lib99j есть сборки для Minecraft 1.21.5, 1.21.8–26.1.

Нужен ли Lib99j на сервере?

Ставится только на сервер; игрокам ставить не нужно

Лицензия и источник
MIT Licenseможно свободно использовать и распространять с указанием автора
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее