From 9184da925b9bcfcb51b2c053fecfbdabfe6cb1f3 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Wed, 26 Oct 2016 13:58:42 -0400 Subject: [PATCH] added SerializerDebug.java --- src/iie/Serializer.java | 4 +- src/iie/SerializerDebug.java | 80 ++++++++++++++++++++++++++++++++ src/iie/WorldChangeListener.java | 16 +++---- 3 files changed, 90 insertions(+), 10 deletions(-) create mode 100644 src/iie/SerializerDebug.java diff --git a/src/iie/Serializer.java b/src/iie/Serializer.java index ae84848..f6626c4 100644 --- a/src/iie/Serializer.java +++ b/src/iie/Serializer.java @@ -62,8 +62,8 @@ public class Serializer { public static void setInventoryFromSerialized (IInventory invInventory, String invString){ invInventory.l(); - if (invString != null && invString.contains(";")) - Arrays.asList(invString.split("(;)")) + if (invString != null) + Arrays.asList(invString.split(";")) .stream() .forEach(s -> { String[] e = s.split("#"); diff --git a/src/iie/SerializerDebug.java b/src/iie/SerializerDebug.java new file mode 100644 index 0000000..28d3b6e --- /dev/null +++ b/src/iie/SerializerDebug.java @@ -0,0 +1,80 @@ +package iie; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Arrays; +import java.util.Objects; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import org.apache.commons.codec.binary.Base64; +import org.bukkit.entity.Player; + +import net.minecraft.server.v1_10_R1.IInventory; +import net.minecraft.server.v1_10_R1.ItemStack; +import net.minecraft.server.v1_10_R1.JsonList; +import net.minecraft.server.v1_10_R1.NBTCompressedStreamTools; +import net.minecraft.server.v1_10_R1.NBTTagCompound; + +public class SerializerDebug { + + + + public static String serializeItemStack(ItemStack itemStack, Player player){ + player.sendMessage("serializeItemStack: called"); + if (itemStack == null){ player.sendMessage("serializeItemStack: NULL itemStack"); return "null";} + + player.sendMessage("serializeItemStack: nbt tag = " + itemStack.getTag().toString()); + + return itemStack.getTag().toString(); + } + + + + public static ItemStack deserializeItemStack(String itemStackString, Player player){ + + if (itemStackString.equals("null")){ + player.sendMessage("deserializeItemStack: NULL itemStackString"); + return null; + } + + NBTTagCompound nbtTagCompound = (NBTTagCompound) JsonList.func_150315_a(itemStackString);; + + + player.sendMessage(nbtTagCompound.toString()); + + return ItemStack.createStack(nbtTagCompound); + } + + + + public static String serializeInventory (IInventory invInventory, Player player){ + player.sendMessage("serializeInventory: invInventory.getSize() = " + invInventory.getSize()); + return IntStream.range(0, invInventory.getSize() - 1) + .mapToObj(s -> { + ItemStack i = invInventory.getItem(s); + player.sendMessage(Objects.isNull(i) ? "serializeInventory: NULL item" + s : "serializeInventory: item " + s + " found"); + return Objects.isNull(i) ? null : s + "#" + serializeItemStack(i, player); + }) + .filter(s -> s != null) + .collect(Collectors.joining(";")); + } + + + + public static void setInventoryFromSerialized (IInventory invInventory, String invString, Player player){ + if (invInventory == null){ player.sendMessage("setInventoryFromSerialized: invInventory NULL"); return;} + invInventory.l(); + if (invString == null){ player.sendMessage("setInventoryFromSerialized: NULL invString"); return;} + if (invString.isEmpty()){ player.sendMessage("setInventoryFromSerialized: EMPTY invString"); return;} + if (!invString.contains(";")){ player.sendMessage("setInventoryFromSerialized: DOESN'T CONTAIN ';' "); return;} + Arrays.asList(invString.split(";")) + .stream() + .forEach(s -> { + String[] e = s.split("#"); + invInventory.setItem(Integer.parseInt(e[0]), deserializeItemStack(e[1], player)); + player.sendMessage("set item " + e[0] + " to inventory"); + }); + } +} diff --git a/src/iie/WorldChangeListener.java b/src/iie/WorldChangeListener.java index d2654db..efedf86 100644 --- a/src/iie/WorldChangeListener.java +++ b/src/iie/WorldChangeListener.java @@ -42,22 +42,22 @@ public class WorldChangeListener implements Listener { //----------------------------------------------------------------------instantiations - //Serializer serializer = new Serializer(player); - + + //----------------------------------------------------------------------INVENTORY final IInventory inventory = ((CraftInventory)player.getInventory()).getInventory(); - config.set(pathFrom + "inventory", Serializer.serializeInventory(inventory)); + config.set(pathFrom + "inventory", SerializerDebug.serializeInventory(inventory, player)); plugin.saveConfig(); - Serializer.setInventoryFromSerialized(inventory, (String) config.get(pathTo + "inventory")); + SerializerDebug.setInventoryFromSerialized(inventory, (String) config.get(pathTo + "inventory"), player); //player.getInventory().clear(); //player.getInventory().setContents( - // Serializer.InventoryFromString(invString, invInventory.getType()) + // SerializerDebug.InventoryFromString(invString, invInventory.getType()) // .getContents() // ); @@ -66,15 +66,15 @@ public class WorldChangeListener implements Listener { final IInventory enderchest = ((CraftInventory)player.getEnderChest()).getInventory(); - config.set(pathFrom + "enderchest", Serializer.serializeInventory(enderchest)); + config.set(pathFrom + "enderchest", SerializerDebug.serializeInventory(enderchest, player)); plugin.saveConfig(); - Serializer.setInventoryFromSerialized(enderchest, (String) config.get(pathTo + "enderchest")); + SerializerDebug.setInventoryFromSerialized(enderchest, (String) config.get(pathTo + "enderchest"), player); //player.getEnderChest().clear(); //player.getEnderChest().setContents( - // Serializer.InventoryFromString(invString, invInventory.getType()) + // SerializerDebug.InventoryFromString(invString, invInventory.getType()) // .getContents() // );