From 447f921cf1afbbddce7ed4cf68861223064a0f99 Mon Sep 17 00:00:00 2001 From: Bloepiloepi <59421074+Bloepiloepi@users.noreply.github.com> Date: Mon, 9 Aug 2021 16:37:46 +0200 Subject: [PATCH 1/2] Send only changed attributes --- .../minestom/server/entity/LivingEntity.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/LivingEntity.java b/src/main/java/net/minestom/server/entity/LivingEntity.java index 28657961c..34964bcd2 100644 --- a/src/main/java/net/minestom/server/entity/LivingEntity.java +++ b/src/main/java/net/minestom/server/entity/LivingEntity.java @@ -507,10 +507,11 @@ public class LivingEntity extends Entity implements EquipmentHandler { // connection null during Player initialization (due to #super call) self = playerConnection != null && playerConnection.getConnectionState() == ConnectionState.PLAY; } + EntityPropertiesPacket propertiesPacket = getPropertiesPacket(Collections.singleton(attributeInstance)); if (self) { - sendPacketToViewersAndSelf(getPropertiesPacket()); + sendPacketToViewersAndSelf(propertiesPacket); } else { - sendPacketToViewers(getPropertiesPacket()); + sendPacketToViewers(propertiesPacket); } } } @@ -632,8 +633,19 @@ public class LivingEntity extends Entity implements EquipmentHandler { */ @NotNull protected EntityPropertiesPacket getPropertiesPacket() { + return getPropertiesPacket(attributeModifiers.values()); + } + + /** + * Gets an {@link EntityPropertiesPacket} for this entity with the specified attribute values. + * + * @param attributes the attributes to include in the packet + * @return an {@link EntityPropertiesPacket} linked to this entity + */ + @NotNull + protected EntityPropertiesPacket getPropertiesPacket(@NotNull Collection attributes) { // Get all the attributes which should be sent to the client - final AttributeInstance[] instances = attributeModifiers.values().stream() + final AttributeInstance[] instances = attributes.stream() .filter(i -> i.getAttribute().isShared()) .toArray(AttributeInstance[]::new); From aaad91ff47cf40e5095c8a67a920675d919163f2 Mon Sep 17 00:00:00 2001 From: Bloepiloepi <59421074+Bloepiloepi@users.noreply.github.com> Date: Mon, 9 Aug 2021 16:41:01 +0200 Subject: [PATCH 2/2] Initialize every projectile in CrossbowMeta --- .../java/net/minestom/server/item/metadata/CrossbowMeta.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java b/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java index 5aa7d45f3..ec322db3a 100644 --- a/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java @@ -81,7 +81,9 @@ public class CrossbowMeta extends ItemMeta implements ItemMetaBuilder.Provider