Expose the Entity Counter to allow plugins to use valid and non-conflicting Entity Ids

This commit is contained in:
MeFisto94 2020-08-28 01:44:21 +02:00 committed by MiniDigger
parent 654b792caf
commit 6c512a082d
2 changed files with 62 additions and 0 deletions

View file

@ -0,0 +1,25 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MeFisto94 <MeFisto94@users.noreply.github.com>
Date: Fri, 28 Aug 2020 01:41:31 +0200
Subject: [PATCH] Expose the Entity Counter to allow plugins to use valid and
non-conflicting Entity Ids
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index ac43afbf6230a481ab8cffbb3bc91b716316c00d..931ffa38faab86445a5d63364a47cb653ca3d4ed 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -116,5 +116,13 @@ public interface UnsafeValues {
* @return the translation key
*/
String getTranslationKey(org.bukkit.entity.EntityType type);
+
+ /**
+ * Creates and returns the next EntityId available.
+ * <p>
+ * Use this when sending custom packets, so that there are no collisions on the client or server.
+ */
+ public int nextEntityId();
+
// Paper end
}

View file

@ -0,0 +1,37 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MeFisto94 <MeFisto94@users.noreply.github.com>
Date: Fri, 28 Aug 2020 01:41:26 +0200
Subject: [PATCH] Expose the Entity Counter to allow plugins to use valid and
non-conflicting Entity Ids
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 5e1978d1c96dede07ead967c1e85a352348e7777..ebdbbeb1b55b428dde3ab1c9691cb153c6c2fe76 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -3374,4 +3374,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
void accept(Entity entity, double d0, double d1, double d2);
}
+
+ // Paper start
+ public static int nextEntityId() {
+ return entityCount.incrementAndGet();
+ }
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index 0b2bc20d1074757ab69eb6715d9b2d0d2065b2db..3ebaa9463e365831de37d8fa3cc191693f5b856f 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -410,6 +410,10 @@ public final class CraftMagicNumbers implements UnsafeValues {
return net.minecraft.server.EntityTypes.getByName(type.getName()).map(net.minecraft.server.EntityTypes::getDescriptionId).orElse(null);
}
+ public int nextEntityId() {
+ return net.minecraft.server.Entity.nextEntityId();
+ }
+
// Paper end
/**