BetterConfig
Активный0.0
Установок
Последнее обновление
Версии
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}'
}