Packet Caching wasn't working on player add due to the new packet bundling feature

This commit is contained in:
Cryptite
2023-05-02 11:10:59 -05:00
parent e4f61bf6ed
commit 5329f509c9

View File

@@ -101,7 +101,7 @@ index fa14ab3d8117e9d357380d21d3c6a2cd1df7c04c..e5462d8d3f89c93c7c691a4759860be1
this.isSaving = false; 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 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 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/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 { @@ -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 - ((LivingEntity) this.entity).detectEquipmentUpdates(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending
+ if (this.entity instanceof LivingEntity livingEntity) { + if (this.entity instanceof LivingEntity livingEntity) {
+ livingEntity.sendEquipment(entityplayer); // Slice + livingEntity.sendEquipment(consumer, entityplayer); // Slice
} }
// CraftBukkit start - Fix for nonsensical head yaw // CraftBukkit start - Fix for nonsensical head yaw
@@ -173,7 +173,7 @@ index 5813349d484cf40c5b75de6e55dff95286285934..e24b0871819add31e00e1e3d782fda31
// Paper start - helper function for configurable spawn radius // 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 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 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/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 { @@ -261,6 +261,8 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -246,7 +246,7 @@ index 72739d5949314b242869fd5fef3b5f0c076434d0..5879e1cc44bee6fd4b3fef2577ed516c
+ // Slice end + // Slice end
+ +
+ // Slice start + // Slice start
+ public void sendEquipment(ServerPlayer p) { + public void sendEquipment(java.util.function.Consumer<net.minecraft.network.protocol.Packet<net.minecraft.network.protocol.game.ClientGamePacketListener>> consumer, ServerPlayer p) {
+ org.bukkit.event.player.PlayerReceiveEquipmentEvent event = new org.bukkit.event.player.PlayerReceiveEquipmentEvent(p.getBukkitEntity(), getBukkitEntity()); + org.bukkit.event.player.PlayerReceiveEquipmentEvent event = new org.bukkit.event.player.PlayerReceiveEquipmentEvent(p.getBukkitEntity(), getBukkitEntity());
+ level.getCraftServer().getPluginManager().callEvent(event); + level.getCraftServer().getPluginManager().callEvent(event);
+ +
@@ -287,7 +287,7 @@ index 72739d5949314b242869fd5fef3b5f0c076434d0..5879e1cc44bee6fd4b3fef2577ed516c
+ if (tag != null) { + if (tag != null) {
+ cachedEquipmentMap.put(tag, equipmentPacket); + cachedEquipmentMap.put(tag, equipmentPacket);
+ } + }
+ p.connection.send(equipmentPacket); + consumer.accept(equipmentPacket);
+ } + }
+ +
+ detectEquipmentUpdates(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending + detectEquipmentUpdates(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending
@@ -309,10 +309,10 @@ index defe31a5d3aa89a3d18b94f2ff005594e38754b3..637a86e74d633901fdd2f2f1ba6aa4ed
File file = this.getDataFile(id); File file = this.getDataFile(id);
if (file.exists()) { 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 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 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/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); getHandle().knockback(strength, directionX, directionZ);
}; };
// Paper end // Paper end
@@ -321,7 +321,8 @@ index d43859f8aa7beed82dd3a146bb1086982cd0cda7..502aec23d70f7b995eaf9df61dc50896
+ @Override + @Override
+ public void sendEquipment(Player p) { + public void sendEquipment(Player p) {
+ if (entity instanceof net.minecraft.world.entity.LivingEntity livingEntity) { + 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 + // Slice end