
JasonConfig
Активный0.0
Установок
5
Последнее обновление
8 месяцев назад
Клиент
Библиотеки
Утилиты
JasonConfig
Это библиотечный мод — обычным пользователям достаточно просто установить его, не читая дальше!
Для разработчиков
Добавление зависимости
Рекомендуется использовать CurseMaven для подключения зависимости. Пример добавления (обратите внимание, что это лишь шаблон, реальный идентификатор мода отличается):
implementation "curse.maven:cloth-config-348521:5987045"
Преимущества и недостатки по сравнению с конфигурационной системой Forge
Преимущества:
- Использует JSON вместо TOML, что повышает надёжность (например, конфиги Forge плохо работают с пустыми списками)
- Поддерживает чтение и запись большего количества Java/Minecraft классов (например, Vec3, который не работает в конфигах Forge)
- Более простой код при сохранении схожести с созданием конфигурационных классов Forge
Недостатки:
- Менее удобочитаем для пользователей из-за формата JSON
- Экспериментальный статус — возможны необнаруженные ошибки
- Отсутствует разделение конфигов по сторонам (клиент/сервер) как в системе "serverconfigs" Forge
Пример конфигурации
Полный пример можно найти в пакете "api" после добавления зависимости. Все элементы хорошо документированы.
public class SimpleExampleConfigClass {
public static final Config EXAMPLE_CONFIG = new Config(MODID + "-example_config");
///Следующие значения конфигурации добавляются автоматически в переданный Config
public static final ConfigValue<Float> EXAMPLE_FLOAT = new ConfigValue<>(10f, "exampleFloat", EXAMPLE_CONFIG);
///Комментарии располагаются в порядке объявления
public static final ConfigComment EXAMPLE_COMMENT = new ConfigComment("Это список!", EXAMPLE_CONFIG);
public static final ConfigValue<List<String>> EXAMPLE_LIST = new ConfigValue<>(List.of("value1", "value2", "value3", "value4"), "exampleList", EXAMPLE_CONFIG);
public static final ConfigComment VEC3_COMMENT = new ConfigComment("Это Vec3! Многие Java-классы, не работающие в конфигах Forge, здесь работают!", EXAMPLE_CONFIG);
public static final ConfigValue<Vec3> EXAMPLE_VEC3 = new ConfigValue<>(new Vec3(123,123,123), "exampleVec3", EXAMPLE_CONFIG);
///Этот метод должен быть вызван в главном классе вашего мода
/// Необходимо вызвать метод {<code>register()</code>} для объявленного Config
public static void init()/ Этот метод может называться как угодно: init(), register() и т.д./ {
EXAMPLE_CONFIG.register();
///ПРИМЕРЫ ПОЛУЧЕНИЯ ЗНАЧЕНИЙ
//ЯВНЫЙ СПОСОБ (очень похоже на конфиги Forge)
SimpleExampleConfigClass.EXAMPLE_FLOAT.get();
}
}