Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

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
Но уже загрузить его назад в плагин не удаётся, выдаёт ошибку
 
Последнее редактирование:
Добрый день, уважаемые.
Имеется класс Игроков
Код:
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
Но уже загрузить его назад в плагин не удаётся, выдаёт ошибку
Как именно загрузить назад в плагин? По подробнее напиши.
 
Как именно загрузить назад в плагин? По подробнее напиши.
Код:
public static FileConfiguration file = new YamlConfiguration();
file.set("Players", tests);
file.save("Plugins/SkyRPG/Test.yml");
file.load("Plugins/SkyRPG/Test.yml");
и на загрузке ошибка
 
Код:
public static FileConfiguration file = new YamlConfiguration();
file.set("Players", tests);
file.save("Plugins/SkyRPG/Test.yml");
file.load("Plugins/SkyRPG/Test.yml");
и на загрузке ошибка
Естественно так у тебя не сработает. Тебе нужно писать дополнительный код для десериализации конфига.

PHP:
try {
    FileConfiguration file = YamlConfiguration.loadConfiguration(new File("Plugins/SkyRPG/Test.yml"));
    if (file.contains("Players")) {
        List<Players> playersList = 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(name, pass, id, status, money);
            playersList.add(player);
        }
        // Ваш код для дальнейшей работы с загруженным списком игроков
        // ...
    }
} catch (IOException e) {
    e.printStackTrace();
}
 
Естественно так у тебя не сработает. Тебе нужно писать дополнительный код для десериализации конфига.

PHP:
try {
    FileConfiguration file = YamlConfiguration.loadConfiguration(new File("Plugins/SkyRPG/Test.yml"));
    if (file.contains("Players")) {
        List<Players> playersList = 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(name, pass, id, status, money);
            playersList.add(player);
        }
        // Ваш код для дальнейшей работы с загруженным списком игроков
        // ...
    }
} catch (IOException e) {
    e.printStackTrace();
}
ЗА последнее время много прочитал. Раньше я вообще не знал про сериализацию.
Но вот теперь упёрся в сериализацию класса острова. Что бы засэйвить в 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 сериализует прекрасно
Может подскажешь как это лучше сделать?
 
Последнее редактирование:

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

Назад
Верх