XConfiguration

XConfiguration 2.0.2

Нет прав для скачивания

Xezard

Дегустатор лени
Разработчик
Инструктор
Пользователь
Сообщения
600
Решения
52
Веб-сайт
xezard.me
Xezard добавил(а) новый ресурс:

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

(Может работать и на более старых версиях)
SpigotMC
:

XConfiguration - это универсальная библиотека на основе аннотаций для взаимодействия с конфигурациями Bukkit / Spigot. С её помощью можно автоматически создавать / перезагружать конфигурации, оставлять в них комментарии, а главное, автоматически сохранять и получать объекты Java из конфигурации...

Узнать больше об этом ресурсе...
 
Пж, убери везде в многострочных кодах BB код [INDENT]. Сильно напрягает.
 
Уже сделано. Они сами автоматически выставились.
 
Последнее редактирование модератором:
Xezard обновил(а) ресурс XConfiguration новой записью:

Обновление 2.0.0.

Плагин практически полностью переписан.
  • Теперь может быть использован отдельно от bukkit / spigot.
    Bukkit configuration api включён в плагин.
  • Логика сохранения комментариев переписана и частично протестирована.
  • Добавлен загрузчик для конфигураций.
    Полезно, если нужно загрузить несколько однотипных обьектов из разных конфигураций, можно использовать для загрузки обьектов меню, или переводов, например.
  • В репозиторий добавлен тестовый плагин для демонстрации особенностей...

Узнать больше об этом обновлении...
 
Последнее редактирование:
Последнее редактирование:
offtop Не большой вопросик.. Как можно сделать пустой параметр пример:
YAML:
Test1: {}
 
offtop Не большой вопросик.. Как можно сделать пустой параметр пример:
YAML:
Test1: {}
Смотря чем это является. Такие кавычки '{}' в дефолт yaml обычно не используются, только если ты не собираешься засунуть туда json объект.
Этот пустой параметр чем будет в дальнейшем?)
Просто в случае с XConfiguration любое поле в конфиге - это java объект или примитив.
 
Смотря чем это является. Такие кавычки '{}' в дефолт yaml обычно не используются, только если ты не собираешься засунуть туда json объект.
Этот пустой параметр чем будет в дальнейшем?)
В дальнейшем во так:
YAML:
Test1:
    User:
    - "Hello World!"
 
В дальнейшем во так:
YAML:
Test1:
    User:
    - "Hello World!"
Ну в таком случае ты не сможешь сделать в конфигурации просто 'Test1:'.
Один из вариантов:
Java:
@ConfigurationField("Test1")
private Map<String, List<String>> anything;
В таком случае будет создана секция Test1: []
После того, как ты положишь какие-нибудь значения в мапу и засейвишь конфиг - получится как раз та картина, которую ты хочешь увидеть.
YAML:
Test1:
  # это ключ твоей мапы
  User:
  - test # а тут тот самый List<String>
  User1: # второе значение мапы
  - kek
Если же у тебя эти данные не меняются, ну тоесть, всегда будет:
YAML:
Test1:
    User:
    - "Hello World!"
То можно поступить проще:
Java:
@ConfigurationField("Test1.User")
private List<String> list;

В общем случае на маленьких плагинах удобство библиотеки полноценно не раскроется. Весь кайф и удобство начинаешь осознавать когда в плагине 5-10 разных конфигураций, в которых хранятся сложные комплексные объекты с большой степенью вложенности.
 
Последнее редактирование:
Это возможно предотвратить что бы стандартные значение в коде к примеру:
Java:
@ConfigurationField("text")
public String text = "текст";
Не записывались на языке Java во так:
YAML:
text: "\u0442\u0435\u043A\u0441\u0442"
Или же это зависит от строки с UTF-8?

И еще у меня почему то комментарии не вставляются как я хочу.
Написано в коде так:
Java:
    @ConfigurationComments("Подключение к базе данных MySQL")
    @ConfigurationField("MySQL.host")
    public String mysql_host = "127.0.0.1";
    @ConfigurationField("MySQL.port")
    public int mysql_port = 3306;
    @ConfigurationField("MySQL.database")
    public String mysql_database = "base";
    @ConfigurationField("MySQL.username")
    public String mysql_username = "user";
    @ConfigurationField("MySQL.password")
    public String mysql_password = "pass";

    @ConfigurationComments({"Настройки", "Ник"})
    @ConfigurationField("nick.lenght")
    public int nick_lenght = 16;
А выводит в файл:
YAML:
MySQL:
  host: 127.0.0.1
  port: 3306
  database: base
  username: user
  password: pass
nick:
  lenght: 16
 
Последнее редактирование:
Это возможно предотвратить что бы стандартные значение в коде к примеру:
Java:
@ConfigurationField("text")
public String text = "текст";
Не записывались на языке Java во так:
YAML:
text: "\u0442\u0435\u043A\u0441\u0442"
Или же это зависит от строки с UTF-8?

И еще у меня почему то комментарии не вставляются как я хочу.
Написано в коде так:
Java:
    @ConfigurationComments("Подключение к базе данных MySQL")
    @ConfigurationField("MySQL.host")
    public String mysql_host = "127.0.0.1";
    @ConfigurationField("MySQL.port")
    public int mysql_port = 3306;
    @ConfigurationField("MySQL.database")
    public String mysql_database = "base";
    @ConfigurationField("MySQL.username")
    public String mysql_username = "user";
    @ConfigurationField("MySQL.password")
    public String mysql_password = "pass";

    @ConfigurationComments({"Настройки", "Ник"})
    @ConfigurationField("nick.lenght")
    public int nick_lenght = 16;
А выводит в файл:
YAML:
MySQL:
  host: 127.0.0.1
  port: 3306
  database: base
  username: user
  password: pass
nick:
  lenght: 16
Так, по порядку. Первое - это, очевидно, проблема кодировки. Любая строка по дефолту записывается изначально как строка, можешь посмотреть мои плагины в которых используется XConfiguration.

Насчёт второго - сейчас буду тестировать сам. Больше в этом конфиге ничего нет? И ещё, какая версия XConfiguration используется?
 
Так, по порядку. Первое - это, очевидно, проблема кодировки. Любая строка по дефолту записывается изначально как строка, можешь посмотреть мои плагины в которых используется XConfiguration.

Насчёт второго - сейчас буду тестировать сам. Больше в этом конфиге ничего нет? И ещё, какая версия XConfiguration используется?
Версия: 2.0.2
Ядро: BungeeCord build
В файле только 2 комментарии поставилось и то не так как я хотел
YAML:
login:
  #Авторизация
  timeout: 120
  errors-to-kick: 3
  session: 43200000
Java:
@ConfigurationComments("Авторизация")
@ConfigurationField("login.timeout")
public int login_timeout = 120;
@ConfigurationField("login.errors-to-kick")
public int login_errorstokick = 3;
@ConfigurationField("login.session")
public long login_session = 43200000L;
 
Версия: 2.0.2
Ядро: BungeeCord build
В файле только 2 комментарии поставилось и то не так как я хотел
YAML:
login:
  #Авторизация
  timeout: 120
  errors-to-kick: 3
  session: 43200000
Java:
@ConfigurationComments("Авторизация")
@ConfigurationField("login.timeout")
public int login_timeout = 120;
@ConfigurationField("login.errors-to-kick")
public int login_errorstokick = 3;
@ConfigurationField("login.session")
public long login_session = 43200000L;
На счёт комментов - да, они всегда появляются в конце пути к объекту. Грубо говоря, если путь: 'Test.Another-test.Path', то коммент будет записан сразу перед 'Path'. В ближайшее время добавлю возможность разместить комментарий в любом участке пути до значения.
 
Назад
Сверху Снизу