▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/BetterConfig
BetterConfig

BetterConfig

BetterConfig - мощная библиотека для управления конфигурациями через команды в Minecraft. Подходит для Fabric и Paper. Упрощает создание настраиваемых параметров для модов и плагинов.

Оцените первым
8.7K
10

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 и попробуйте сами - разница с ручным парсингом колоссальная.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

1.21.x1.20.x1.19.x

Платформы

Поддерживаемые окружения

Клиент и сервер

Ссылки


Создатели

Детали

Лицензия:
Опубликован:3 года назад
Обновлён:1 год назад
Главная