
SettingsManagerLib
Библиотека для создания конфигурационных меню в Minecraft с помощью YACL и Mod Menu. Упрощает добавление настроек в моды.
SettingsManagerLib - это простая библиотека для Майнкрафт, которая берёт на себя всю рутину по созданию конфигурационных меню. Если вы разрабатываете мод и хотите дать игрокам удобные настройки без лишней головной боли - этот инструмент вам пригодится.
Библиотека использует YACL (Yet Another Config Lib) и Mod Menu, чтобы автоматически генерировать экраны настроек. Вам остаётся только объявить параметры - всё остальное сделает SettingsManagerLib.
Важно: сам по себе мод ничего не делает. Это библиотека для других модов.
Возможности
- Быстрая настройка и подключение
- Простая интеграция в ваш проект
- Лёгкий доступ к значениям настроек
- Автоматическая генерация конфигурационного файла - настройки сохраняются между запусками
- Встроенный менеджер хромы (chroma) для синхронизации эффектов между файлами
- Поддержка почти всех полей YACL
Как подключить
Добавьте мод как зависимость
В build.gradle:
repositories {
maven { url = "https://api.modrinth.com/maven" }
maven {
name = "Terraformers"
url = "https://maven.terraformersmc.com/"}
maven {
name 'Xander Maven'
url 'https://maven.isxander.dev/releases'}
}
dependencies {
modImplementation("maven.modrinth:settingsmanagerlib:${project.modmenu_version}")
modImplementation("com.terraformersmc:modmenu:${project.modmenu_version}")
modImplementation "dev.isxander:yet-another-config-lib:${project.yacl_version}"
}
В gradle.properties:
settingsmanagerlib_version=LATEST_VERSION_NUMBER (например 1.0.0+1.21.11)
modmenu_version=LATEST_VERSION_NUMBER (например 15.0.0)
yacl_version=LATEST_VERSION_NUMBER (например 3.7.1+1.21.6-fabric)
В fabric.mod.json:
"entrypoints": {
"modmenu": [ "com.example.mod.ModMenuAPI" ]
}
Затем создайте класс ModMenuAPI:
public class ModMenuAPI implements ModMenuApi {
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
return parentScreen -> ExampleModClient.settings.getConfig(parentScreen);
}
}
Настройка в клиенте
В ExampleModClient:
public static Settings settings;
@Override
public void onInitializeClient() {
settings = new Settings().setup("Example Mod", "examplemod");
settings.loadFromFile();
}
Добавление настроек
Поддерживаются строки, булевы значения, целые числа, числа с плавающей точкой, цвета и кастомные перечисления.
Стандартные строки/целые/float
@Override
public void onInitializeClient() {
settings.add(String settingId, String page, String group, String/int/float defaultValue, String settingName, String description)
settings.add("guiName", "Visual Settings", "Overlay", "Default Gui Name", "Gui Scale", "This text will appear as a tooltip when you click on the option.");
}
Ползунки (Integer/Float Sliders)
@Override
public void onInitializeClient() {
settings.addSlider(String settingId, String page, String group, int/float defaultValue, String settingName, String description, int/float min, int/float max, int/float step)
settings.add("guiScale", "Visual Settings", "Overlay", 1.0f, "Gui Scale", "This text will appear as a tooltip when you click on the option.", 0.5f, 5.0f, 0.1f);
}
Булевы значения
@Override
public void onInitializeClient() {
settings.addSlider(String settingId, String page, String group, boolean defaultValue, String settingName, String description, BooleanFormat valueFormat)
settings.add("doRenderGui", "Visual Settings", "Overlay", true, "Render Gui", "This text will appear as a tooltip when you click on the option.", BooleanFormat.ONOFF);
}
BooleanFormat определяет отображаемое значение:
BooleanFormat.ONOFF- "On" или "Off"BooleanFormat.TRUEFALSE- "True" или "False"BooleanFormat.YESNO- "Yes" или "No"BooleanFormat.TICKBOX- галочка (отмечено/не отмечено)
Цвета
@Override
public void onInitializeClient() {
settings.addColor(String settingId, String page, String group, int defaultValue, String settingName, String description)
settings.addColor("guiBackgroundColor", "Visual Settings", "Overlay", net.minecraft.util.Colors.GRAY, "Gui Background Color", "This text will appear as a tooltip when you click on the option.");
}
Кастомные Enum
Документация скоро появится. Пока можно связаться для подробностей.Значения настроек автоматически сохраняются после перезапуска клиента. Но не забудьте создать конфигурационное меню внутри onInitializeClient().
Доступ к значениям
Получение значения настройки:
ExampleModClient.settings.get("settingId", typeInstance);
// Примеры:
ExampleModClient.settings.get("doRenderGui", true); // вернёт boolean
ExampleModClient.settings.get("guiBackgroundColor", net.minecraft.util.Colors.GRAY); // цвет
ExampleModClient.settings.get("guiScale", 1.0f); // float
ExampleModClient.settings.get("guiName", "Default Gui Name"); // строка
ExampleModClient.settings.get("guiSliderMin", 1); // целое число
Второй параметр нужен только для указания типа - его значение не используется.
Установка значения вручную:
ExampleModClient.settings.set("settingId", newValue);
ExampleModClient.settings.set("doRenderGui", false); // пример с boolean
По умолчанию значение равно тому, что вы указали при добавлении настройки.
Страницы и группы
Настройки организованы по страницам (вкладки сверху) и группам (сворачиваемые блоки). Можно создать сколько угодно страниц и групп. Каждая настройка обязательно привязана к странице; группа не обязательна - если не нужна, укажите "" или "none".
Зависимости
Для работы библиотеки нужны:
- YACL
- Mod Menu
- Fabric API
Все они доступны на Modrinth и CurseForge.
