mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: 12dec20 Bump paerweight to 1.1.7 e33ed89 Get short commit ref using a more proper method 7d6147d Remove now unneeded patch due to paperweight 1.1.7 e72fa41 Update task dependency for includeMappings so the new task isn't skipped 0ad5526 Trim whitspace off of git hash (oops) Tuinity Changes: e878ba9 Update paper 2bd2849 Bring back fix codec spam patch
81 lines
3.4 KiB
Diff
81 lines
3.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Mariell Hoversholm <proximyst@proximyst.com>
|
|
Date: Sat, 9 Jan 2021 21:21:27 +0100
|
|
Subject: [PATCH] Add unsafe Entity serialization API
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
|
|
index ef3011d74ce9acf02d0ee857033816854134ec0e..b2502aaab690b1414a1adffdf64e5a5456feb99c 100644
|
|
--- a/src/main/java/org/bukkit/UnsafeValues.java
|
|
+++ b/src/main/java/org/bukkit/UnsafeValues.java
|
|
@@ -194,4 +194,28 @@ public interface UnsafeValues {
|
|
*/
|
|
int getProtocolVersion();
|
|
// Paper end
|
|
+
|
|
+ // Purpur start
|
|
+
|
|
+ /**
|
|
+ * Serialize entity to byte array
|
|
+ *
|
|
+ * @param entity entity to serialize
|
|
+ * @return serialized entity
|
|
+ */
|
|
+ byte[] serializeEntity(org.bukkit.entity.Entity entity);
|
|
+
|
|
+ /**
|
|
+ * Deserialize an entity from byte array
|
|
+ * <p>
|
|
+ * The entity is not automatically spawned in the world. You will have to spawn
|
|
+ * the entity yourself with {@link org.bukkit.entity.Entity#spawnAt(Location)} or
|
|
+ * {@link org.bukkit.entity.Entity#spawnAt(Location, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason)}
|
|
+ *
|
|
+ * @param data serialized entity
|
|
+ * @param world world entity belongs in
|
|
+ * @return deserialized entity
|
|
+ */
|
|
+ org.bukkit.entity.Entity deserializeEntity(byte[] data, org.bukkit.World world);
|
|
+ // Purpur end
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
|
|
index 6a16e4dcebaf6c899859039774383125dd03e59a..0b8357f012e3bafcd3b5fb4043392b42cf5cfc2a 100644
|
|
--- a/src/main/java/org/bukkit/entity/Entity.java
|
|
+++ b/src/main/java/org/bukkit/entity/Entity.java
|
|
@@ -800,5 +800,24 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
|
|
* @return True if ridable in water
|
|
*/
|
|
boolean isRidableInWater();
|
|
+
|
|
+ /**
|
|
+ * Spawn this entity in the world at the given {@link Location} with the default spawn reason.
|
|
+ *
|
|
+ * @param location The location at which to spawn the entity.
|
|
+ * @return Whether the entity was successfully spawned.
|
|
+ */
|
|
+ default boolean spawnAt(@NotNull Location location) {
|
|
+ return spawnAt(location, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Spawn this entity in the world at the given {@link Location} with the reason given.
|
|
+ *
|
|
+ * @param location The location at which to spawn the entity.
|
|
+ * @param spawnReason The reason for which the entity was spawned.
|
|
+ * @return Whether the entity was successfully spawned.
|
|
+ */
|
|
+ boolean spawnAt(@NotNull Location location, @NotNull org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason spawnReason);
|
|
// Purpur end
|
|
}
|