From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Blast-MC 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;