Skip to content

Commit

Permalink
Remove entity may be called even when the entity hasn't been added
Browse files Browse the repository at this point in the history
  • Loading branch information
PureGero committed Jul 27, 2024
1 parent 4f18867 commit ee94c3f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
12 changes: 6 additions & 6 deletions patches/server/0024-TrackedEntity.patch
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ index 81d6ae082047fdda6f2271a830e700fa90b9d0ac..47ce846fca69623bebea70ffc6b35d32
+ }
}
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index a35a609036a20ff18ea2e6b22a113fe6e7fe3c06..eafb5522d02e91b76a8cd30981fd18d6bdbdb93c 100644
index a35a609036a20ff18ea2e6b22a113fe6e7fe3c06..3b77035237ec9267f48f403021db75c7ffd51be4 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1113,6 +1113,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
Expand All @@ -152,14 +152,14 @@ index a35a609036a20ff18ea2e6b22a113fe6e7fe3c06..eafb5522d02e91b76a8cd30981fd18d6
playerchunkmap_entitytracker.updatePlayers(entity.getPlayersInTrackRange()); // Paper - don't search all players
if (entity instanceof ServerPlayer) {
ServerPlayer entityplayer = (ServerPlayer) entity;
@@ -1147,6 +1148,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
}

+ this.level.getChunkSource().tickingRegions.removeTrackedEntity(entity); // ShreddedPaper
@@ -1150,6 +1151,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
ChunkMap.TrackedEntity playerchunkmap_entitytracker1 = (ChunkMap.TrackedEntity) this.entityMap.remove(entity.getId());

if (playerchunkmap_entitytracker1 != null) {
+ this.level.getChunkSource().tickingRegions.removeTrackedEntity(entity); // ShreddedPaper - only remove if it actually existed
playerchunkmap_entitytracker1.broadcastRemoved();
}
entity.tracker = null; // Paper - We're no longer tracked
@@ -1157,6 +1159,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider

// Paper start - optimised tracker
Expand Down
8 changes: 4 additions & 4 deletions patches/server/0025-entityMap-thread-safety.patch
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ index 0000000000000000000000000000000000000000..28bb91a25b7e473f4e2af48561e6b108
+ }
+}
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index eafb5522d02e91b76a8cd30981fd18d6bdbdb93c..47285b5d6f4b02a8179bbd9dca47eeeeda2f15d4 100644
index 3b77035237ec9267f48f403021db75c7ffd51be4..20c4b5645c5cc9a2a41b93bce6b907fc4bd200fe 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -13,6 +13,7 @@ import com.mojang.datafixers.DataFixer;
Expand Down Expand Up @@ -356,15 +356,15 @@ index eafb5522d02e91b76a8cd30981fd18d6bdbdb93c..47285b5d6f4b02a8179bbd9dca47eeee

while (objectiterator.hasNext()) {
ChunkMap.TrackedEntity playerchunkmap_entitytracker = (ChunkMap.TrackedEntity) objectiterator.next();
@@ -1149,7 +1153,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1148,7 +1152,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
}

this.level.getChunkSource().tickingRegions.removeTrackedEntity(entity); // ShreddedPaper
- ChunkMap.TrackedEntity playerchunkmap_entitytracker1 = (ChunkMap.TrackedEntity) this.entityMap.remove(entity.getId());
+ ChunkMap.TrackedEntity playerchunkmap_entitytracker1 = (ChunkMap.TrackedEntity) this.entityConcurrentMap.remove(entity.getId()); // ShreddedPaper - use entityConcurrentMap

if (playerchunkmap_entitytracker1 != null) {
playerchunkmap_entitytracker1.broadcastRemoved();
this.level.getChunkSource().tickingRegions.removeTrackedEntity(entity); // ShreddedPaper - only remove if it actually existed
@@ -1162,7 +1166,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
if (true) return; // ShreddedPaper - handle ourselves
//this.level.timings.tracker1.startTiming(); // Purpur
Expand Down

0 comments on commit ee94c3f

Please sign in to comment.