From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nex Date: Thu, 24 Feb 2022 16:28:08 +0100 Subject: [PATCH] Added byte array serialization/deserialization for PersistentDataContainers diff --git a/src/main/java/org/bukkit/persistence/PersistentDataContainer.java b/src/main/java/org/bukkit/persistence/PersistentDataContainer.java index 6c156faf0148da13a44dabba7a807f68b3d50a36..da59e75267f43581bec6df73dda9f889347617d4 100644 --- a/src/main/java/org/bukkit/persistence/PersistentDataContainer.java +++ b/src/main/java/org/bukkit/persistence/PersistentDataContainer.java @@ -184,4 +184,39 @@ public interface PersistentDataContainer { */ @NotNull PersistentDataAdapterContext getAdapterContext(); + + // Paper start - byte array serialization + /** + * Serialize this {@link PersistentDataContainer} instance to a + * byte array. + * + * @return a binary representation of this container + * @throws java.io.IOException if we fail to write this container to a byte array + */ + byte @NotNull [] serializeToBytes() throws java.io.IOException; + + /** + * Read values from a serialised byte array into this + * {@link PersistentDataContainer} instance. + * + * @param bytes the byte array to read from + * @param clear if true, this {@link PersistentDataContainer} instance + * will be cleared before reading + * @throws java.io.IOException if the byte array has an invalid format + */ + void readFromBytes(byte @NotNull [] bytes, boolean clear) throws java.io.IOException; + + /** + * Read values from a serialised byte array into this + * {@link PersistentDataContainer} instance. + * This method has the same effect as + * PersistentDataContainer#readFromBytes(bytes, true) + * + * @param bytes the byte array to read from + * @throws java.io.IOException if the byte array has an invalid format + */ + default void readFromBytes(final byte @NotNull [] bytes) throws java.io.IOException { + this.readFromBytes(bytes, true); + } + // Paper end - byte array serialization }