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 eebb3da156e2d95efbe22d4afa470b977ce19f10..d30ad7cae1dfbb47ab1a6e3e2fcd6fb76163fe78 100644 --- a/src/main/java/org/bukkit/persistence/PersistentDataContainer.java +++ b/src/main/java/org/bukkit/persistence/PersistentDataContainer.java @@ -164,5 +164,38 @@ public interface PersistentDataContainer { * @throws NullPointerException if the key to look up is null */ boolean has(@NotNull NamespacedKey key); + + /** + * Serialize this {@link PersistentDataContainer} instance to a + * byte array. + * + * @return a binary represenation 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(byte @NotNull [] bytes) throws java.io.IOException { + this.readFromBytes(bytes, true); + } // Paper end }