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

DACL

DumbassConfigLib — это библиотека конфигов, используемая в моих модах

Fabric
Загрузчики
Fabric
Скачиваний на Modrinth
20,2 тыс.
Подписчиков на Modrinth
7
версий
6
Обновлён
15 июля 202615 июл.
Опубликован
в 2025
Это библиотека — она нужна другим модам и сама ничего не добавляет в игруНужна 7 модам. Скачайте её, если этого требует другой мод.

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

Библиотека — нужна другим модам: её требуют 7
Работает на Fabric
Для Minecraft 1.21.10, 26.1–26.3
Работает и в игре, и на сервере — ставьте, где нужен
Последняя версия — 1.5 от 15 июля 2026
Лицензия MIT — бесплатно
Где нужен
В игренеобязателенНа серверенеобязателен

Работает и в игре, и на сервере — ставьте, где нужен

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

DumbassConfigLib — это библиотека конфигов, которая используется в моих модах. Если ты разработчик модов, ты можешь легко внедрить эту библиотеку у себя.

Java API

Чтобы начать использовать библиотеку, сначала добавь её в свой build.gradle:

repositories {
    ...
    maven {
        name = "KaseToatz"
        url = "https://maven.kasetoatz.com/"
    }
}

dependencies {
    modCompileOnly "com.kasetoatz:dumbassconfiglib:${project.dacl_version}"
}

Затем добавь dacl_version в свой gradle.properties, версию можно посмотреть на странице версий.

Создание опций

Начни с создания точки входа мода, убедись, что она реализует ModInitializer. После этого ты можешь добавить свои опции как public static поля в этот класс, чтобы обращаться к ним позже. Создавать опции можно так:

public static final BoolOption TEST_BOOL_OPT = new BoolOption(Component.literal("Test boolean option"), "test_bool_opt", false);
public static final IntOption TEST_INT_OPT = new IntOption(Component.literal("Test integer option"), "test_int_opt", 1);
public static final FloatOption TEST_FLOAT_OPT = new FloatOption(Component.literal("Test float option"), "test_float_opt", 1.F);

Первый параметр — это текст, отображаемый в интерфейсе конфига, второй параметр — уникальный идентификатор опции, а третий — значение по умолчанию.

Затем добавь этот класс в свой fabric.mod.json, чтобы он загружался при запуске:

"entrypoints": {
    "main": [
        "com.kasetoatz.mymod.MyMod"
    ]
}

Ты можешь заменить main на client или server, если твой мод работает только на клиенте или только на сервере.

Валидаторы

Для опций с полем ввода можно добавить четвёртый параметр с AbstractValidator, чтобы задать ограничения на значение опции. Чтобы создать целочисленную опцию со значением от 1 до 100, можно сделать так:

public static final IntOption CLAMPED_INT_OPT = new IntOption(Component.literal("Clamped integer option"), "clamp_int_opt", 50, new RangeValidator<>(1, 100));

Также можно передать null в нижнюю или верхнюю границу в RangeValidator, чтобы убрать это ограничение.

Сборка конфига

Когда ты закончил создавать опции, пора собрать сам конфиг. Это делается с помощью статического метода builder у DumbassConfig вот так:

public static final DumbassConfig CONFIG = DumbassConfig.builder(Component.literal("Test Screen Title"), "filename.json")
    .withOption(TEST_BOOL_OPT)
    .withOption(TEST_INT_OPT)
    .withOption(TEST_FLOAT_OPT)
    .build()

После сборки конфига значения соответствующих AbstractOption меняются при изменении конфига, так что ты всегда можешь получить к ним доступ так:

bool enabled = TEST_BOOL_OPT.getValue();

Подопции

Ты также можешь добавлять подопции, которые по сути представляют собой отдельный экран со своими собственными опциями. Чтобы создать такую, используем метод builder класса SubOption. В качестве одной из подопций возьмём CLAMPED_INT_OPT.

public static final SubOption TEST_SUB_OPT = SubOption.builder(Component.literal("Sub Screen Title"), "sub_opt")
    .withOption(CLAMPED_INT_OPT)
    .build();

Теперь мы можем добавить эту опцию в сборщик конфига. Такие подопции можно вкладывать друг в друга на любую глубину.

Поддержка modmenu

Чтобы добавить наш новоиспечённый экран конфига в modmenu, сначала нужно добавить его как зависимость к нашему моду, как это сделать, можно прочитать здесь.

Теперь создаём новый класс для интеграции с mod menu, реализуем в нём ModMenuApi и переопределяем getModConfigScreenFactory, чтобы он возвращал наш интерфейс конфига.

public class ModMenuIntegration implements ModMenuApi
{
    private final DumbassConfigScreen screen = new DumbassConfigScreen(CONFIG);

    @Override
    public ConfigScreenFactory<?> getModConfigScreenFactory()
    {
        return screen::get;
    }
}

Теперь мы можем изменить наш `fabric.mod.json`, чтобы указать новый класс как точку входа `modmenu`:
```json
"entrypoints": {
    "main": [
        "com.kasetoatz.mymod.MyMod"
    ],
    "modmenu": [
      "com.kasetoatz.mymod.ModMenuIntegration"
    ]
}

Полный пример

public class MyMod implements ModInitializer
{
    public static final BoolOption TEST_BOOL_OPT = new BoolOption(Component.literal("Test boolean option"), "test_bool_opt", false);
    public static final IntOption TEST_INT_OPT = new IntOption(Component.literal("Test integer option"), "test_int_opt", 1);
    public static final FloatOption TEST_FLOAT_OPT = new FloatOption(Component.literal("Test float option"), "test_float_opt", 1.F);
   
    public static final IntOption CLAMPED_INT_OPT = new IntOption(Component.literal("Clamped integer option"), "clamp_int_opt", 50, new RangeValidator<>(1, 100));
    public static final SubOption TEST_SUB_OPT = SubOption.builder(Component.literal("Sub Screen Title"), "sub_opt")
        .withOption(CLAMPED_INT_OPT)
        .build();

    public static final DumbassConfig CONFIG = DumbassConfig.builder(Component.literal("Test Screen Title"), "filename.json")
        .withOption(TEST_BOOL_OPT)
        .withOption(TEST_INT_OPT)
        .withOption(TEST_FLOAT_OPT)
        .withOption(TEST_SUB_OPT)
        .build()

    @Override
    public void onInitialize()
    {
        ...
    }
}
public class ModMenuIntegration implements ModMenuApi
{
    private final DumbassConfigScreen screen = new DumbassConfigScreen(CONFIG);

    @Override
    public ConfigScreenFactory<?> getModConfigScreenFactory()
    {
        return screen::get;
    }
}

[discord-singular](https://discord.com/invite/jpFJG8dujR) [kofi-singular](https://ko-fi.com/kasetoatz) [paypal-singular](https://paypal.me/KaasToast)

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

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

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

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

У DACL есть сборки для Minecraft 1.21.10, 26.1–26.3.

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

Работает и в игре, и на сервере — ставьте, где нужен

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

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