
Konfig
Мод-библиотека Konfig для Minecraft упрощает создание конфигураций с поддержкой Fabric, Forge и NeoForge. Позволяет объявлять типизированные значения, сохранять в TOML, синхронизировать с клиентом и генерировать экраны настроек.
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 напрямую - используйте артефакт, соответствующий загрузчику.
Другие моды автора
Если вам интересны другие проекты этого же разработчика, вот несколько ссылок:
- /mod/bonded - Bonded
- /mod/kafs-valentine-special - Kaf's Valentine Special
- /mod/liteminer - Liteminer
- /mod/mochila - Mochila
- /mod/torch-toss - Torch Toss
Скачайте библиотеку Konfig и упростите настройку своих модов для Minecraft. Она подходит как для Fabric, так и для Forge с NeoForge - пишите конфиги один раз, а всё остальное сделает библиотека.
