SuperMartijn642's Config Lib

SuperMartijn642's Config Lib

Fabric

SuperMartijn642's Config Lib

SuperMartijn642's Config Lib — это библиотека, которая берет на себя всю рутину по управлению конфигами. Вам достаточно один раз описать настройки, а она уже сама перезагружает значения при загрузке мира, синхронизирует их с клиентами и автоматически генерирует параметры, предназначенные только для сервера или только для клиента.

Как создать конфиг

Всё начинается с создания экземпляра ModConfigBuilder:

ModConfigBuilder builder = new ModConfigBuilder();

Значения добавляются через метод ModConfigBuilder#define. Ему передаётся имя настройки и её значение по умолчанию. Для целых чисел (integer) и чисел с плавающей точкой (double) дополнительно задаются минимальное и максимальное значения. Метод возвращает 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 value will not be reloaded")
                                            .define("notReloadedValue", true);

Значения из конфигов COMMON и SERVER по умолчанию синхронизируются с клиентами. Чтобы отключить синхронизацию, добавьте ModConfigBuilder#dontSync():

Supplier<Boolean> notSynchronizedValue = builder.comment("this value will not be synchronized")
                                                .define("notSynchronizedValue", true);

Настройки можно группировать в категории. Для этого используйте ModConfigBuilder#push(String) — он открывает новую категорию, и ModConfigBuilder#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. Библиотека работает со всеми актуальными версиями Minecraft: 1.12, 1.14, 1.15, 1.16, 1.17, 1.18 и 1.19.


Пример мода

Конкретный пример использования Config Lib можно посмотреть в тестовом моде.


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

Могу ли я использовать ваш мод в своём модпаке?
Да, конечно, можете.


Discord

За новостями о будущих модах и просто для общения заглядывайте на Discord-сервер SuperMartijn642:

Все права на данный контент принадлежат его авторам. Мы не храним и не распространяем файлы — страница носит исключительно информационный характер. Оригинальный источник доступен по этой ссылке.

0
0
0

Комментарии (0)

Войдите, чтобы оставить комментарий

Пока нет комментариев

Будьте первым!