
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}'
}