SuperMartijn642's Config Lib - это библиотека для Minecraft, которая решает вечную проблему мододелов: работу с конфигурационными файлами. Вместо того чтобы писать кучу однотипного кода для загрузки, перезагрузки и синхронизации настроек, можно просто задать конфиг один раз, а библиотека сама позаботится обо всем остальном. Она автоматически перезагружает значения при загрузке мира, синхронизирует их с клиентами (если нужно) и генерирует значения для клиентских или серверных настроек.
Короче, если ты разрабатываешь моды и устал от головной боли с конфигами - это то, что нужно. Библиотека работает на Fabric, Forge и NeoForge для Minecraft 1.12, 1.14, 1.15, 1.16, 1.17, 1.18 и 1.19.
Все делается через ModConfigBuilder. Создаешь новый экземпляр:
ModConfigBuilder builder = new ModConfigBuilder();
Добавляешь значения через ModConfigBuilder#define. Для целых чисел и чисел с плавающей точкой нужно указать минимум и максимум. Метод возвращает Supplier, который потом используешь для получения значения:
Supplier<Boolean> booleanValue = builder.define( "booleanValue", true );
Supplier<Integer> integerValue = builder.define( "integerValue", 5, 0, 10 );
Supplier<Double> doubleValue = builder.define( "doubleValue", 0.5, 0, 1);
Supplier<ExampleEnum> enumValue = builder.define( "enumValue", ExampleEnum.VALUE_1 );
Комментарий к значению добавляется через ModConfigBuilder#comment(String) перед определением:
Supplier<Boolean> valueWithComment = builder.comment( "this is a comment for 'valueWithComment'" ).define( "valueWithComment ", true );
По умолчанию значения перезагружаются при загрузке мира. Если нужно, чтобы значение обновлялось только при запуске Minecraft - используй ModConfigBuilder#gameRestart():
Supplier<Boolean> notReloadedValue = builder.comment( "this is value will not be reloaded" ).define( "notReloadedValue", true );
Значения в COMMON или SERVER конфигах по умолчанию синхронизируются с клиентами. Чтобы отключить синхронизацию - ModConfigBuilder#dontSync():
Supplier<Boolean> notSynchronizedValue = builder.comment( "this is value will not be synchronized" ).define( "notSynchronizedValue", true );
Можно группировать значения в категории через push и pop:
builder.push( "special" );
Supplier<Boolean> specialValue = builder.comment( "this value is in the 'special' category" ).define( "specialValue", true );
builder.pop();
Комментарий к категории добавляется через ModConfigBuilder#categoryComment(String):
builder.push( "client" ).categoryComment( "this, is a comment for the 'client' category" );
После того как все значения определены - вызываешь ModConfigBuilder#build():
builder.build();
И все - значения в конфиге будут автоматически перезагружаться и синхронизироваться, а ты просто используешь сохраненные Supplier.
Если ты собираешь модпак или пишешь свой мод - Config Lib реально упрощает жизнь. Особенно когда настроек много и нужно, чтобы они корректно работали на сервере и клиенте.

SuperMartijn642's Config Lib - библиотека для Майнкрафт, упрощающая работу с конфигами. Позволяет задать настройки один раз, а перезагрузку, синхронизацию с клиентами и генерацию значений берет на себя.