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

Основные возможности
Данная библиотека позволяет один раз задать параметры конфигурации, после чего самостоятельно:
- обновляет значения при загрузке мира;
- синхронизирует значения между сервером и клиентами;
- автоматически обрабатывает значения, предназначенные только для клиента или сервера.
Создание конфигурации
Для создания конфигурации используется класс ModConfigBuilder. Новый экземпляр создаётся так:
ModConfigBuilder builder = new ModConfigBuilder();
Добавление значения в конфигурацию происходит с помощью метода define, который принимает имя параметра и значение по умолчанию. Для числовых значений (целых и с плавающей точкой) необходимо указать также минимальное и максимальное допустимые значения.
Примеры создания разных типов параметров:
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);
Для добавления комментария к параметру перед вызовом define можно использовать метод comment:
Supplier<Boolean> valueWithComment = builder.comment("Комментарий для valueWithComment").define("valueWithComment", true);
По умолчанию значения загружаются при загрузке мира. Чтобы параметр обновлялся только при запуске игры, вызовите перед define метод gameRestart():
Supplier<Boolean> notReloadedValue = builder.comment("Значение, не обновляемое при загрузке мира").gameRestart().define("notReloadedValue", true);
Параметры в конфигурациях типа COMMON или SERVER по умолчанию синхронизируются с клиентами. Чтобы отключить синхронизацию для конкретного значения, используйте dontSync():
Supplier<Boolean> notSynchronizedValue = builder.comment("Значение без синхронизации").dontSync().define("notSynchronizedValue", true);
Параметры можно структурировать в категории, используя методы push(String) для создания категории и pop() для выхода из неё:
builder.push("special");
Supplier<Boolean> specialValue = builder.comment("Параметр в категории special").define("specialValue", true);
builder.pop();
Комментарий к категории добавляется методом categoryComment(String):
builder.push("client").categoryComment("Комментарий для категории client");
После определения всех параметров вызовите build() для завершения создания конфигурации:
builder.build();
Значения в конфигурации теперь будут автоматически обновляться и синхронизироваться. Для получения текущих значений используйте сохранённые объекты Supplier.
Библиотека поддерживает версии Minecraft 1.12, 1.14, 1.15 и 1.16.
Пример мода
Пример использования Config Lib можно найти в исходном коде примерного мода.





