From d6dc456f2aaf6ce1d96ddf16a10e716e3b5ccdca Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 21 Nov 2025 21:10:48 +0100 Subject: [PATCH] fancynpcs: Wrap packets in Npc#update method in bundle packet (1.12.9+) --- plugins/fancynpcs/VERSION | 2 +- .../oliver/fancynpcs/v1_21_11/Npc_1_21_11.java | 16 ++++++++++------ .../de/oliver/fancynpcs/v1_21_9/Npc_1_21_9.java | 16 ++++++++++------ 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/plugins/fancynpcs/VERSION b/plugins/fancynpcs/VERSION index 77b820e9..825b9a64 100644 --- a/plugins/fancynpcs/VERSION +++ b/plugins/fancynpcs/VERSION @@ -1 +1 @@ -2.8.0.311 \ No newline at end of file +2.8.0.312 \ No newline at end of file diff --git a/plugins/fancynpcs/implementation_1_21_11/src/main/java/de/oliver/fancynpcs/v1_21_11/Npc_1_21_11.java b/plugins/fancynpcs/implementation_1_21_11/src/main/java/de/oliver/fancynpcs/v1_21_11/Npc_1_21_11.java index d231677a..3c9998aa 100644 --- a/plugins/fancynpcs/implementation_1_21_11/src/main/java/de/oliver/fancynpcs/v1_21_11/Npc_1_21_11.java +++ b/plugins/fancynpcs/implementation_1_21_11/src/main/java/de/oliver/fancynpcs/v1_21_11/Npc_1_21_11.java @@ -231,6 +231,8 @@ public class Npc_1_21_11 extends Npc { ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle(); + List> packets = new ArrayList<>(); + PlayerTeam team = new PlayerTeam(new Scoreboard(), "npc-" + localName); team.getPlayers().clear(); team.getPlayers().add(npc instanceof ServerPlayer npcPlayer ? npcPlayer.getGameProfile().name() : npc.getStringUUID()); @@ -268,11 +270,11 @@ public class Npc_1_21_11 extends Npc { } ClientboundPlayerInfoUpdatePacket playerInfoPacket = new ClientboundPlayerInfoUpdatePacket(actions, getEntry(npcPlayer, serverPlayer)); - serverPlayer.connection.send(playerInfoPacket); + packets.add(playerInfoPacket); } boolean isTeamCreatedForPlayer = this.isTeamCreated.getOrDefault(player.getUniqueId(), false); - serverPlayer.connection.send(ClientboundSetPlayerTeamPacket.createAddOrModifyPacket(team, !isTeamCreatedForPlayer)); + packets.add(ClientboundSetPlayerTeamPacket.createAddOrModifyPacket(team, !isTeamCreatedForPlayer)); isTeamCreated.put(player.getUniqueId(), true); npc.setGlowingTag(data.isGlowing()); @@ -297,7 +299,7 @@ public class Npc_1_21_11 extends Npc { if (!equipmentList.isEmpty()) { ClientboundSetEquipmentPacket setEquipmentPacket = new ClientboundSetEquipmentPacket(npc.getId(), equipmentList); - serverPlayer.connection.send(setEquipmentPacket); + packets.add(setEquipmentPacket); } if (npc instanceof ServerPlayer) { @@ -320,7 +322,7 @@ public class Npc_1_21_11 extends Npc { } else { if (sittingVehicle != null) { ClientboundRemoveEntitiesPacket removeSittingVehiclePacket = new ClientboundRemoveEntitiesPacket(sittingVehicle.getId()); - serverPlayer.connection.send(removeSittingVehiclePacket); + packets.add(removeSittingVehiclePacket); } } @@ -333,9 +335,11 @@ public class Npc_1_21_11 extends Npc { attributeInstance.setBaseValue(data.getScale()); ClientboundUpdateAttributesPacket updateAttributesPacket = new ClientboundUpdateAttributesPacket(npc.getId(), List.of(attributeInstance)); - serverPlayer.connection.send(updateAttributesPacket); - + packets.add(updateAttributesPacket); } + + ClientboundBundlePacket bundlePacket = new ClientboundBundlePacket(packets); + serverPlayer.connection.send(bundlePacket); } @Override diff --git a/plugins/fancynpcs/implementation_1_21_9/src/main/java/de/oliver/fancynpcs/v1_21_9/Npc_1_21_9.java b/plugins/fancynpcs/implementation_1_21_9/src/main/java/de/oliver/fancynpcs/v1_21_9/Npc_1_21_9.java index 8ce1de62..2a81be14 100644 --- a/plugins/fancynpcs/implementation_1_21_9/src/main/java/de/oliver/fancynpcs/v1_21_9/Npc_1_21_9.java +++ b/plugins/fancynpcs/implementation_1_21_9/src/main/java/de/oliver/fancynpcs/v1_21_9/Npc_1_21_9.java @@ -231,6 +231,8 @@ public class Npc_1_21_9 extends Npc { ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle(); + List> packets = new ArrayList<>(); + PlayerTeam team = new PlayerTeam(new Scoreboard(), "npc-" + localName); team.getPlayers().clear(); team.getPlayers().add(npc instanceof ServerPlayer npcPlayer ? npcPlayer.getGameProfile().name() : npc.getStringUUID()); @@ -268,11 +270,11 @@ public class Npc_1_21_9 extends Npc { } ClientboundPlayerInfoUpdatePacket playerInfoPacket = new ClientboundPlayerInfoUpdatePacket(actions, getEntry(npcPlayer, serverPlayer)); - serverPlayer.connection.send(playerInfoPacket); + packets.add(playerInfoPacket); } boolean isTeamCreatedForPlayer = this.isTeamCreated.getOrDefault(player.getUniqueId(), false); - serverPlayer.connection.send(ClientboundSetPlayerTeamPacket.createAddOrModifyPacket(team, !isTeamCreatedForPlayer)); + packets.add(ClientboundSetPlayerTeamPacket.createAddOrModifyPacket(team, !isTeamCreatedForPlayer)); isTeamCreated.put(player.getUniqueId(), true); npc.setGlowingTag(data.isGlowing()); @@ -297,7 +299,7 @@ public class Npc_1_21_9 extends Npc { if (!equipmentList.isEmpty()) { ClientboundSetEquipmentPacket setEquipmentPacket = new ClientboundSetEquipmentPacket(npc.getId(), equipmentList); - serverPlayer.connection.send(setEquipmentPacket); + packets.add(setEquipmentPacket); } if (npc instanceof ServerPlayer) { @@ -320,7 +322,7 @@ public class Npc_1_21_9 extends Npc { } else { if (sittingVehicle != null) { ClientboundRemoveEntitiesPacket removeSittingVehiclePacket = new ClientboundRemoveEntitiesPacket(sittingVehicle.getId()); - serverPlayer.connection.send(removeSittingVehiclePacket); + packets.add(removeSittingVehiclePacket); } } @@ -333,9 +335,11 @@ public class Npc_1_21_9 extends Npc { attributeInstance.setBaseValue(data.getScale()); ClientboundUpdateAttributesPacket updateAttributesPacket = new ClientboundUpdateAttributesPacket(npc.getId(), List.of(attributeInstance)); - serverPlayer.connection.send(updateAttributesPacket); - + packets.add(updateAttributesPacket); } + + ClientboundBundlePacket bundlePacket = new ClientboundBundlePacket(packets); + serverPlayer.connection.send(bundlePacket); } @Override