diff --git a/patches/server/Hide-unnecessary-itemmeta-from-clients.patch b/patches/server/Hide-unnecessary-itemmeta-from-clients.patch index 6d8bb93ff9..70cc16f07d 100644 --- a/patches/server/Hide-unnecessary-itemmeta-from-clients.patch +++ b/patches/server/Hide-unnecessary-itemmeta-from-clients.patch @@ -81,7 +81,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + if (tag.get("Enchantments") instanceof ListTag enchantmentsTag && !enchantmentsTag.isEmpty()) { + // The client still renders items with the enchantment glow if the enchantments tag contains at least one (empty) child. + ListTag enchantments = new ListTag(); -+ enchantments.add(new CompoundTag()); ++ CompoundTag fakeEnchantment = new CompoundTag(); ++ // Soul speed boots generate client side particles. ++ if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SOUL_SPEED, itemStack) > 0) { ++ fakeEnchantment.putString("id", org.bukkit.enchantments.Enchantment.SOUL_SPEED.getKey().asString()); ++ fakeEnchantment.putInt("lvl", 1); ++ } ++ enchantments.add(fakeEnchantment); + tag.put("Enchantments", enchantments); + } + tag.remove("AttributeModifiers"); @@ -91,6 +97,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + // Paper end + - // Paper end - prevent oversized data + // Paper start - prevent oversized data public static ItemStack sanitizeItemStack(final ItemStack itemStack, final boolean copyItemStack) { if (itemStack.isEmpty() || !itemStack.hasTag()) { diff --git a/patches/server/Prevent-sending-oversized-item-data-in-equipment-and.patch b/patches/server/Prevent-sending-oversized-item-data-in-equipment-and.patch index d73ac30f37..140e2c0be2 100644 --- a/patches/server/Prevent-sending-oversized-item-data-in-equipment-and.patch +++ b/patches/server/Prevent-sending-oversized-item-data-in-equipment-and.patch @@ -53,7 +53,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ((ServerLevel) this.level).getChunkSource().broadcast(this, new ClientboundSetEquipmentPacket(this.getId(), list)); } -+ // Paper end - prevent oversized data ++ // Paper start - prevent oversized data + public static ItemStack sanitizeItemStack(final ItemStack itemStack, final boolean copyItemStack) { + if (itemStack.isEmpty() || !itemStack.hasTag()) { + return itemStack;