YAML Config: Мод для конфигурации Minecraft
Обзор
YAML Config — это мощный мод для конфигурации Minecraft, который позволяет разработчикам модов создавать и управлять настройками конфигурации с использованием формата файлов YAML. Он предлагает удобный графический интерфейс, обширную поддержку типов данных и надежную синхронизацию между клиентом и сервером.
Возможности
Формат файлов YAML: YAML Config использует формат файлов YAML, известный своей читаемостью и простотой использования.
Графический интерфейс (GUI): Продуманный графический интерфейс позволяет игрокам легко находить и редактировать настройки конфигурации.
Обширная поддержка типов данных: Мод поддерживает широкий спектр типов данных, включая:
- Примитивные типы:
boolean
,int
,float
,double
,String
,ResourceLocation
,Registry
- Коллекции:
List
,Map
- Дата и время:
LocalDateTime
- Примитивные типы:
Синхронизация сервер-клиент: Изменения, внесенные в конфигурации на сервере, автоматически синхронизируются с клиентами, обеспечивая согласованность игрового процесса.
Поддержка модпаков: Мод разработан для seamless работы с существующими модпаками, предлагая гибкую и расширяемую систему конфигурации.
Проверка и обработка ошибок: Мод включает надежную проверку и обработку ошибок, гарантируя, что конфигурации соответствуют ожидаемым требованиям.
Установка и использование
Установка
- Загрузите мод: Загрузите последнюю версию YAML Config с официального сайта мода, CurseForge или Modrinth.
- Поместите файл мода: Переместите загруженный JAR-файл в папку «mods» в директории вашей игры Minecraft.
- Запустите Minecraft: Запустите Minecraft и войдите в мир.
Использование
Откройте экран конфигураций: Нажмите клавишу «F12» на клавиатуре, чтобы открыть экран конфигураций.
Перейдите к конфигурации: На экране конфигураций отображается список доступных конфигураций. Выберите мод, настройки которого вы хотите изменить.
Редактирование записей конфигурации: Экран конфигурации отображает доступные настройки. Каждая запись включает:
- Заголовок: Название настройки.
- Поле ввода: Поле для редактирования значения.
- Кнопка сброса: Кнопка для сброса значения к значению по умолчанию.
Сохраните изменения: Нажмите кнопку «Сохранить изменения», чтобы сохранить ваши правки. Мод автоматически сохранит изменения в файл конфигурации и синхронизирует их с другими игроками на сервере (если применимо).
Разработка
Создание конфигураций
1. Определите класс конфигурации:
- Создайте новый Java-класс в кодовой базе вашего мода, который представляет конфигурацию вашего мода.
public class MyModConfig {
public static IConfig config;
public static IConfigEntry debug;
public static void init() {
ConfigBuilder builder = new ConfigBuilder(MyMod.MOD_ID, "mymod-config", ConfigExtension.YAML, ConfigType.CLIENT);
}
}
2. Определите записи конфигурации:
- Используйте класс
ConfigBuilder
для определения настроек вашей конфигурации. - Выберите подходящий тип данных для каждой записи, используя методы
define*
.
// Пример определения логической записи:
debug = builder.defineBoolean("debug", false);
// Пример определения целочисленной записи с диапазоном:
intEntry = builder.defineInteger("intEntry", 10, 0, 100); // Мин. 0, макс. 100
// Пример определения строковой записи с шаблоном:
stringEntry = builder.defineString("stringEntry", "test", "test\\d+");
// Пример определения записи реестра:
registryEntry = builder.defineRegistry("registryEntry", Blocks.GRASS_BLOCK, BuiltInRegistries.BLOCK);
// Пример определения списка:
stringListEntry = builder.defineStringList("stringListEntry", List.of("test1", "test2", "test3"), 3, 10); // Мин. 3, макс. 10
// Пример определения карты:
integerMapEntry = builder.defineIntegerMap("integerMapEntry", Map.of("test1", 1, "test2", 2, "test3", 3), 3, 10); // Мин. 3, макс. 10
3. Соберите конфигурацию:
- Вызовите метод
build()
уConfigBuilder
, чтобы создать вашу конфигурацию. - Сохраните конфигурацию в статическом поле для легкого доступа в коде вашего мода.
public MyModConfig() {
ConfigBuilder builder = new ConfigBuilder("mymod", "mymod-config", ConfigExtension.YAML, ConfigType.CLIENT);
// ... определение записей конфигурации
config = builder.build();
}
4. Доступ к значениям конфигурации в вашем коде:
- Используйте метод
get()
для получения текущего значения записи конфигурации. - Используйте метод
set()
для изменения значения записи конфигурации.
// Пример:
boolean debugEnabled = MyModConfig.debug.get(); // Получить текущее значение настройки "debug"
if (debugEnabled) {
// Выполнить действия, связанные с отладкой
}
MyModConfig.intEntry.set(25); // Установить значение "intEntry" равным 25
Тип конфигурации
ConfigType.CLIENT
: Клиентские конфигурации специфичны для клиента, на котором установлен мод. Они не передаются другим игрокам на сервере.ConfigType.SERVER
: Серверные конфигурации специфичны для выделенных серверов. Они не используются в одиночных мирах и не синхронизируются с игроками на сервере.ConfigType.COMMON
: Общие конфигурации используются как на клиентах, так и на сервере. Их можно редактировать на сервере, напрямую изменяя файл конфигурации и перезапуская сервер, или редактируя значения с помощью внутриигрового графического интерфейса и сохраняя изменения.
Использование пользовательских типов данных
- Используйте интерфейс
IConfigEntryType
для регистрации пользовательских типов данных в моде YAML Config. - Реализуйте пользовательский сериализатор для обработки сериализации и десериализации вашего пользовательского типа данных.
Конфигурация модпаков
- Если вы создаете модпак, вы можете использовать YAML Config для определения настроек конфигурации вашего модпака.
- Поместите файл конфигурации для вашего модпака в папку «config» в директории вашего модпака.
Примеры
// Пример: Базовая клиентская конфигурация
public class MyModConfig {
public static IConfig config;
public static IConfigEntry debug;
public static IConfigEntry testInt;
public static void init() {
ConfigBuilder builder = new ConfigBuilder("mymod", "mymod-config", ConfigExtension.YAML, ConfigType.CLIENT);
debug = builder.defineBoolean("debug", false) // по умолчанию false.
.withComments("Включен ли режим отладки для мода.");
testInt = builder.defineInteger("testInt", 10, 0, 100); // по умолчанию 10, мин. 0 и макс. 100.
config = builder.build();
}
}