PaperMC/patches/server/0729-Added-byte-array-serialization-deserialization-for-P.patch
Spottedleaf da9d110d5b Remove chunk save reattempt patch
This patch does not appear to be doing anything useful, and may
hide errors.

Currently, the save logic does not run through this path either
so it did not do anything.

Additionally, properly implement support for handling
RegionFileSizeException in Moonrise.
2024-11-28 18:27:59 -08:00

39 lines
1.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Nex <nex@bits.team>
Date: Thu, 24 Feb 2022 16:28:07 +0100
Subject: [PATCH] Added byte array serialization/deserialization for
PersistentDataContainers
diff --git a/src/main/java/org/bukkit/craftbukkit/persistence/CraftPersistentDataContainer.java b/src/main/java/org/bukkit/craftbukkit/persistence/CraftPersistentDataContainer.java
index 984e988a47aa55a3fd92198e379d0f92f511daef..5a4e7e7150b7c137b077e0b393f17ed35b5aec34 100644
--- a/src/main/java/org/bukkit/craftbukkit/persistence/CraftPersistentDataContainer.java
+++ b/src/main/java/org/bukkit/craftbukkit/persistence/CraftPersistentDataContainer.java
@@ -184,4 +184,27 @@ public class CraftPersistentDataContainer implements PersistentDataContainer {
this.customDataTags.clear();
}
// Paper end
+
+ // Paper start - byte array serialization
+ @Override
+ public byte[] serializeToBytes() throws java.io.IOException {
+ final net.minecraft.nbt.CompoundTag root = this.toTagCompound();
+ final java.io.ByteArrayOutputStream byteArrayOutput = new java.io.ByteArrayOutputStream();
+ try (final java.io.DataOutputStream dataOutput = new java.io.DataOutputStream(byteArrayOutput)) {
+ net.minecraft.nbt.NbtIo.write(root, dataOutput);
+ return byteArrayOutput.toByteArray();
+ }
+ }
+
+ @Override
+ public void readFromBytes(final byte[] bytes, final boolean clear) throws java.io.IOException {
+ if (clear) {
+ this.clear();
+ }
+ try (final java.io.DataInputStream dataInput = new java.io.DataInputStream(new java.io.ByteArrayInputStream(bytes))) {
+ final net.minecraft.nbt.CompoundTag compound = net.minecraft.nbt.NbtIo.read(dataInput);
+ this.putAll(compound);
+ }
+ }
+ // Paper end - byte array serialization
}