- Кросс-версионный инструмент для конфигурации с минимальными зависимостями, обеспечивающий простой перенос
- Специально разработан для удобства использования и портируемости
- Название Cryonic выбрано потому, что это очень круто
Объяснение функциональности
- Хранение JSON-файлов в {minecraft_dir}/config под именами "mod_id.json"
- Все файлы конфигурации читаются из словаря в "cryonicconfig.json" на этапе ранней инициализации
- Конфиги настраиваются только путём прямого редактирования JSON-файлов, поддержка GUI не планируется
- Для упрощения переноса синхронизируемые переменные отправляются игроку непосредственно в чат и перехватываются
- Для поиска используются хэш-карты: Str → ConfigStorage и Str → Obj (переменная)
API
Добавление зависимости (Groovy, build.gradle)
Добавьте Maven-репозиторий:
repositories {
maven { url "https://api.modrinth.com/maven" }
}
Modern/Architectury:
Для Fabric или NeoForge замените ${project.name}
на fabric
,forge
или neoforge
dependencies {
modImplementation "maven.modrinth:cryonicconfig:fabric-${project.name}:1.0.0+mc${rootProject.minecraft_version}"
}
b1.7.3:
dependencies {
modImplementation "maven.modrinth:cryonicconfig:babric:1.0.0+mcb1.7.3"
}
Простое использование:
// Можно сохранить или использовать напрямую, вызов возможен в любом месте
ConfigStorage config = CryonicConfig.getConfig("mod_id");
// Поддерживаются int, double, boolean, string
// При получении устанавливается значение по умолчанию
// Формат геттера: (имя переменной, значение по умолчанию)
// Нельзя повторять имена переменных! Они будут перезаписаны.
config.getInt("varName", 3);
config.getDouble("name", 3.3);
config.getBoolean("var", true);
config.getString("str", "Geronimo!")
// Переменная будет доступна локально на клиенте и сервере
// Для использования серверного конфига игроком
// Вызовите синхронизацию, чтобы клиент использовал значение сервера
config.sync("varName", playerEntity);
// Допустим такой формат:
CryonicConfig.getConfig("mod_id").getInt("varName", 3);
// Ручная установка значений вместо генерации через get
// Также полезно для переопределения старых значений
config.setInt("varName", 3);
config.setDouble("name", 3.3);
config.setBoolean("var", true);
config.setString("str", "Geronimo!");
Указание зависимости
В fabric.mod.json
:
{
"depends": {
"cryonicconfig": "*"
}
}
В mods.toml
/neoforge.mods.toml
:
[[dependencies.cryonicconfig]]
modId = "cryonicconfig"
type = "required"
versionRange = "[0,)"