Files
ParchmentMC/patches/server/0025-Entity-Data-Storage.patch
Blast-MC 4c2ae38401 1.20.6
2024-05-19 16:31:52 -04:00

93 lines
4.1 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Blast-MC <cjblanton2@gmail.com>
Date: Mon, 15 Jan 2024 16:39:10 -0500
Subject: [PATCH] Entity Data Storage
diff --git a/src/main/java/gg/projecteden/parchment/entity/EntityDataServices.java b/src/main/java/gg/projecteden/parchment/entity/EntityDataServices.java
new file mode 100644
index 0000000000000000000000000000000000000000..30f8fd154136d05267e8737ff04a0be45b23a35d
--- /dev/null
+++ b/src/main/java/gg/projecteden/parchment/entity/EntityDataServices.java
@@ -0,0 +1,16 @@
+package gg.projecteden.parchment.entity;
+
+public class EntityDataServices {
+
+ private static boolean initialized;
+
+ public static void init() {
+ if (initialized) {
+ throw new RuntimeException("EntityData Services already initialized");
+ }
+ initialized = true;
+
+ // Initialize Services Here
+ }
+
+}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 2eb9c584cc77237f1c82d880a51a3f8b51008d73..dd0fa065e97f0ae0bc6a2f66392d6393e4c04b06 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -281,6 +281,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
return false;
}
+ gg.projecteden.parchment.entity.EntityDataServices.init();
+
// CraftBukkit start
// this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up
this.server.loadPlugins();
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 25ea45a528612d1a2a2d77293b3802f473a52f38..169fdd2e21a192bfc834785a2e9eae2adde442c3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -164,6 +164,31 @@ import org.bukkit.plugin.PluginManager;
public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, CommandSource, ScoreHolder {
+ @javax.annotation.Nullable
+ private gg.projecteden.parchment.entity.EntityData storedEntityData;
+
+ /**
+ * Retrieves the stored EntityData for this entity
+ * @return The currently stored EntityData
+ */
+ public gg.projecteden.parchment.entity.EntityData getStoredEntityData() {
+ if (this.storedEntityData == null) {
+ this.storedEntityData = gg.projecteden.parchment.entity.EntityData.create(this.getBukkitEntity());
+ }
+ return this.storedEntityData;
+ }
+
+ /**
+ * Clears the currently stored EntityData for this entity
+ * @return the previously stored EntityData
+ */
+ public @javax.annotation.Nullable gg.projecteden.parchment.entity.EntityData clearStoredEntityData() {
+ gg.projecteden.parchment.entity.EntityData data = this.storedEntityData;
+ this.storedEntityData = null;
+
+ return data;
+ }
+
// CraftBukkit start
private static final int CURRENT_LEVEL = 2;
public boolean preserveMotion = true; // Paper - Fix Entity Teleportation and cancel velocity if teleported; keep initial motion on first setPositionRotation
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index a2d336ceb52b63db5c03432ee7bc94dc6a742b82..a7a95547fc3f1614c7e6efdd0dcd24ba6af27fd8 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -78,6 +78,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
};
// Paper end - Folia schedulers
+ public gg.projecteden.parchment.entity.EntityData getStoredEntityData() {
+ return this.entity.getStoredEntityData();
+ }
+
public CraftEntity(final CraftServer server, final Entity entity) {
this.server = server;
this.entity = entity;