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

Помогите Сохранение класс в конфиг

Тема в разделе "Разработка плагинов для новичков", создана пользователем fedortik, 8 июл 2023.

  1. Автор темы
    fedortik

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

    Баллы:
    61
    Имя в Minecraft:
    FEDORTIK
    Добрый день, уважаемые.
    Имеется класс Игроков
    Код:
    public class Players{
        public String name;
        public String pass;
        public int id;
        public int status;
        public float money;
    
        public Players(String name, String pass, int id, int status, float money) {
            this.name = name;
            this.pass = pass;
            this.id = id;
            this.status = status;
            this.money = money;
        }
    Соответственно создаётся лист с элементами этого класса
    Код:
    public static List<Players> tests = new ArrayList<>();
    Таким образом соохраняется в файл
    Код:
    public static FileConfiguration file = new YamlConfiguration();
    file.set("Players", tests);
    file.save("Plugins/SkyRPG/Test.yml");
    
    Получем такой Файл
    Код:
    Players:
    - !!me.teodor.skyrpg.Auth.Test
      id: 1
      money: 1.0
      name: '1111'
      pass: '111'
      status: 1
    - !!me.teodor.skyrpg.Auth.Test
      id: 1
      money: 1.0
      name: '1111'
      pass: '111'
      status: 1
    - !!me.teodor.skyrpg.Auth.Test
      id: 1
      money: 1.0
      name: '1111'
      pass: '111'
      status: 1
    
    Но уже загрузить его назад в плагин не удаётся, выдаёт ошибку
     
    Последнее редактирование: 8 июл 2023
  2. VladNotch

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

    Баллы:
    76
    Как именно загрузить назад в плагин? По подробнее напиши.
     
  3. Автор темы
    fedortik

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

    Баллы:
    61
    Имя в Minecraft:
    FEDORTIK
    Код:
    public static FileConfiguration file = new YamlConfiguration();
    file.set("Players", tests);
    file.save("Plugins/SkyRPG/Test.yml");
    file.load("Plugins/SkyRPG/Test.yml");
    и на загрузке ошибка
     
  4. VladNotch

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

    Баллы:
    76
    Естественно так у тебя не сработает. Тебе нужно писать дополнительный код для десериализации конфига.

    PHP:
    try {
        
    FileConfiguration file YamlConfiguration.loadConfiguration(new File("Plugins/SkyRPG/Test.yml"));
        if (
    file.contains("Players")) {
            List<
    PlayersplayersList = new ArrayList<>();
            
    ConfigurationSection playersSection file.getConfigurationSection("Players");
            for (
    String key playersSection.getKeys(false)) {
                
    ConfigurationSection playerSection playersSection.getConfigurationSection(key);
                
    String name playerSection.getString("name");
                
    String pass playerSection.getString("pass");
                
    int id playerSection.getInt("id");
                
    int status playerSection.getInt("status");
                
    float money = (float) playerSection.getDouble("money");
                
    Players player = new Players(namepassidstatusmoney);
                
    playersList.add(player);
            }
            
    // Ваш код для дальнейшей работы с загруженным списком игроков
            // ...
        
    }
    } catch (
    IOException e) {
        
    e.printStackTrace();
    }
     
  5. Автор темы
    fedortik

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

    Баллы:
    61
    Имя в Minecraft:
    FEDORTIK
    ЗА последнее время много прочитал. Раньше я вообще не знал про сериализацию.
    Но вот теперь упёрся в сериализацию класса острова. Что бы засэйвить в json а потом достать
    Код:
    package me.teodor.skyrpg.Islands;
    
    import com.google.common.hash.HashCode;
    import org.bukkit.Chunk;
    import org.bukkit.Location;
    import java.util.List;
    
    public class Island {
    
        private String owner;
        private int id;
        private Location spawn;
        private List<Chunk> Chunks;
        private List<Chunk> AllowChunks;
    
        public Island(String owner, int id, Location spawn, List<Chunk> chunks, List<Chunk> allowChunks) {
            this.owner = owner;
            this.id = id;
            this.spawn = spawn;
            this.Chunks = chunks;
            this.AllowChunks = allowChunks;
        }
    }
    Пробовал через jackson и gson
    Ни лист элементов класса, сами элементы они сериализовать не могу(либо я глупый)
    Я так понял это из-за list<chunk>, потому что описанный выше List<Test> gson сериализует прекрасно
    Может подскажешь как это лучше сделать?
     
    Последнее редактирование: 11 июл 2023

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