- Баллы
- 46
- Имя в Minecraft
- MySoulIsCry
Создаю и инициализирую конфиг таким образом.
При 1 инициализации все ок конфиг создается после чего я его наполняю для теста.
Но при 2 запуске плагина когда файл уже существует вылетает ошибка.
Вылетает она на private FileConfiguration partyDataConfig = YamlConfiguration.loadConfiguration(partyDataFile);
Не могу понять в чем проблема ведь на более старых версиях таких как 1 12 2 или 1 16 5 это все работало нормально а тут нет.
PHP:
private File partyDataFile = new File(getDataFolder() + File.separator + "data" + File.separator + "partyData.yml");
private FileConfiguration partyDataConfig = YamlConfiguration.loadConfiguration(partyDataFile);
Но при 2 запуске плагина когда файл уже существует вылетает ошибка.
Вылетает она на private FileConfiguration partyDataConfig = YamlConfiguration.loadConfiguration(partyDataFile);
Не могу понять в чем проблема ведь на более старых версиях таких как 1 12 2 или 1 16 5 это все работало нормально а тут нет.
PHP:
[19:56:21] [Server thread/WARN]: org.bukkit.plugin.InvalidPluginException: org.yaml.snakeyaml.error.YAMLException: Could not deserialize object
[19:56:21] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:149)
[19:56:21] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:394)
[19:56:21] [Server thread/WARN]: at com.rylinaux.plugman.util.PluginUtil.load(PluginUtil.java:295)
[19:56:21] [Server thread/WARN]: at com.rylinaux.plugman.command.LoadCommand.execute(LoadCommand.java:114)
[19:56:21] [Server thread/WARN]: at com.rylinaux.plugman.PlugManCommandHandler.onCommand(PlugManCommandHandler.java:95)
[19:56:21] [Server thread/WARN]: at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45)
[19:56:21] [Server thread/WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149)
[19:56:21] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_18_R1.CraftServer.dispatchCommand(CraftServer.java:821)
[19:56:21] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_18_R1.CraftServer.dispatchServerCommand(CraftServer.java:806)
[19:56:21] [Server thread/WARN]: at net.minecraft.server.dedicated.DedicatedServer.bf(DedicatedServer.java:453)
[19:56:21] [Server thread/WARN]: at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:429)
[19:56:21] [Server thread/WARN]: at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1206)
[19:56:21] [Server thread/WARN]: at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1034)
[19:56:21] [Server thread/WARN]: at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:304)
[19:56:21] [Server thread/WARN]: at java.base/java.lang.Thread.run(Thread.java:833)
[19:56:21] [Server thread/WARN]: Caused by: org.yaml.snakeyaml.error.YAMLException: Could not deserialize object
[19:56:21] [Server thread/WARN]: at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:50)
[19:56:21] [Server thread/WARN]: at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:230)
[19:56:21] [Server thread/WARN]: at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:220)
[19:56:21] [Server thread/WARN]: at org.bukkit.configuration.file.YamlConstructor.construct(YamlConstructor.java:27)
[19:56:21] [Server thread/WARN]: at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:158)
[19:56:21] [Server thread/WARN]: at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:156)
[19:56:21] [Server thread/WARN]: at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:115)
[19:56:21] [Server thread/WARN]: at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:160)
[19:56:21] [Server thread/WARN]: at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:128)
[19:56:21] [Server thread/WARN]: at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:304)
[19:56:21] [Server thread/WARN]: at com.dsparty.DSParty.<init>(DSParty.java:20)
[19:56:21] [Server thread/WARN]: at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[19:56:21] [Server thread/WARN]: at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
[19:56:21] [Server thread/WARN]: at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[19:56:21] [Server thread/WARN]: at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
[19:56:21] [Server thread/WARN]: at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
[19:56:21] [Server thread/WARN]: at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347)
[19:56:21] [Server thread/WARN]: at java.base/java.lang.Class.newInstance(Class.java:645)
[19:56:21] [Server thread/WARN]: at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:79)
[19:56:21] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:145)
[19:56:21] [Server thread/WARN]: ... 14 more
[19:56:21] [Server thread/WARN]: Caused by: java.lang.IllegalArgumentException: Specified class does not exist ('com.dsparty.party.Party')
[19:56:21] [Server thread/WARN]: at org.bukkit.configuration.serialization.ConfigurationSerialization.deserializeObject(ConfigurationSerialization.java:197)
[19:56:21] [Server thread/WARN]: at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:48)
[19:56:21] [Server thread/WARN]: ... 33 more
PHP:
if (!partyDataFile.exists()) {
try {
partyDataConfig.save(partyDataFile);
} catch (IOException e) {
logger.warning("Failed to create partyData.yml file");
}
}
Создание набора данных для теста:
Сохранение в конфиг:
pojo class Party:
PHP:
PartyDataManager partyDataManager = new PartyDataManager(this, partyDataConfig, partyDataFile);
ArrayList<Party> parties = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Party party = new Party(Math.random()+ "");
party.setHome(new Location(Bukkit.getWorld(""), 1, 2, 3));
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("123123123");
arrayList.add("123123123");
arrayList.add("123123123");
arrayList.add("123123123");
party.setMembersUUID(arrayList);
parties.add(party);
}
partyDataManager.saveParties(parties);
Сохранение в конфиг:
PHP:
public void saveParties(ArrayList<Party> parties){
for(Party party : parties){
partyData.set(party.getOwnerUUID(), party);
}
try {
partyData.save(partyFile);
} catch (IOException e) {
e.printStackTrace();
}
}
pojo class Party:
PHP:
public class Party implements ConfigurationSerializable {
private String ownerUUID;
private ArrayList<String> membersUUID;
transient private Location home;
public Party(String ownerUUID) {
this.ownerUUID = ownerUUID;
}
public String getOwnerUUID() {
return ownerUUID;
}
public void setOwnerUUID(String ownerUUID) {
this.ownerUUID = ownerUUID;
}
public ArrayList<String> getMembersUUID() {
return membersUUID;
}
public void setMembersUUID(ArrayList<String> membersUUID) {
this.membersUUID = membersUUID;
}
public Location getHome() {
return home;
}
public void setHome(Location home) {
this.home = home;
}
@Override
public String toString(){
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Owner: " + ownerUUID);
stringBuilder.append("\nMembers: ");
for(String s : membersUUID){
stringBuilder.append("/n - " + s);
}
stringBuilder.append("Location: x:" + home.getX() + " y: " + home.getY() + " z: " + home.getBlockZ());
return stringBuilder.toString();
}
@Override
public Map<String, Object> serialize() {
Map<String, Object> map = new HashMap<>();
map.put("Owner", ownerUUID);
map.put("Members", membersUUID);
map.put("Home", home);
return map;
}
}