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;
}
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<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());
+ 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