XConfiguration
Универсальная библиотека для работы с yml-конфигурациями
XConfiguration - это универсальная библиотека на основе аннотаций для взаимодействия с конфигурациями yml. С её помощью можно автоматически создавать / перезагружать конфигурации, оставлять в них комментарии, а главное, автоматически сохранять и получать объекты Java из конфигурации.
Использование
Начнём с простейшего примера:
public class MessagesConfiguration
extends Configuration {
public MessagesConfiguration(File folder) {
super(folder.getAbsolutePath() + File.separator + "messages.yml");
}
@Setter
@Getter
@ConfigurationField("Hello-world")
public String helloWorld = "Hello, world!";
}
Прежде всего, нам нужно создать наш класс конфигурации.
Этот класс должен быть унаследован от ru.xezard.configurations.Configuration.
В конструкторе суперкласса вам нужно передать полный путь к файлу с именем для конфигурации. Внутри класса все объявленные поля с аннотацией @ConfigurationField считаются полями конфигурации. Значение аннотации @ConfigurationField - это путь к значению поля в конфигурации.
В основном классе плагина:
public class Main
extends JavaPlugin {
/*
* Создаём новый обьект класса нашей конфигурации и сразу же инициализируем его.
* Передаём в конструктор папку нашего плагина.
*/
private MessagesConfiguration messagesConfiguration = new MessagesConfiguration(this.getDataFolder());
@Override
public void onEnable() {
/*
* Этот метод автоматически создаёт файл конфигурации,
* если тот ещё не был создан. Кроме того, он автоматически
* заполняет класс конфигурации значениями из конфига
* и наоборот, заполняет конфигурацию значениями из класса,
* если в файле конфигурации ещё нет соответствующих полей.
*
* Этот же метод также можно вызывать когда
* нужно перезагрузить конфигурацию плагина.
*/
this.messagesConfiguration.load();
/*
* После загрузки нашего конфига мы можем использовать
* любые значения из него.
*/
this.getLogger().info(this.messagesConfiguration.getHelloWorld());
}
@Override
public void onDisable() {
this.messagesConfiguration = null;
}
}
Комментарии
При определении полей конфигурации можно также указать к ним комментарии:
@Getter
public class MessagesConfiguration
extends Configuration {
public MessagesConfiguration(File folder) {
super(folder.getAbsolutePath() + File.separator + "messages.yml");
}
@ConfigurationField("Hello-world.With-comment-above")
@ConfigurationComments({"# First comment line", "# Second comment line"})
public String helloWorld = "Hello, world!";
}
После вызова метода load() можно будет увидеть следующую конфигурацию:
# First comment line
# Second comment line
Hello-world:
With-comment-above: Hello, world!
Пример использования:
Остальные фичи можно посмотреть на вики: https://github.com/Xezard/XConfiguration/wiki