1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Плагин ничего не записывает в yaml файл

Тема в разделе "Разработка плагинов для новичков", создана пользователем CreeperPro35, 25 янв 2019.

Статус темы:
Закрыта.
  1. Автор темы
    CreeperPro35

    CreeperPro35 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    _SEVENTYNINE_
    Нужно, чтобы плагин записал хоть что-то (это "хоть что-то" в моём коде - слово Regular) в yaml конфиг.
    Однако, ничего не хочет записываться. Ошибки не выдаёт. canWrite = true, джаву (как и yaml) не учил

    Код:
        private ConfigManager cfmg;
       
        public void onEnable() {
            loadConfigManager();
        }
       
    public void loadConfigManager() {
            cfmg = new ConfigManager();
            cfmg.setup();
            cfmg.chkSections();
        } 
        }
    

    Код:
    public class ConfigManager {
       
        private Main plugin = Main.getPlugin(Main.class);
       
        public FileConfiguration players;
        public File playerslist;
       
        public void setup() {
            if (!plugin.getDataFolder().exists()) {
                plugin.getDataFolder().mkdir();
            }
           
            playerslist = new File (plugin.getDataFolder(), "players.yml");
           
            if (!playerslist.exists()) {
                try {
                    playerslist.createNewFile();
                    Bukkit.getLogger().info("The players.yml file has been created successful");
                } catch (IOException e) {
                    Bukkit.getLogger().severe(ChatColor.RED + "Лох");
                }
            }
           
            players = YamlConfiguration.loadConfiguration(playerslist);
        }
       
        public void chkSections () {
            players.createSection("Regular");
            Bukkit.getLogger().info(ChatColor.GREEN + "Sections checker has been passed successfully!");
            Bukkit.getLogger().info("Writeable: " + playerslist.canWrite());
        }

    Код:
    00:54:44 INFO]: [Effect Library] Enabling EffectLib v6.1
    [00:54:44 INFO]: [EffectLibTestPlugin] Enabling EffectLibTestPlugin v1.0
    [00:54:44 INFO]: зaSections checker has been passed successfully!
    [00:54:44 INFO]: Writeable: true
    [00:54:45 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [00:54:45 INFO]: Done (3,150s)! For help, type "help" or "?"

    Писал с туториала TSC, если что
    Заранее спасибо за уделённое время на прочтение этого всего
     
  2. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Нужно save, без него не сохранит.
     
  3. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ну тогда ничего удивительного
     
  4. NyanGuyMF

    NyanGuyMF Активный участник Пользователь

    Баллы:
    76
    Записать что-нибудь в конфиг можно методом set(path, value):
    PHP:
    config.set("players.Notch.lastlogin"System.currentTimeMillis());
    Пример обвязки:
    PHP:
    public void set(String pathObject obj) {
        
    this.config.set(pathobj);
    }
    После установления всех необходимых значений в конфиге необходимо его сохранить:
    PHP:
    public void save() {
        try {
            
    config.save(file);
        } catch (
    Exception ex) {
            
    ex.printStackTrace();
        }
    }
    На мой взгляд, удобнее сохранять файлы через instance JavaPlugin (главного) класса:
    PHP:
    /**
     * @param JavaPlguin plugin экземпляр главного класса плагина,
     * можно передать с помощью setup(this); из главного класса.
     */
    public void setup(JavaPlugin plugin) {
        
    // code ...

        
    File configFile = new File(plugin.getDataFolder(), "players.yml");
        
    plugin.saveResource(configFile.getName(), ture /*false*/); // true - перезаписать файл, false - не перезаписывать

        // code ...
    }
    Но при этом файл конфигурации должен быть в .jar архиве.
     
  5. EwrsPlay

    EwrsPlay Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Ewrs728
    Только, вроде, комментарии собьются
     
  6. AbstractCoder

    AbstractCoder Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ну да, ямл не предназначен для хранения)
     
Статус темы:
Закрыта.

Поделиться этой страницей