Помогите Абсолютная копия предмета в Json

  • Автор темы Автор темы Slavkaa
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Slavkaa

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Slavok2001
Возможно ли записать абсолютно точную копию ItemStack'a в Json-файл?
gson.toJson(stack) дал мне строку только с тремя параметрами.
 
Код:
    public static NBTTagList toNBTTagList(ItemStack[] inventory) {
        NBTTagList itemList = new NBTTagList();
        for (int i = 0; i < inventory.length; i++) {
            NBTTagCompound outputObject = new NBTTagCompound();
            boolean b = false;
            if(inventory[i] != null) {
                b = inventory[i].getType() == Material.AIR;
            }
            if(b) {
                inventory[i] = null;
            }
            CraftItemStack craft = getCraftVersion(inventory[i]);
            if (craft != null)
                CraftItemStack.asNMSCopy(craft).save(outputObject);
                itemList.add(outputObject);
        }
        return itemList;
    }


Код:
    private static CraftItemStack getCraftVersion(ItemStack stack) {
        if (stack instanceof CraftItemStack)
            return (CraftItemStack) stack;
        else if (stack != null)
            return CraftItemStack.asCraftCopy(stack);
        else
            return null;
    }
 
Код:
    private static CraftItemStack getCraftVersion(ItemStack stack) {
        if (stack instanceof CraftItemStack)
            return (CraftItemStack) stack;
        else if (stack != null)
            return CraftItemStack.asCraftCopy(stack);
        else
            return null;
    }
Не получается получить Json-строку через Gson.toJson(getCraftVersion(stack))
Код:
[13:25:49] [Server thread/WARN]: Unexpected exception while parsing console command "itest"
org.bukkit.command.CommandException: Unhandled exception executing command 'itest' in plugin ItemTest v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServer.java:625) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchServerCommand(CraftServer.java:611) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.DedicatedServer.aM(DedicatedServer.java:320) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:285) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:609) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:517) [craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_151]
Caused by: java.lang.IllegalArgumentException: class net.minecraft.server.v1_8_R1.EntityItemFrame declares multiple JSON fields named c
    at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:122) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.Gson.getAdapter(Gson.java:356) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:82) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:118) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.Gson.getAdapter(Gson.java:356) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:82) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:118) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.Gson.getAdapter(Gson.java:356) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.Gson.toJson(Gson.java:585) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.Gson.toJson(Gson.java:572) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.Gson.toJson(Gson.java:527) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at org.bukkit.craftbukkit.libs.com.google.gson.Gson.toJson(Gson.java:507) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    at test.Main.onCommand(Main.java:24) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit-1.8-R0.1-SNAPSHOT-latest.jar:git-Bukkit-33d5de3]
    ... 8 more
24-ая строка:
PHP:
sender.sendMessage(new GsonBuilder().create().toJson(getCraftVersion(stack)));
 
Попробовал getCraftVersion(stack).serialize(), строку выводит, но если сохранить написанную книгу в файл и позже получить ее, сохранится ли ее содержимое?
UPD:
ItemStack.serialize() сохраняет данные так же, но вопрос остался тот же, что и выше
 
Все нормально записывает, вроде правильно достает из файла, но когда у предмета записываются и достаются такие данные, как кол-во, урон(целые числа, короче), то вылетает ClassCastException, мол, не может закастить Double в Integer, хотя в файле целые числа
 
Решил вопрос по-другому. Тема закрыта.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх