https://static.devmc.org/images/6edfbc3b-7ed2-43d7-8842-ac500348ca25.png
XConfiguration
XConfiguration

Универсальная библиотека для работы с yml-конфигурациями

xconfiguration logo

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!

Пример использования:

usage example

Остальные фичи можно посмотреть на вики: https://github.com/Xezard/XConfiguration/wiki