
BetterConfig
BetterConfig - мощная библиотека для управления конфигурациями через команды в Minecraft. Подходит для Fabric и Paper. Упрощает создание настраиваемых параметров для модов и плагинов.
BetterConfig
BetterConfig - это библиотека, которая позволяет легко создавать конфигурации для серверов и клиентов прямо через игровые команды. Если вы разрабатываете моды или плагины, то знаете, как муторно писать свои конфиги с нуля - парсить файлы, обрабатывать ошибки, делать команды для изменения значений. BetterConfig решает эту проблему раз и навсегда.
В Minecraft часто нужно настраивать параметры модов: от включения фич до баланса предметов. BetterConfig делает это удобно через команды /config или /cconfig. Библиотека сама генерирует команды для каждого поля, поддерживает коллекции и мапы, а ещё позволяет добавлять кастомные типы данных.
Как создать простую конфигурацию
Создаёшь класс (например, Configs), помечаешь поля аннотацией @Config - и готово. Значение по умолчанию задаётся прямо в коде. Вот пример:
public class Configs {
@Config(comment = "Это пример!")
public static String exampleString = "default";
}
Дальше регистрируешь этот класс:
- Для Fabric - в методе
onInitialize(клиент) илиonInitializeServer(сервер):- На клиенте:
new ModConfigBuilder<FabricClientCommandSource, CommandBuildContext>(<mod id>, Configs.class).build(); - На сервере:
new ModConfigBuilder<CommandSourceStack, CommandBuildContext>(<mod id>, Configs.class).build();
- На клиенте:
- Для Paper - в
onEnableплагина:new ModConfigBuilder<>(<plugin name>, Configs.class).build();
Всё! Теперь значение exampleString можно менять командой:
- На Fabric клиенте:
/cconfig <mod id> exampleString set <string> - На Fabric сервере:
/config <mod id> exampleString set <string> - На Paper:
/config <plugin name> exampleString set <string>
Коллекции и мапы из коробки
BetterConfig изначально поддерживает Collection и Map. Для них автоматически появляются подкоманды add, put, remove. Например, можно сделать конфиг с набором строк или словарём.
Кастомные типы данных
Если нужно хранить что-то своё (например, блоки), регистрируешь адаптер при сборке:
new ModConfigBuilder<>(<mod id>, Configs.class)
.registerTypeHierarchy(Block.class, new BlockAdapter(), BlockArgumentType::block)
.build();
Где BlockAdapter наследует TypeAdapter<Block>, а BlockArgumentType реализует ArgumentType<Block>.
Гибкие методы обновления
Можно переопределить поведение сеттера через атрибуты аннотации @Config. Например, чтобы при добавлении строки в мапу автоматически менять регистр:
@Config(putter = @Config.Putter("none"), adder = @Config.Adder("customMapAdder"))
public static Map<String, String> exampleMapAdder = new HashMap<>(Map.of("a", "A", "b", "B"));
public static void customMapAdder(String string) {
exampleMapAdder.put(string.toLowerCase(Locale.ROOT), string.toUpperCase(Locale.ROOT));
}
Или кастомизировать тип параметра:
@Config(adder = @Config.Adder(value = "customTypeAdder", type = int.class))
public static Collection<String> exampleCustomType = new ArrayList<>(List.of("%", "@"));
public static void customTypeAdder(int codepoint) {
exampleCustomType.add(Character.toString(codepoint));
}
Установка
Добавь зависимость в build.gradle. Версию (betterconfig_version) подставь актуальную.
repositories {
maven {
url 'https://maven.xpple.dev/maven2'
}
}
dependencies {
// Fabric (включается в JAR)
include modImplementation('dev.xpple:betterconfig-fabric:${betterconfig_version}')
// Paper (просто положи JAR в папку plugins)
compileOnly 'dev.xpple:betterconfig-paper:${betterconfig_version}'
}
Если используешь GitHub Packages - настрой credentials по документации GitHub.
BetterConfig - штука полезная для любого разработчика под Майнкрафт. Экономит кучу времени и делает конфиги удобными для игроков. Скачайте мод BetterConfig и попробуйте сами - разница с ручным парсингом колоссальная.
