В этом гайде начинающие Bukkit разработчики узнают, как легко добавить автообновление конфигурации в свой плагин. Также разберём способ создания config.yml и принцип работы библиотеки Config-Updater от tchristofferson, которая позволяет автоматически обновлять конфиг без потери пользовательских данных.
Разбираемся с файлом конфигурации
config.yml — это файл, который автоматически создаётся плагином для хранения настроек. Он используется для параметров, сообщений и других значений плагина.
В качестве примера будет использоваться плагин xAutoFly.
Пример конфигурации:
# Settings
# enabled - Should the plugin work? (true/false)
# permission-mode - Restrict plugin usage by permission
# permission - Permission node
# send-message - Send message on join
enabled: true
permission-mode: false
permission: 'xaf.perm'
send-message: false
# Locale
prefix: "&bXAF &8>> &f"
unknown-command: "Unknown command."
no-permissions: "You don't have enough permissions to execute this command."
successfully-reloaded: "You have successfully reloaded the configuration."
message: "Flight was enabled &bautomatically&f."
Как видно, конфиг состоит из двух частей: настройки плагина и текстовые сообщения (locale).
Важно: чтобы Config-Updater работал корректно, комментарии должны быть аккуратно структурированы и не мешать YAML-синтаксису.
Добавляем Config-Updater в проект
Подключение происходит через Maven (или Gradle). Пример для pom.xml:
<dependency>
<groupId>com.tchristofferson</groupId>
<artifactId>ConfigUpdater</artifactId>
<version>2.1-SNAPSHOT</version>
</dependency>
Актуальную версию можно найти в официальном репозитории библиотеки.
Создаём класс конфигурации
Рекомендуется вынести работу с конфигом в отдельный класс. Он будет отвечать за создание, проверку и обновление config.yml.
public class Config {
Main plugin;
public Config(Main plugin) {
this.plugin = plugin;
}
public void init() {
File configFile = new File(plugin.getDataFolder(), "config.yml");
// создаём конфиг если его нет
if (!configFile.exists()) {
plugin.getConfig().options().copyDefaults(true);
plugin.saveDefaultConfig();
plugin.getLogger().info("Config was successfully generated.");
}
// обновление конфига через ConfigUpdater
try {
ConfigUpdater.update(plugin, "config.yml", configFile);
} catch (IOException e) {
e.printStackTrace();
}
plugin.reloadConfig();
}
}
Важно: метод ConfigUpdater.update() требует блок try {} / catch {}, так как работает с файлами и может выбрасывать IOException.
Подключаем в главном классе
Сначала создаём объект конфигурации:
Config config;
Далее инициализируем в методе onEnable():
config = new Config(this);
config.init();
Эти строки запускают систему конфигурации при старте плагина.
Как это работает
После запуска плагина происходит следующее:
- Если config.yml отсутствует — он создаётся автоматически
- Конфиг сравнивается с версией внутри .jar
- Недостающие параметры добавляются без удаления старых
- Все пользовательские настройки сохраняются
Проверка работы
Чтобы убедиться, что всё работает правильно:
- Запусти плагин с текущим конфигом
- Добавь новые параметры в config.yml внутри проекта
- Собери новый .jar файл
- Загрузи его на сервер
Если новые строки появились в конфиге — всё работает корректно.
Автообновление конфига — это важный элемент разработки плагинов. Оно избавляет от ручного обновления настроек и предотвращает ошибки при обновлениях.
Готово! Теперь твой плагин умеет автоматически обновлять конфигурацию без потери данных.