2021-06-14 08:41:01 +02:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Aikar <aikar@aikar.co>
|
|
|
|
Date: Sat, 21 Jul 2018 08:25:40 -0400
|
|
|
|
Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#10277)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
Bukkit Changes:
9a80d38c SPIGOT-336, SPIGOT-3366, SPIGOT-5768, SPIGOT-6409, SPIGOT-6861, PR-722: Add EntityRemoveEvent
258086d9 SPIGOT-7417, PR-967: Add Sign#getTargetSide and Sign#getAllowedEditor
ffaba051 SPIGOT-7584: Add missing Tag.ITEMS_NON_FLAMMABLE_WOOD
CraftBukkit Changes:
98b6c1ac7 SPIGOT-7589 Fix NullPointerException when bans expire
a2736ddb0 SPIGOT-336, SPIGOT-3366, SPIGOT-5768, SPIGOT-6409, SPIGOT-6861, PR-1008: Add EntityRemoveEvent
5bf12cb89 SPIGOT-7565: Throw a more descriptive error message when a developer tries to spawn an entity from a CraftBukkit class
76d95fe7e SPIGOT-7417, PR-1343: Add Sign#getTargetSide and Sign#getAllowedEditor
Spigot Changes:
e9ec5485 Rebuild patches
f1b62e0c Rebuild patches
2024-02-23 14:37:33 +01:00
|
|
|
index 2a0e81a3ec0774ad98e2d74ac7672c167e28f38e..05b838f7008d5d031b18e161bbde7e72b8205b90 100644
|
2021-06-14 08:41:01 +02:00
|
|
|
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
|
|
|
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
2024-01-24 22:13:08 +01:00
|
|
|
@@ -1425,6 +1425,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
2021-06-14 08:41:01 +02:00
|
|
|
} else {
|
|
|
|
ChunkMap.TrackedEntity playerchunkmap_entitytracker = new ChunkMap.TrackedEntity(entity, i, j, entitytypes.trackDeltas());
|
|
|
|
|
|
|
|
+ entity.tracker = playerchunkmap_entitytracker; // Paper - Fast access to tracker
|
|
|
|
this.entityMap.put(entity.getId(), playerchunkmap_entitytracker);
|
|
|
|
playerchunkmap_entitytracker.updatePlayers(this.level.players());
|
|
|
|
if (entity instanceof ServerPlayer) {
|
2024-01-24 22:13:08 +01:00
|
|
|
@@ -1467,7 +1468,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
2021-06-14 08:41:01 +02:00
|
|
|
if (playerchunkmap_entitytracker1 != null) {
|
|
|
|
playerchunkmap_entitytracker1.broadcastRemoved();
|
|
|
|
}
|
|
|
|
-
|
|
|
|
+ entity.tracker = null; // Paper - We're no longer tracked
|
|
|
|
}
|
|
|
|
|
|
|
|
protected void tick() {
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#10277)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
Bukkit Changes:
9a80d38c SPIGOT-336, SPIGOT-3366, SPIGOT-5768, SPIGOT-6409, SPIGOT-6861, PR-722: Add EntityRemoveEvent
258086d9 SPIGOT-7417, PR-967: Add Sign#getTargetSide and Sign#getAllowedEditor
ffaba051 SPIGOT-7584: Add missing Tag.ITEMS_NON_FLAMMABLE_WOOD
CraftBukkit Changes:
98b6c1ac7 SPIGOT-7589 Fix NullPointerException when bans expire
a2736ddb0 SPIGOT-336, SPIGOT-3366, SPIGOT-5768, SPIGOT-6409, SPIGOT-6861, PR-1008: Add EntityRemoveEvent
5bf12cb89 SPIGOT-7565: Throw a more descriptive error message when a developer tries to spawn an entity from a CraftBukkit class
76d95fe7e SPIGOT-7417, PR-1343: Add Sign#getTargetSide and Sign#getAllowedEditor
Spigot Changes:
e9ec5485 Rebuild patches
f1b62e0c Rebuild patches
2024-02-23 14:37:33 +01:00
|
|
|
index 113dce44ce086272fe7f20a2007efadee142ff85..0811a2e87192b46c39f54c26ce0e56fc6e9d87e5 100644
|
2021-06-14 08:41:01 +02:00
|
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
2024-01-24 13:07:40 +01:00
|
|
|
@@ -1197,6 +1197,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
2021-06-14 08:41:01 +02:00
|
|
|
// CraftBukkit start
|
2021-11-23 16:04:41 +01:00
|
|
|
private boolean addEntity(Entity entity, CreatureSpawnEvent.SpawnReason spawnReason) {
|
2021-06-14 08:41:01 +02:00
|
|
|
org.spigotmc.AsyncCatcher.catchOp("entity add"); // Spigot
|
2024-01-21 17:39:05 +01:00
|
|
|
+ // Paper start - extra debug info
|
2021-06-14 08:41:01 +02:00
|
|
|
+ if (entity.valid) {
|
2024-01-21 17:39:05 +01:00
|
|
|
+ MinecraftServer.LOGGER.error("Attempted Double World add on {}", entity, new Throwable());
|
2021-06-14 08:41:01 +02:00
|
|
|
+ return true;
|
|
|
|
+ }
|
2024-01-21 17:39:05 +01:00
|
|
|
+ // Paper end - extra debug info
|
2021-06-14 08:41:01 +02:00
|
|
|
if (entity.isRemoved()) {
|
2021-11-23 16:04:41 +01:00
|
|
|
// WorldServer.LOGGER.warn("Tried to add entity {} but it was marked as removed already", EntityTypes.getKey(entity.getType())); // CraftBukkit
|
2021-06-14 08:41:01 +02:00
|
|
|
return false;
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
2024-04-12 21:14:06 +02:00
|
|
|
index 36f0a43cc301840406eab260b162295fe760f8bb..c46ad2013439f043145fb7fc67bbcd80728e3c16 100644
|
2021-06-14 08:41:01 +02:00
|
|
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#10277)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
Bukkit Changes:
9a80d38c SPIGOT-336, SPIGOT-3366, SPIGOT-5768, SPIGOT-6409, SPIGOT-6861, PR-722: Add EntityRemoveEvent
258086d9 SPIGOT-7417, PR-967: Add Sign#getTargetSide and Sign#getAllowedEditor
ffaba051 SPIGOT-7584: Add missing Tag.ITEMS_NON_FLAMMABLE_WOOD
CraftBukkit Changes:
98b6c1ac7 SPIGOT-7589 Fix NullPointerException when bans expire
a2736ddb0 SPIGOT-336, SPIGOT-3366, SPIGOT-5768, SPIGOT-6409, SPIGOT-6861, PR-1008: Add EntityRemoveEvent
5bf12cb89 SPIGOT-7565: Throw a more descriptive error message when a developer tries to spawn an entity from a CraftBukkit class
76d95fe7e SPIGOT-7417, PR-1343: Add Sign#getTargetSide and Sign#getAllowedEditor
Spigot Changes:
e9ec5485 Rebuild patches
f1b62e0c Rebuild patches
2024-02-23 14:37:33 +01:00
|
|
|
@@ -242,6 +242,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
2021-06-14 08:41:01 +02:00
|
|
|
public com.destroystokyo.paper.loottable.PaperLootableInventoryData lootableData; // Paper
|
|
|
|
private CraftEntity bukkitEntity;
|
|
|
|
|
2021-12-13 05:31:32 +01:00
|
|
|
+ public @org.jetbrains.annotations.Nullable net.minecraft.server.level.ChunkMap.TrackedEntity tracker; // Paper
|
2021-06-14 08:41:01 +02:00
|
|
|
public CraftEntity getBukkitEntity() {
|
|
|
|
if (this.bukkitEntity == null) {
|
|
|
|
this.bukkitEntity = CraftEntity.getEntity(this.level.getCraftServer(), this);
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/entity/EntityLookup.java b/src/main/java/net/minecraft/world/level/entity/EntityLookup.java
|
2024-04-12 21:14:06 +02:00
|
|
|
index 38df704dca30ef08f4d0831dc1cc48c6d6f71a4d..ed6aea7a38ef6e80c300ff9b012dcdbc390ad2c7 100644
|
2021-06-14 08:41:01 +02:00
|
|
|
--- a/src/main/java/net/minecraft/world/level/entity/EntityLookup.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/entity/EntityLookup.java
|
2024-04-12 21:14:06 +02:00
|
|
|
@@ -33,6 +33,14 @@ public class EntityLookup<T extends EntityAccess> {
|
2021-06-14 08:41:01 +02:00
|
|
|
UUID uUID = entity.getUUID();
|
|
|
|
if (this.byUuid.containsKey(uUID)) {
|
|
|
|
LOGGER.warn("Duplicate entity UUID {}: {}", uUID, entity);
|
|
|
|
+ // Paper start - extra debug info
|
2024-01-21 17:39:05 +01:00
|
|
|
+ if (entity instanceof net.minecraft.world.entity.Entity) {
|
|
|
|
+ final T old = this.byUuid.get(entity.getUUID());
|
|
|
|
+ if (old instanceof net.minecraft.world.entity.Entity oldCast && oldCast.getId() != entity.getId() && oldCast.valid) {
|
|
|
|
+ LOGGER.error("Overwrote an existing entity {} with {}", oldCast, entity);
|
2021-06-14 08:41:01 +02:00
|
|
|
+ }
|
|
|
|
+ }
|
2024-01-21 17:39:05 +01:00
|
|
|
+ // Paper end - extra debug info
|
2021-06-14 08:41:01 +02:00
|
|
|
} else {
|
|
|
|
this.byUuid.put(uUID, entity);
|
|
|
|
this.byId.put(entity.getId(), entity);
|