

JasonConfig
Активный0.0
Установок
1
Последнее обновление
4 месяца назад
Версии
1.20.1 — 1.20.6
Клиент
Forge
Библиотеки
Управление
Утилиты
JasonConfig
Данная модификация представляет собой библиотеку для разработчиков Minecraft модов. Обычным игрокам достаточно просто установить её, для простого использования дальнейшая информация не требуется.
Для разработчиков
Интеграция в проект Просто добавьте зависимость через CurseMaven, скопировав соответствующий сниппет из раздела "Files" на странице мода. Пример (подставьте актуальные данные):
implementation "curse.maven:cloth-config-348521:5987045"
Сравнение с конфигурационной системой Forge
Преимущества
- Использует JSON вместо TOML, что повышает надёжность и поддерживает все типы данных, включая пустые списки
- Совместимость с большим количеством Java/Minecraft классов - например, Vec3 работает без проблем благодаря объектной структуре JSON
- Упрощённый синтаксис программирования при сохранении привычного подхода создания конфигурационных классов
Недостатки
- JSON формат менее удобочитаем для пользователей по сравнению с TOML 150 Экспериментальная стадия - возможны небольшие ошибки, так как разработка ведётся одним человеком
Пример реализации
Инструкцию по настройке и примеры кода можно найти в пакете "api" после добавления зависимости. Все необходимые элементы подробно документированы для удобства использования.
public class ExampleConfigClass {
public static final Config EXAMPLE_CONFIG = new Config(MODID + "-example_config");
// Этот файл создаётся только в среде разработки
public static final ConfigComment DEVCOMMENT
= new ConfigComment("Файл генерируется только в dev-среде", EXAMPLE_CONFIG);
/// Следующие конфигурационные значения автоматически добавляются в Config
public static final ConfigValue<Float> EXAMPLE_FLOAT
= new ConfigValue<>(10f, "exampleFloat", EXAMPLE_CONFIG, new TypeToken<Float>(){}.getType());
/// Комментарии размещаются в порядке объявления - этот будет после EXAMPLE_FLOAT и перед EXAMPLE_LIST
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, new TypeToken<List<String>>(){}.getType());
/// Работа с Vec3! Многие Java классы, несовместимые с Forge configs, поддерживаются здесь
public static final ConfigComment VEC3_COMMENT
= new ConfigComment("Это Vec3! Работает там, где Forge configs дают сбой", EXAMPLE_CONFIG);
public static final ConfigValue<List<Vec3>> EXAMPLE_VEC3
= new ConfigValue<>(List.of(new Vec3(123,123,123), Vec3.ZERO), "exampleVec3", EXAMPLE_CONFIG, new TypeToken<List<Vec3>>(){}.getType());
/// Поддержка пользовательских классов, records идеально подходят для хранения данных
public static final ConfigComment CLASS_COMMENT
= new ConfigComment("Интеграция новых классов, records оптимальны для структурирования данных", EXAMPLE_CONFIG);
public static final ConfigValue<LinkedHashMap<String, Info>> EXAMPLE
= new ConfigValue<>(new LinkedHashMap<>(Map.of("information", new Info(1.0f, false, 8))), "example", EXAMPLE_CONFIG, new TypeToken<LinkedHashMap<String, Info>>(){}.getType());
/// Этот метод должен вызываться в основном классе вашего мода
/// Нужно зарегистрировать Config и добавить ConfigValue переменные
public static void init() {
EXAMPLE_CONFIG.register();
/// Примеры получения значений
/// Прямой доступ (аналогично работе с Forge Configs)
}
public record Info(float f, boolean bool, int integer) { }
}