Хостинг серверов Minecraft playvds.com
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Slavkaa, 9 мар 2018.

Статус темы:
Закрыта.
  1. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Возможно ли записать абсолютно точную копию ItemStack'a в Json-файл?
    gson.toJson(stack) дал мне строку только с тремя параметрами.
     
  2. Mr Hosting
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
        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;
        }
     
  4. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Не получается получить 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)));
     
  5. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Попробовал getCraftVersion(stack).serialize(), строку выводит, но если сохранить написанную книгу в файл и позже получить ее, сохранится ли ее содержимое?
    UPD:
    ItemStack.serialize() сохраняет данные так же, но вопрос остался тот же, что и выше
     
  6. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Все нормально записывает, вроде правильно достает из файла, но когда у предмета записываются и достаются такие данные, как кол-во, урон(целые числа, короче), то вылетает ClassCastException, мол, не может закастить Double в Integer, хотя в файле целые числа
     
  7. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Решил вопрос по-другому. Тема закрыта.
     
Статус темы:
Закрыта.

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