▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Konfig
Konfig

Konfig

Мод-библиотека Konfig для Minecraft упрощает создание конфигураций с поддержкой Fabric, Forge и NeoForge. Позволяет объявлять типизированные значения, сохранять в TOML, синхронизировать с клиентом и генерировать экраны настроек.

Оцените первым
122.2K
15

Konfig - это мультизагрузочная библиотека конфигурации для модов Minecraft. Если вы разрабатываете моды и хотите избавиться от кучи однотипного кода для сохранения настроек, Konfig сделает всё за вас.

Вместо того чтобы писать собственные файлы конфигов, парсеры и экраны для каждого загрузчика (Fabric, Forge, NeoForge), вы просто объявляете типизированные значения в общем коде. Библиотека сама сохранит их в удобные TOML-файлы, синхронизирует нужные параметры с клиентом и сгенерирует готовый экран настроек.

Основные возможности

  • Типизированные значения: булевы, числа, перечисления, строки, списки строк, цвета RGB/ARGB и кастомные кодексы.
  • Области видимости: CLIENT, COMMON, SERVER - настройки можно разделить по сторонам.
  • Файлы TOML с комментариями: все параметры сохраняются в config/<modid>/<name>.toml с пояснениями.
  • Синхронизация: встроенные режимы NONE, LOGIN и LOGIN_AND_RELOAD - нужные настройки автоматически передаются игрокам.
  • Версионирование схем: можно добавлять миграции значений между версиями мода.
  • Генерация экранов: для зарегистрированных конфигов создаются готовые UI-экраны с поддержкой заголовков, изображений, текста и кликабельных ссылок.
  • Интеграция с Mod Menu (Fabric) и хелперы для кнопок конфигурации в Forge и NeoForge.
  • Подсказки: можно задавать тултипы для строк в сгенерированном экране, а также расширенные информационные панели.

Поддерживаемые версии

Konfig 0.4.0 работает на всех версиях Minecraft от 1.14.4 до последних (26.2). Конкретно:

  • Fabric: от 1.14.4
  • Forge: от 1.16.5
  • NeoForge: от 1.21.1

Версия библиотеки привязана к версии игры через суффикс +<mc>, например 0.4.0+1.21.11.

Быстрый пример

import com.iamkaf.konfig.api.v1.ConfigBuilder;
import com.iamkaf.konfig.api.v1.ConfigHandle;
import com.iamkaf.konfig.api.v1.ConfigScope;
import com.iamkaf.konfig.api.v1.ConfigValue;
import com.iamkaf.konfig.api.v1.Konfig;
import com.iamkaf.konfig.api.v1.RestartRequirement;
import com.iamkaf.konfig.api.v1.SyncMode;

public final class ExampleConfig {
    public static final ConfigHandle HANDLE;
    public static final ConfigValue<Boolean> ENABLED;
    public static final ConfigValue<Integer> RANGE;

    static {
        ConfigBuilder builder = Konfig.builder("examplemod", "common")
                .scope(ConfigScope.COMMON)
                .syncMode(SyncMode.LOGIN)
                .comment("Example mod config")
                .info(info -> info
                        .header("Example Mod")
                        .inlineText("These settings control shared gameplay behavior.")
                        .url("Documentation", "https://example.invalid/docs"));

        builder.header("Example Mod Settings");
        builder.inlineText("These entries are saved automatically.");
        builder.url("Documentation", "https://example.invalid/docs");

        builder.push("general");
        builder.categoryComment("General gameplay tuning");
        builder.categoryTooltip("General gameplay tuning");
        builder.categoryInfo(info -> info
                .header("General")
                .inlineText("Values in this section affect the whole mod."));

        ENABLED = builder.bool("enabled", true)
                .comment("Master toggle")
                .tooltip("Enable example mod features")
                .sync(true)
                .info(info -> info
                        .header("Master Toggle")
                        .inlineText("Turns the main feature set on or off."))
                .build();

        RANGE = builder.intRange("range", 8, 1, 64)
                .comment("Effect radius")
                .tooltip("Controls the effect radius in blocks")
                .sync(true)
                .restart(RestartRequirement.WORLD)
                .build();

        builder.pop();
        HANDLE = builder.build();
    }
}

Читать значения через ConfigValue#get(), менять - через set(value). Комментарии пишутся в TOML, а подсказки в UI задаются отдельно, чтобы файл и экран могли говорить разное.

Зависимости

Добавьте репозиторий Kaf Maven в build.gradle:

repositories {
    maven { url = "https://maven.kaf.sh" }
}

И используйте артефакт под ваш загрузчик:

modImplementation "com.iamkaf.konfig:konfig-fabric:<version>"
modImplementation "com.iamkaf.konfig:konfig-forge:<version>"
modImplementation "com.iamkaf.konfig:konfig-neoforge:<version>"

Не подключайте konfig-common напрямую - используйте артефакт, соответствующий загрузчику.

Другие моды автора

Если вам интересны другие проекты этого же разработчика, вот несколько ссылок:

Скачайте библиотеку Konfig и упростите настройку своих модов для Minecraft. Она подходит как для Fabric, так и для Forge с NeoForge - пишите конфиги один раз, а всё остальное сделает библиотека.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

26.2.x26.1.x1.21.x1.20.x1.19.x1.18.x1.17.x1.16.x1.15.x1.14.x

Платформы

Ссылки


Создатели

Детали

Лицензия:
Опубликован:6 месяцев назад
Обновлён:5 дней назад
Главная