diff --git a/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java b/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java index 3f3694f..e040606 100644 --- a/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java +++ b/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java @@ -42,7 +42,7 @@ public class VirtualInventory implements ConfigurationSerializable { * @param stackSizes An array of maximum allowed stack sizes for each slot in the {@link VirtualInventory}. */ public VirtualInventory(@Nullable UUID uuid, int size, @Nullable ItemStack[] items, int[] stackSizes) { - this.uuid = uuid; + this.uuid = uuid == null ? new UUID(0L, 0L) : uuid; this.size = size; this.items = items == null ? new ItemStack[size] : items; if (stackSizes == null) { @@ -99,6 +99,10 @@ public class VirtualInventory implements ConfigurationSerializable { return result; } + public byte[] toByteArray() { + return VirtualInventoryManager.getInstance().serializeInventory(this); + } + /** * Gets a set of {@link Window}s that display this {@link VirtualInventory}. * @@ -189,6 +193,7 @@ public class VirtualInventory implements ConfigurationSerializable { * * @return The {@link UUID} */ + @NotNull public UUID getUuid() { return uuid; } diff --git a/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java b/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java index 1b26e42..ebc2693 100644 --- a/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java +++ b/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java @@ -120,6 +120,12 @@ public class VirtualInventoryManager { return new File(SAVE_DIR, virtualInventory.getUuid() + ".vi2"); } + public byte[] serializeInventory(VirtualInventory vi) { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + serializeInventory(vi, out); + return out.toByteArray(); + } + public void serializeInventory(VirtualInventory vi, OutputStream out) { try { DataOutputStream dos = new DataOutputStream(out); @@ -146,6 +152,10 @@ public class VirtualInventoryManager { } + public VirtualInventory deserializeInventory(byte[] bytes) { + return deserializeInventory(new ByteArrayInputStream(bytes)); + } + public VirtualInventory deserializeInventory(InputStream in) { try { DataInputStream din = new DataInputStream(in);