From aa776c1b151b0dfc287ad542a42ab90518b7539c Mon Sep 17 00:00:00 2001 From: Omer Uddin Date: Wed, 2 Oct 2019 20:20:40 -0400 Subject: [PATCH] Don't save canTick of armor stands if it has not been set by API (#2608) --- ...Allow-disabling-armour-stand-ticking.patch | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/Spigot-Server-Patches/0284-Allow-disabling-armour-stand-ticking.patch b/Spigot-Server-Patches/0284-Allow-disabling-armour-stand-ticking.patch index a02c8d171..34d828afe 100644 --- a/Spigot-Server-Patches/0284-Allow-disabling-armour-stand-ticking.patch +++ b/Spigot-Server-Patches/0284-Allow-disabling-armour-stand-ticking.patch @@ -1,4 +1,4 @@ -From 88841b295d4d86d407a9c4f9dd69b4841c7e58cb Mon Sep 17 00:00:00 2001 +From 90e7aab7fb05f9d57e27ba10668f10d43c9d47ad Mon Sep 17 00:00:00 2001 From: kashike Date: Wed, 15 Aug 2018 01:26:09 -0700 Subject: [PATCH] Allow disabling armour stand ticking @@ -20,22 +20,23 @@ index 09607fb44..5832c3e86 100644 + } } diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java -index c04dee058..aa9e69bce 100644 +index c04dee058..529e4904e 100644 --- a/src/main/java/net/minecraft/server/EntityArmorStand.java +++ b/src/main/java/net/minecraft/server/EntityArmorStand.java -@@ -44,6 +44,11 @@ public class EntityArmorStand extends EntityLiving { +@@ -44,6 +44,12 @@ public class EntityArmorStand extends EntityLiving { public Vector3f leftLegPose; public Vector3f rightLegPose; public boolean canMove = true; // Paper + // Paper start - Allow ArmorStands not to tick + public boolean canTick = true; ++ public boolean canTickSetByAPI = false; + private boolean noTickPoseDirty = false; + private boolean noTickEquipmentDirty = false; + // Paper end public EntityArmorStand(EntityTypes entitytypes, World world) { super(entitytypes, world); -@@ -55,6 +60,7 @@ public class EntityArmorStand extends EntityLiving { +@@ -55,6 +61,7 @@ public class EntityArmorStand extends EntityLiving { this.rightArmPose = EntityArmorStand.bx; this.leftLegPose = EntityArmorStand.by; this.rightLegPose = EntityArmorStand.bz; @@ -43,7 +44,7 @@ index c04dee058..aa9e69bce 100644 this.K = 0.0F; } -@@ -135,6 +141,7 @@ public class EntityArmorStand extends EntityLiving { +@@ -135,6 +142,7 @@ public class EntityArmorStand extends EntityLiving { this.armorItems.set(enumitemslot.b(), itemstack); } @@ -51,27 +52,28 @@ index c04dee058..aa9e69bce 100644 } @Override -@@ -215,6 +222,7 @@ public class EntityArmorStand extends EntityLiving { +@@ -215,6 +223,7 @@ public class EntityArmorStand extends EntityLiving { } nbttagcompound.set("Pose", this.B()); -+ nbttagcompound.setBoolean("Paper.CanTick", this.canTick); // Paper - persist no tick setting ++ if (this.canTickSetByAPI) nbttagcompound.setBoolean("Paper.CanTickOverride", this.canTick); // Paper - persist no tick setting } @Override -@@ -246,6 +254,11 @@ public class EntityArmorStand extends EntityLiving { +@@ -246,6 +255,12 @@ public class EntityArmorStand extends EntityLiving { this.setBasePlate(nbttagcompound.getBoolean("NoBasePlate")); this.setMarker(nbttagcompound.getBoolean("Marker")); this.noclip = !this.A(); + // Paper start - persist no tick -+ if (nbttagcompound.hasKey("Paper.CanTick")) { -+ this.canTick = nbttagcompound.getBoolean("Paper.CanTick"); ++ if (nbttagcompound.hasKey("Paper.CanTickOverride")) { ++ this.canTick = nbttagcompound.getBoolean("Paper.CanTickOverride"); ++ this.canTickSetByAPI = true; + } + // Paper end NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("Pose"); this.g(nbttagcompound1); -@@ -589,7 +602,29 @@ public class EntityArmorStand extends EntityLiving { +@@ -589,7 +604,29 @@ public class EntityArmorStand extends EntityLiving { @Override public void tick() { @@ -101,7 +103,7 @@ index c04dee058..aa9e69bce 100644 Vector3f vector3f = (Vector3f) this.datawatcher.get(EntityArmorStand.c); if (!this.headPose.equals(vector3f)) { -@@ -712,31 +747,37 @@ public class EntityArmorStand extends EntityLiving { +@@ -712,31 +749,37 @@ public class EntityArmorStand extends EntityLiving { public void setHeadPose(Vector3f vector3f) { this.headPose = vector3f; this.datawatcher.set(EntityArmorStand.c, vector3f); @@ -256,10 +258,10 @@ index e1972f793..dbf42f882 100644 float f2 = MathHelper.g(f - this.aK); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java -index 9f5c3b92e..07ce93f17 100644 +index 9f5c3b92e..73714d71a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java -@@ -297,5 +297,15 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand { +@@ -297,5 +297,16 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand { public boolean isSlotDisabled(org.bukkit.inventory.EquipmentSlot slot) { return getHandle().isSlotDisabled(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } @@ -272,9 +274,10 @@ index 9f5c3b92e..07ce93f17 100644 + @Override + public void setCanTick(final boolean tick) { + this.getHandle().canTick = tick; ++ this.getHandle().canTickSetByAPI = true; + } // Paper end } -- -2.23.0 +2.22.0