Разделы config.yml плагина Minecraft не сохраняются

Я пишу плагин Minecraft, основанный на кодировании spigot. Но у меня есть следующая проблема: я пытаюсь отредактировать файл конфигурации через плагин, но когда я пытаюсь сохранить информацию, данные не сохраняются. В качестве примера, когда я меняю name с Archive на Archive Stats и перезагружаю сервер. Затем конфигурация name возвращается к Archive.

Archive:
  Material:
    ==: org.bukkit.inventory.ItemStack
    v: 2586
    type: BOOKSHELF
  ArchiveAtStart: false
  Name: Archive

когда я меняю имя на "Статистика архива"

Archive:
  Material:
    ==: org.bukkit.inventory.ItemStack
    v: 2586
    type: BOOKSHELF
  ArchiveAtStart: false
  Name: Archive Stats

и перезагрузил сервер, он по-прежнему возвращается в "Архив"

Archive:
  Material:
    ==: org.bukkit.inventory.ItemStack
    v: 2586
    type: BOOKSHELF
  ArchiveAtStart: false
  Name: Archive

Итак, вот 2 кода, которые нужно показать:

  1. Класс
package com.Fender.Bedrock.files;

import com.Fender.Bedrock.Bedrock;
import org.bukkit.Bukkit;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

public class CustomConfig
{

    private static Bedrock plugin;
    public static File file;
    private static FileConfiguration customFile;

    public static void setup(Bedrock plugin1)
    {

        plugin = plugin1;

        file = new File(plugin.getDataFolder(), "config.yml");


        if (!file.exists())
        {
            try {
                file.createNewFile();
            }catch (IOException e){

            }
        }

        customFile = new YamlConfiguration();
        save();


        try{customFile.load(file);}
        catch (IOException | InvalidConfigurationException e)
        {
            e.printStackTrace();
        }

    }

    public static FileConfiguration get()
    {

        return customFile;
    }


    public static void save()
    {
        try
        {
            customFile.save(file);
        }catch (IOException e)
        {
            System.out.print("Couldn't save file!");
        }
    }

    public static void load()
    {
        try
        {
            try {
                try {
                    customFile.load(file);
                }catch (InvalidConfigurationException i){
                    System.out.print("Couldn't load file!");
                }
            }catch (FileNotFoundException f)
            {
                System.out.print("Couldn't load file!");
            }
        }catch (IOException e)
        {
            System.out.print("Couldn't load file!");
        }
    }

    public static void reload()
    {
        customFile = YamlConfiguration.loadConfiguration(file);
    }

    public boolean exists()
    {
        if (file.exists()){
            return true;
        }else
            {
                return false;
            }
    }
}

  1. Метод для основного класса
public void FileCreate()
    {
        CustomConfig.setup(this);
        CustomConfig.reload();
        {
            CustomConfig.get().addDefault("Name1", "§dHis");
            CustomConfig.get().addDefault("Place", 1);

            CustomConfig.get().createSection("Archive");
            CustomConfig.get().getConfigurationSection("Archive").addDefault("Material", itemStack);
            CustomConfig.get().getConfigurationSection("Archive").addDefault("ArchiveAtStart", false);
            CustomConfig.get().getConfigurationSection("Archive").addDefault("Name", "Archive");

            CustomConfig.get().createSection("noob").addDefault("help", false);
        }
        CustomConfig.get().options().copyHeader(true);
        CustomConfig.get().options().copyDefaults(true);
        CustomConfig.save();
        //saveResource("config.yml", false);
        this.saveDefaultConfig();
    }

Если вы можете помочь, мы будем очень признательны, спасибо.

Сохраняете ли вы конфигурацию при выключении плагина (т.е. из конфигурации, хранящейся в памяти)? Это может отменять ваши изменения при перезапуске. Также есть более простой способ получить основную конфигурацию (config.yml), которая также будет обрабатывать загрузку по умолчанию, используя JavaPlugin.#getConfig(), то есть plugin.getConfig() в вашем случае.

Ben 06.04.2021 12:26

Итак, ваш первый вопрос, имеет ли это какое-либо отношение к проблеме? @Override public void onEnable() { FileCreate(); this.getConfig().options().copyDefaults(true); this.saveConfig(); } @Override public void onDisable() { getServer().getConsoleSender().sendMessage(ChatColor.GRAY + "[" + getName() + "] " + ChatColor.RED + "Plugin is disabled"); } это методы включения и отключения

Fender Selim 06.04.2021 14:19

Ах нет, выглядит нормально. Я бы добавил это к деталям вопроса для будущих читателей. Возможно, стоит сделать репост на форумах bukkit / spigot.

Ben 07.04.2021 04:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
36
0

Другие вопросы по теме