93 lines
4.3 KiB
Diff
93 lines
4.3 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 dd56c8e041116ef3602a9f89c998c8208ab89b51..9197be4019ddbe16e09c781a74809d15f569e0f3 100644
|
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
@@ -287,6 +287,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 1f7594e22f0f08ae110ef9b42f15119358aa5723..577a6cc50cf41dc3e590edb955a372c4c2a83fe2 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
@@ -169,6 +169,31 @@ import org.bukkit.plugin.PluginManager;
|
|
|
|
public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, CommandSource, ScoreHolder, ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity, ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity { // Paper - rewrite chunk system // Paper - optimise entity tracker
|
|
|
|
+ @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 2cde808bfa797256409879505ba205a71f381981..1bde22a5ec330980ee697830cb2c6a7441394722 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
|
@@ -80,6 +80,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;
|