Skip to content

Commit 763b32d

Browse files
authored
Fix framed maps looping through all players in world (PaperMC#11819)
1 parent 25cc3d8 commit 763b32d

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

paper-server/patches/features/0018-Fix-entity-tracker-desync-when-new-players-are-added.patch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ index 3dff97f13586be3b52bbe786852c185f6753a019..ff6503bf8eb88d1264c3d848a89d0255
6060
} else if (this.seenBy.remove(player.connection)) {
6161
this.serverEntity.removePairing(player);
6262
diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
63-
index 870b9efd445ddadb3725e88351555ad986ce7c72..a4da36060ca75968f5831adfc3f7117281649b7a 100644
63+
index db06f966077928419bfe469260f04d7dfda69f28..0fb253aa55a24b56b17f524b3261c5b75c7d7e59 100644
6464
--- a/net/minecraft/server/level/ServerEntity.java
6565
+++ b/net/minecraft/server/level/ServerEntity.java
6666
@@ -90,6 +90,13 @@ public class ServerEntity {
@@ -77,7 +77,7 @@ index 870b9efd445ddadb3725e88351555ad986ce7c72..a4da36060ca75968f5831adfc3f71172
7777
public void sendChanges() {
7878
// Paper start - optimise collisions
7979
if (((ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity)this.entity).moonrise$isHardColliding()) {
80-
@@ -130,7 +137,7 @@ public class ServerEntity {
80+
@@ -131,7 +138,7 @@ public class ServerEntity {
8181
this.sendDirtyEntityData();
8282
}
8383

@@ -86,7 +86,7 @@ index 870b9efd445ddadb3725e88351555ad986ce7c72..a4da36060ca75968f5831adfc3f71172
8686
byte b = Mth.packDegrees(this.entity.getYRot());
8787
byte b1 = Mth.packDegrees(this.entity.getXRot());
8888
boolean flag = Math.abs(b - this.lastSentYRot) >= 1 || Math.abs(b1 - this.lastSentXRot) >= 1;
89-
@@ -165,7 +172,7 @@ public class ServerEntity {
89+
@@ -166,7 +173,7 @@ public class ServerEntity {
9090
long l1 = this.positionCodec.encodeY(vec3);
9191
long l2 = this.positionCodec.encodeZ(vec3);
9292
boolean flag5 = l < -32768L || l > 32767L || l1 < -32768L || l1 > 32767L || l2 < -32768L || l2 > 32767L;
@@ -95,7 +95,7 @@ index 870b9efd445ddadb3725e88351555ad986ce7c72..a4da36060ca75968f5831adfc3f71172
9595
this.wasOnGround = this.entity.onGround();
9696
this.teleportDelay = 0;
9797
packet = ClientboundEntityPositionSyncPacket.of(this.entity);
98-
@@ -230,6 +237,7 @@ public class ServerEntity {
98+
@@ -231,6 +238,7 @@ public class ServerEntity {
9999
}
100100

101101
this.entity.hasImpulse = false;

paper-server/patches/sources/net/minecraft/server/level/ServerEntity.java.patch

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
removedPassengers(passengers, this.lastPassengers)
3030
.forEach(
3131
removedPassenger -> {
32-
@@ -102,10 +_,10 @@
32+
@@ -102,13 +_,14 @@
3333
this.lastPassengers = passengers;
3434
}
3535

@@ -42,7 +42,12 @@
4242
+ MapId mapId = itemFrame.cachedMapId; // Paper - Perf: Cache map ids on item frames
4343
MapItemSavedData savedData = MapItem.getSavedData(mapId, this.level);
4444
if (savedData != null) {
45-
for (ServerPlayer serverPlayer : this.level.players()) {
45+
- for (ServerPlayer serverPlayer : this.level.players()) {
46+
+ for (final net.minecraft.server.network.ServerPlayerConnection connection : this.trackedPlayers) { // Paper
47+
+ final ServerPlayer serverPlayer = connection.getPlayer(); // Paper
48+
savedData.tickCarriedBy(serverPlayer, item);
49+
Packet<?> updatePacket = savedData.getUpdatePacket(mapId, serverPlayer);
50+
if (updatePacket != null) {
4651
@@ -141,7 +_,13 @@
4752
} else {
4853
this.teleportDelay++;

0 commit comments

Comments
 (0)