Fix framed maps looping through all players in world (#11819)

This commit is contained in:
Warrior
2024-12-25 12:31:03 +01:00
committed by GitHub
parent 25cc3d8578
commit 763b32d825
2 changed files with 11 additions and 6 deletions

View File

@@ -29,7 +29,7 @@
removedPassengers(passengers, this.lastPassengers)
.forEach(
removedPassenger -> {
@@ -102,10 +_,10 @@
@@ -102,13 +_,14 @@
this.lastPassengers = passengers;
}
@@ -42,7 +42,12 @@
+ MapId mapId = itemFrame.cachedMapId; // Paper - Perf: Cache map ids on item frames
MapItemSavedData savedData = MapItem.getSavedData(mapId, this.level);
if (savedData != null) {
for (ServerPlayer serverPlayer : this.level.players()) {
- for (ServerPlayer serverPlayer : this.level.players()) {
+ for (final net.minecraft.server.network.ServerPlayerConnection connection : this.trackedPlayers) { // Paper
+ final ServerPlayer serverPlayer = connection.getPlayer(); // Paper
savedData.tickCarriedBy(serverPlayer, item);
Packet<?> updatePacket = savedData.getUpdatePacket(mapId, serverPlayer);
if (updatePacket != null) {
@@ -141,7 +_,13 @@
} else {
this.teleportDelay++;