From 5329f509c9fbaba764e7d87df541dd1c5c992558 Mon Sep 17 00:00:00 2001 From: Cryptite Date: Tue, 2 May 2023 11:10:59 -0500 Subject: [PATCH] Packet Caching wasn't working on player add due to the new packet bundling feature --- .../server/0021-Equipment-Packet-Caching.patch | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/patches/server/0021-Equipment-Packet-Caching.patch b/patches/server/0021-Equipment-Packet-Caching.patch index 9ccdac55f..c079dcc3f 100644 --- a/patches/server/0021-Equipment-Packet-Caching.patch +++ b/patches/server/0021-Equipment-Packet-Caching.patch @@ -101,7 +101,7 @@ index fa14ab3d8117e9d357380d21d3c6a2cd1df7c04c..e5462d8d3f89c93c7c691a4759860be1 this.isSaving = false; } diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index b7fd8e70413c38923d0719aff803449e392383ac..de3fdb0ff2abc7c42cd7387e5cb0987d5e5f12a3 100644 +index b7fd8e70413c38923d0719aff803449e392383ac..d86836541f5eaa654d3dc452fe7cc15eafff4dfa 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -334,27 +334,8 @@ public class ServerEntity { @@ -130,7 +130,7 @@ index b7fd8e70413c38923d0719aff803449e392383ac..de3fdb0ff2abc7c42cd7387e5cb0987d - } - ((LivingEntity) this.entity).detectEquipmentUpdates(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending + if (this.entity instanceof LivingEntity livingEntity) { -+ livingEntity.sendEquipment(entityplayer); // Slice ++ livingEntity.sendEquipment(consumer, entityplayer); // Slice } // CraftBukkit start - Fix for nonsensical head yaw @@ -173,7 +173,7 @@ index 5813349d484cf40c5b75de6e55dff95286285934..e24b0871819add31e00e1e3d782fda31 // Paper start - helper function for configurable spawn radius diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 72739d5949314b242869fd5fef3b5f0c076434d0..5879e1cc44bee6fd4b3fef2577ed516ce8e3c917 100644 +index 72739d5949314b242869fd5fef3b5f0c076434d0..997ba564bb45484aa67e72cdabf7d09313843e64 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -261,6 +261,8 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -246,7 +246,7 @@ index 72739d5949314b242869fd5fef3b5f0c076434d0..5879e1cc44bee6fd4b3fef2577ed516c + // Slice end + + // Slice start -+ public void sendEquipment(ServerPlayer p) { ++ public void sendEquipment(java.util.function.Consumer> consumer, ServerPlayer p) { + org.bukkit.event.player.PlayerReceiveEquipmentEvent event = new org.bukkit.event.player.PlayerReceiveEquipmentEvent(p.getBukkitEntity(), getBukkitEntity()); + level.getCraftServer().getPluginManager().callEvent(event); + @@ -287,7 +287,7 @@ index 72739d5949314b242869fd5fef3b5f0c076434d0..5879e1cc44bee6fd4b3fef2577ed516c + if (tag != null) { + cachedEquipmentMap.put(tag, equipmentPacket); + } -+ p.connection.send(equipmentPacket); ++ consumer.accept(equipmentPacket); + } + + detectEquipmentUpdates(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending @@ -309,10 +309,10 @@ index defe31a5d3aa89a3d18b94f2ff005594e38754b3..637a86e74d633901fdd2f2f1ba6aa4ed File file = this.getDataFile(id); if (file.exists()) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index d43859f8aa7beed82dd3a146bb1086982cd0cda7..502aec23d70f7b995eaf9df61dc50896cf8e43c2 100644 +index d43859f8aa7beed82dd3a146bb1086982cd0cda7..7d063ab5a136eebeb84b395dcb7b731dadc53e88 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1071,4 +1071,13 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1071,4 +1071,14 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end @@ -321,7 +321,8 @@ index d43859f8aa7beed82dd3a146bb1086982cd0cda7..502aec23d70f7b995eaf9df61dc50896 + @Override + public void sendEquipment(Player p) { + if (entity instanceof net.minecraft.world.entity.LivingEntity livingEntity) { -+ livingEntity.sendEquipment(((CraftPlayer) p).getHandle()); ++ net.minecraft.server.level.ServerPlayer serverPlayer = ((CraftPlayer) p).getHandle(); ++ livingEntity.sendEquipment(packet -> serverPlayer.connection.send(packet), serverPlayer); + } + } + // Slice end