Ir para conteúdo
  • 0

[Dúvida] Como serializar uma lista de itemstack.


Snuck

Pergunta

Olá, eu sou o Ghast (no discord). Quero tirar uma dúvida com algum desenvolvedor. Estou fazendo um essentials e quero fazer um sistema de kits, só que não achei uma classe que serializasse uma ItemStack[]. Achei só uma do @MrPowerGamerBR, só que dava erro na hora de serializar o inventário do jogador e armazenar no arquivo .yml.
Queria saber se algum de vocês tem uma classe para serializar tanto uma itemstack quanto uma lista delas. Peguei uma classe de serializar do RUSH que ele postou na spigot (thx) e tá funcionando perfeitamente, só que ela não serializa uma lista.
Desde já agradeço.
OBS: Serializar em Base64.

Link para o comentário
Compartilhar em outros sites

27 respostass a esta questão

Posts Recomendados

  • 1
Agora, oCyberBR disse:

Mas não da PT se o inventário tiver espaço com AIR?

Não! Nesse ai não. No EnderChest do meu plugin pode ficar com espaços, mas n causa PT algum e ainda fica nas posições certinho

Link para o comentário
Compartilhar em outros sites

  • 0

    public static String itemStackArrayToBase64(ItemStack[] items) throws IllegalStateException {
        try {
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream);

            // Write the size of the com.infernalia.inventory
            dataOutput.writeInt(items.length);

            // Save every element in the list
            for (int i = 0; i < items.length; i++) {
                dataOutput.writeObject(items[i]);
            }

            // Serialize that array
            dataOutput.close();
            return Base64Coder.encodeLines(outputStream.toByteArray());
        } catch (Exception e) {
            throw new IllegalStateException("Unable to save item stacks.", e);
        }
    }

    public static ItemStack[] itemStackArrayFromBase64(String data) throws IOException {
        try {
            ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
            BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);
            ItemStack[] items = new ItemStack[dataInput.readInt()];

            for (int i = 0; i < items.length; i++) {
                items[i] = (ItemStack) dataInput.readObject();
            }

            dataInput.close();
            return items;
        } catch (ClassNotFoundException e) {
            throw new IOException("Unable to decode class type.", e);
        }
    }

 

Sabia que tinha usado Serializer em algum sistema do Infernalia ?

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, zAryon disse:


    public static String itemStackArrayToBase64(ItemStack[] items) throws IllegalStateException {
        try {
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream);

            // Write the size of the com.infernalia.inventory
            dataOutput.writeInt(items.length);

            // Save every element in the list
            for (int i = 0; i < items.length; i++) {
                dataOutput.writeObject(items[i]);
            }

            // Serialize that array
            dataOutput.close();
            return Base64Coder.encodeLines(outputStream.toByteArray());
        } catch (Exception e) {
            throw new IllegalStateException("Unable to save item stacks.", e);
        }
    }

    public static ItemStack[] itemStackArrayFromBase64(String data) throws IOException {
        try {
            ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
            BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);
            ItemStack[] items = new ItemStack[dataInput.readInt()];

            for (int i = 0; i < items.length; i++) {
                items[i] = (ItemStack) dataInput.readObject();
            }

            dataInput.close();
            return items;
        } catch (ClassNotFoundException e) {
            throw new IOException("Unable to decode class type.", e);
        }
    }

 

Sabia que tinha usado Serializer em algum sistema do Infernalia ?

Vou testar mano. Te amo. Vou postar meu essentials logo logo.

Link para o comentário
Compartilhar em outros sites

  • 0
5 minutos atrás, zAryon disse:


    public static String itemStackArrayToBase64(ItemStack[] items) throws IllegalStateException {
        try {
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream);

            // Write the size of the com.infernalia.inventory
            dataOutput.writeInt(items.length);

            // Save every element in the list
            for (int i = 0; i < items.length; i++) {
                dataOutput.writeObject(items[i]);
            }

            // Serialize that array
            dataOutput.close();
            return Base64Coder.encodeLines(outputStream.toByteArray());
        } catch (Exception e) {
            throw new IllegalStateException("Unable to save item stacks.", e);
        }
    }

    public static ItemStack[] itemStackArrayFromBase64(String data) throws IOException {
        try {
            ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
            BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);
            ItemStack[] items = new ItemStack[dataInput.readInt()];

            for (int i = 0; i < items.length; i++) {
                items[i] = (ItemStack) dataInput.readObject();
            }

            dataInput.close();
            return items;
        } catch (ClassNotFoundException e) {
            throw new IOException("Unable to decode class type.", e);
        }
    }

 

Sabia que tinha usado Serializer em algum sistema do Infernalia ?

Dá erro.
 

[13:47:46 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'hat' in plugin EclipseEssentials v1.6
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_201]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_201]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
Caused by: java.lang.IllegalArgumentException: Item cannot be null
        at org.apache.commons.lang.Validate.noNullElements(Validate.java:364) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory.addItem(CraftInventory.java:265) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at Commands.HatCommand.onCommand(HatCommand.java:40) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        ... 15 more

 

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, oCyberBR disse:

Dá erro.
 


[13:47:46 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'hat' in plugin EclipseEssentials v1.6
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_201]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_201]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
Caused by: java.lang.IllegalArgumentException: Item cannot be null
        at org.apache.commons.lang.Validate.noNullElements(Validate.java:364) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.inventory.CraftInventory.addItem(CraftInventory.java:265) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at Commands.HatCommand.onCommand(HatCommand.java:40) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        ... 15 more

 

A culpa não é do Serializer, é você que não sabe usar ele.

 

image.png.e2fc8c6445383a0965c1cf173688d47e.png

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, zAryon disse:

A culpa não é do Serializer, é você que não sabe usar ele.

 

image.png.e2fc8c6445383a0965c1cf173688d47e.png

Acabei de descobrir, olha ali em cima.
Só se o inventário estiver preenchido ele salva na config.

Link para o comentário
Compartilhar em outros sites

  • 0
2 minutos atrás, oCyberBR disse:

Descobri o erro @zAryon. Ele só salva a lista de itemstack se o inventário todo estiver preenchido. Sabe como resolver?-

Dá uma olhada no Serializer do RhinoEnderChest https://github.com/WhitShS/RhinoEnderChest/blob/master/src/me/joao/whitshs/rhinomc/enderchest/Serializer.java

Essa classe não me pertence então...

Link para o comentário
Compartilhar em outros sites

  • 0
7 minutos atrás, WhitShS disse:

Dá uma olhada no Serializer do RhinoEnderChest https://github.com/WhitShS/RhinoEnderChest/blob/master/src/me/joao/whitshs/rhinomc/enderchest/Serializer.java

Essa classe não me pertence então...

[13:59:39 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'hat' in plugin EclipseEssentials v1.6
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_201]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_201]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
Caused by: java.lang.NoClassDefFoundError: org/bukkit/craftbukkit/v1_8_R1/inventory/CraftItemStack
        at Commands.HatCommand.onCommand(HatCommand.java:38) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        ... 15 more
Caused by: java.lang.ClassNotFoundException: org.bukkit.craftbukkit.v1_8_R1.inventory.CraftItemStack
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:91) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_201]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_201]
        at Commands.HatCommand.onCommand(HatCommand.java:38) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        ... 15 more

Link para o comentário
Compartilhar em outros sites

  • 0
10 minutos atrás, oCyberBR disse:

Descobri o erro @zAryon. Ele só salva a lista de itemstack se o inventário todo estiver preenchido. Sabe como resolver?-

Você está querendo salvar o inventário do player?

  Tente utilizar isso:

   

	   public static String toBase64(ItemStack item) throws IOException {
	        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
	        DataOutputStream dataOutput = new DataOutputStream(outputStream);

	        NBTTagList nbtTagListItems = new NBTTagList();
	        NBTTagCompound nbtTagCompoundItem = new NBTTagCompound();

	        net.minecraft.server.v1_8_R3.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);

	        nmsItem.save(nbtTagCompoundItem);

	        nbtTagListItems.add(nbtTagCompoundItem);

				NBTCompressedStreamTools.a(nbtTagCompoundItem, (DataOutput) dataOutput);

	        return new BigInteger(1, outputStream.toByteArray()).toString(32);
	    }

	    /**
	     * Item from Base64
	     * @param data
	     * @return
	     * @throws IOException 
	     */
	    public static ItemStack fromBase64(String data) throws IOException {
	        ByteArrayInputStream inputStream = new ByteArrayInputStream(new BigInteger(data, 32).toByteArray());

	        NBTTagCompound nbtTagCompoundRoot = NBTCompressedStreamTools.a(new DataInputStream(inputStream));

	        net.minecraft.server.v1_8_R3.ItemStack nmsItem = net.minecraft.server.v1_8_R3.ItemStack.createStack(nbtTagCompoundRoot);
	        ItemStack item = (ItemStack) CraftItemStack.asBukkitCopy(nmsItem);

	        return item;
	    }

      Com este código:

      

ArrayList<String> encodedList = new ArrayList<String>();
for(ItemStack i : p.getInventory().getContents()){
    if(i!=null){
    encodedList.add(toBase64(i));
  
  }
  }
  
  
//Caso queira encodar apenas um item:
   ItemStack i = new ItemStack....
   String itemEncoded = toBase64(i);
  

 

Editado por GalaxyProject
Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, GalaxyProject disse:

Você está querendo salvar o inventário do player?

  Tente utilizar isso:

   


	   public static String toBase64(ItemStack item) throws IOException {
	        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
	        DataOutputStream dataOutput = new DataOutputStream(outputStream);

	        NBTTagList nbtTagListItems = new NBTTagList();
	        NBTTagCompound nbtTagCompoundItem = new NBTTagCompound();

	        net.minecraft.server.v1_8_R3.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);

	        nmsItem.save(nbtTagCompoundItem);

	        nbtTagListItems.add(nbtTagCompoundItem);

				NBTCompressedStreamTools.a(nbtTagCompoundItem, (DataOutput) dataOutput);

	        return new BigInteger(1, outputStream.toByteArray()).toString(32);
	    }

	    /**
	     * Item from Base64
	     * @param data
	     * @return
	     * @throws IOException 
	     */
	    public static ItemStack fromBase64(String data) throws IOException {
	        ByteArrayInputStream inputStream = new ByteArrayInputStream(new BigInteger(data, 32).toByteArray());

	        NBTTagCompound nbtTagCompoundRoot = NBTCompressedStreamTools.a(new DataInputStream(inputStream));

	        net.minecraft.server.v1_8_R3.ItemStack nmsItem = net.minecraft.server.v1_8_R3.ItemStack.createStack(nbtTagCompoundRoot);
	        ItemStack item = (ItemStack) CraftItemStack.asBukkitCopy(nmsItem);

	        return item;
	    }

      Com este código:

      


ArrayList<String> encodedList = new ArrayList<String>();
for(ItemStack i : p.getInventory().getContents()){
    encodedList.add(toBase64(i));
  }
  
  
//Caso queira encodar apenas um item:
   ItemStack i = new ItemStack....
   String itemEncoded = toBase64(i);
  

 

Valeu, irei testar.

Link para o comentário
Compartilhar em outros sites

  • 0
3 minutos atrás, GalaxyProject disse:

Você está querendo salvar o inventário do player?

  Tente utilizar isso:

   


	   public static String toBase64(ItemStack item) throws IOException {
	        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
	        DataOutputStream dataOutput = new DataOutputStream(outputStream);

	        NBTTagList nbtTagListItems = new NBTTagList();
	        NBTTagCompound nbtTagCompoundItem = new NBTTagCompound();

	        net.minecraft.server.v1_8_R3.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);

	        nmsItem.save(nbtTagCompoundItem);

	        nbtTagListItems.add(nbtTagCompoundItem);

				NBTCompressedStreamTools.a(nbtTagCompoundItem, (DataOutput) dataOutput);

	        return new BigInteger(1, outputStream.toByteArray()).toString(32);
	    }

	    /**
	     * Item from Base64
	     * @param data
	     * @return
	     * @throws IOException 
	     */
	    public static ItemStack fromBase64(String data) throws IOException {
	        ByteArrayInputStream inputStream = new ByteArrayInputStream(new BigInteger(data, 32).toByteArray());

	        NBTTagCompound nbtTagCompoundRoot = NBTCompressedStreamTools.a(new DataInputStream(inputStream));

	        net.minecraft.server.v1_8_R3.ItemStack nmsItem = net.minecraft.server.v1_8_R3.ItemStack.createStack(nbtTagCompoundRoot);
	        ItemStack item = (ItemStack) CraftItemStack.asBukkitCopy(nmsItem);

	        return item;
	    }

      Com este código:

      


ArrayList<String> encodedList = new ArrayList<String>();
for(ItemStack i : p.getInventory().getContents()){
    encodedList.add(toBase64(i));
  }
  
  
//Caso queira encodar apenas um item:
   ItemStack i = new ItemStack....
   String itemEncoded = toBase64(i);
  

 

Caso queira salvar isto em uma config (o inventário do jogador) como faço?

Link para o comentário
Compartilhar em outros sites

  • 0
2 minutos atrás, GalaxyProject disse:

Normal ué


 Main.getInstance().getConfig().set("Galaxy.Inventory", encodedList);
 Main.getInstance().saveConfig();

 

Fora do for ou dentro? Fora né?

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, oCyberBR disse:

Fora do for ou dentro? Fora né?

ArrayList<String> encodedList = new ArrayList<String>();
for(ItemStack i : p.getInventory().getContents()){
    encodedList.add(toBase64(i));
  }
 Main.getInstance().getConfig().set("Galaxy.Inventory", encodedList);
 Main.getInstance().saveConfig();

 

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, GalaxyProject disse:

ArrayList<String> encodedList = new ArrayList<String>();
for(ItemStack i : p.getInventory().getContents()){
    encodedList.add(toBase64(i));
  }
 Main.getInstance().getConfig().set("Galaxy.Inventory", encodedList);
 Main.getInstance().saveConfig();

 

Só que na hora de colocar os itemstack pro inventário do jogador. Como faço isso? Pois p.getInventory().addItem() é por itemstack, e estamos falando de serialização.

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que o método que eu mandei ainda fica melhor pra utilizar do que o galaxy enviou. Ele pega o inventário certinho.

Essas coisas de colocar em lista, tu pode converter pow.

Editado por WhitShS
Link para o comentário
Compartilhar em outros sites

  • 0
2 minutos atrás, WhitShS disse:

Acho que o método que eu mandei ainda fica melhor pra utilizar do que o galaxy enviou. Ele pega o inventário certinho.

Essas coisas de colocar em lista, tu pode converter pow.

Ss, só que dá erro quando tem um slot vazio no inv do jogador.

Link para o comentário
Compartilhar em outros sites

  • 0
4 minutos atrás, WhitShS disse:

Acho que o método que eu mandei ainda fica melhor pra utilizar do que o galaxy enviou. Ele pega o inventário certinho.

Essas coisas de colocar em lista, tu pode converter pow.

Poderia mandar os exemplos de uso?
Tipo como salva em uma string, como adiciona os itens no inv do jogador,
etc.

Link para o comentário
Compartilhar em outros sites

  • 0
6 minutos atrás, oCyberBR disse:

Poderia mandar os exemplos de uso?
Tipo como salva em uma string, como adiciona os itens no inv do jogador,
etc.

Nessa classe, o inventário já é montado de acorde com as posições, então você pode puxar da configuração direto e só converter para inventário (tem essa opção no serializer que eu te mandei). No meu eu faço exatamente isso, porém eu envio e puxo do MySQL (vai na package dos objects e olha a classe lá).

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, WhitShS disse:

Nessa classe, o inventário já é montado de acorde com as posições, então você pode puxar da configuração direto e só converter para inventário (tem essa opção no serializer que eu te mandei). No meu eu faço exatamente isso, porém eu envio e puxo do MySQL (vai na package dos objects e olha a classe lá).

Mas não da PT se o inventário tiver espaço com AIR?

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, WhitShS disse:

Não! Nesse ai não. No EnderChest do meu plugin pode ficar com espaços, mas n causa PT algum e ainda fica nas posições certinho

Consegui mano valeu, podem fechar o tópico.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...