Скачать BetterConfig — Minecraft Моды — MetaMods

BetterConfig

Активный

Установок

1

Последнее обновление

8 месяцев назад

Версии

1.19.3 — 1.21
Клиент
Fabric
Библиотеки
Управление
Хранилища

BetterConfig

BetterConfig

Мощная библиотека для управления конфигурациями через команды, которая одинаково хорошо работает как на серверах, так и на клиентах Minecraft.

Быстрый старт

Для начала работы создайте новый класс, который будет содержать все ваши настройки. Давайте назовем его Configs. Убедитесь, что класс объявлен как public! Затем добавьте поле для конфигурационной записи - оно не должно быть финальным. Поместите над полем аннотацию @Config. Начальное значение поля будет использоваться как значение по умолчанию. Вы можете добавить комментарий через атрибут comment.

public class Configs {
    @Config(comment = "Это пример!")
    public static String exampleString = "default";
}

Теперь зарегистрируйте ваш класс Configs:

  • Для Fabric: добавьте регистрацию в метод onInitialize(Client) вашего мода. Замените <mod id> на идентификатор вашего мода. Иногда можно опустить generics и использовать просто <>.
    • На клиентах:
      new ModConfigBuilder<FabricClientCommandSource, CommandBuildContext>(<mod id>, Configs.class).build();
    • На серверах:
      new ModConfigBuilder<CommandSourceStack, CommandBuildContext>(<mod id>, Configs.class).build();
  • Для Paper: зарегистрируйте класс Configs в методе onEnable вашего плагина. Замените <plugin name> на название плагина.
    new ModConfigBuilder<>(<plugin name>, Configs.class).build();

Готово! Теперь вы можете обращаться к exampleString через Configs.exampleString. Изменять значение можно с помощью команд конфигурации.

Команды для изменения настроек

  • Fabric: команды различаются для клиента и сервера. Замените <mod id> на идентификатор вашего мода.
    • На клиентах: /cconfig <mod id> exampleString set <string>
    • На серверах: /config <mod id> exampleString set <string>
  • Paper серверы: /config <plugin name> exampleString set <string>. Замените <plugin name> на название плагина.

Расширенные возможности

Библиотека поддерживает использование Collection и Map в качестве типов переменных. Для таких конфигураций доступны операции add, put и remove. Кроме того, вы можете создавать собственные сериализаторы для работы с любыми типами данных. Для этого просто зарегистрируйте сериализатор при создании конфигурации.

Например, для работы с типом Block:

new ModConfigBuilder<>(<mod id>, Configs.class)
    .registerTypeHierarchy(Block.class, new BlockAdapter(), BlockArgumentType::block)
    .build();

где BlockAdapter расширяет TypeAdapter<Block>, а BlockArgumentType реализует ArgumentType<Block>.

Кастомизация поведения

Вы можете полностью изменить логику обновления значений конфигурации, создав собственные методы. Просто добавьте один или несколько атрибутов: setter, adder, putter или remover к аннотации @Config.

Пример с кастомным добавлением в Map:

@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));
}

Значение "none" для putter указывает, что стандартный putter не будет доступен. Теперь вы можете добавлять значения в Map командой /(c)config <mod id> exampleMapAdder add <string>.

Параметры методов обновления также можно настраивать:

@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));
}

Для putters доступны отдельные атрибуты типов для ключа и значения.

Установка

Замените ${betterconfig_version} на версию артефакта.

Вы можете выбрать между собственным maven репозиторием автора и репозиторием GitHub Packages.

Собственный репозиторий

repositories {
    maven {
        url 'https://maven.xpple.dev/maven2'
    }
}

GitHub Packages

repositories {
    maven {
        url 'https://maven.pkg.github.com/xpple/BetterConfig'
        credentials {
            username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
            password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
        }
    }
}

Добавьте зависимость:

dependencies {
    // Fabric
    include modImplementation('dev.xpple:betterconfig-fabric:${betterconfig_version}')
    // Paper (также добавьте JAR в папку plugins)
    compileOnly 'dev.xpple:betterconfig-paper:${betterconfig_version}'
}
Участники проекта
xpple

xpple

Разработчик

Создан: 6 фев 2023

ID: 1606