From 8684d2ad7e1aa84221d8d2567d5f6d7095f89d29 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 --- .../persistence/PersistentDataContainer.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/paper-api/src/main/java/org/bukkit/persistence/PersistentDataContainer.java b/paper-api/src/main/java/org/bukkit/persistence/PersistentDataContainer.java index 18fc4f1c71..decf3b1949 100644 --- a/paper-api/src/main/java/org/bukkit/persistence/PersistentDataContainer.java +++ b/paper-api/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 }