From 67905be24db31734813285557976bcfc3a1136f8 Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Wed, 27 Jan 2021 14:24:20 +1100 Subject: [PATCH] SPIGOT-3789: Can't Remove Entity Equipment in Same Tick Spawned without using Consumer By: md_5 --- paper-server/nms-patches/EntityLiving.patch | 18 ++++++++++++++++++ .../nms-patches/EntityTrackerEntry.patch | 7 +++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/paper-server/nms-patches/EntityLiving.patch b/paper-server/nms-patches/EntityLiving.patch index aa645b0765..fd6a84ef2a 100644 --- a/paper-server/nms-patches/EntityLiving.patch +++ b/paper-server/nms-patches/EntityLiving.patch @@ -800,6 +800,24 @@ this.setFlag(7, false); } } else { +@@ -1957,7 +2377,7 @@ + } + } + +- this.p(); ++ this.updateEquipment(); // PAIL rename + if (this.ticksLived % 20 == 0) { + this.getCombatTracker().g(); + } +@@ -2058,7 +2478,7 @@ + + } + +- private void p() { ++ public void updateEquipment() { // PAIL private->public; updateEquipment + Map map = this.q(); + + if (map != null) { @@ -2321,6 +2741,7 @@ } diff --git a/paper-server/nms-patches/EntityTrackerEntry.patch b/paper-server/nms-patches/EntityTrackerEntry.patch index 7434c607da..c867d70d21 100644 --- a/paper-server/nms-patches/EntityTrackerEntry.patch +++ b/paper-server/nms-patches/EntityTrackerEntry.patch @@ -145,8 +145,11 @@ if (!collection.isEmpty()) { consumer.accept(new PacketPlayOutUpdateAttributes(this.tracker.getId(), collection)); } -@@ -238,6 +290,11 @@ +@@ -236,8 +288,14 @@ + if (!list.isEmpty()) { + consumer.accept(new PacketPlayOutEntityEquipment(this.tracker.getId(), list)); } ++ ((EntityLiving) this.tracker).updateEquipment(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending } + // CraftBukkit start - Fix for nonsensical head yaw @@ -157,7 +160,7 @@ if (this.tracker instanceof EntityLiving) { EntityLiving entityliving = (EntityLiving) this.tracker; Iterator iterator = entityliving.getEffects().iterator(); -@@ -278,6 +335,11 @@ +@@ -278,6 +336,11 @@ Set set = ((EntityLiving) this.tracker).getAttributeMap().getAttributes(); if (!set.isEmpty()) {