Don't save canTick of armor stands if it has not been set by API (#2608)
This commit is contained in:
parent
bfc807c27a
commit
aa776c1b15
1 changed files with 18 additions and 15 deletions
|
@ -1,4 +1,4 @@
|
||||||
From 88841b295d4d86d407a9c4f9dd69b4841c7e58cb Mon Sep 17 00:00:00 2001
|
From 90e7aab7fb05f9d57e27ba10668f10d43c9d47ad Mon Sep 17 00:00:00 2001
|
||||||
From: kashike <kashike@vq.lc>
|
From: kashike <kashike@vq.lc>
|
||||||
Date: Wed, 15 Aug 2018 01:26:09 -0700
|
Date: Wed, 15 Aug 2018 01:26:09 -0700
|
||||||
Subject: [PATCH] Allow disabling armour stand ticking
|
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
|
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
|
--- a/src/main/java/net/minecraft/server/EntityArmorStand.java
|
||||||
+++ b/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 leftLegPose;
|
||||||
public Vector3f rightLegPose;
|
public Vector3f rightLegPose;
|
||||||
public boolean canMove = true; // Paper
|
public boolean canMove = true; // Paper
|
||||||
+ // Paper start - Allow ArmorStands not to tick
|
+ // Paper start - Allow ArmorStands not to tick
|
||||||
+ public boolean canTick = true;
|
+ public boolean canTick = true;
|
||||||
|
+ public boolean canTickSetByAPI = false;
|
||||||
+ private boolean noTickPoseDirty = false;
|
+ private boolean noTickPoseDirty = false;
|
||||||
+ private boolean noTickEquipmentDirty = false;
|
+ private boolean noTickEquipmentDirty = false;
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
|
|
||||||
public EntityArmorStand(EntityTypes<? extends EntityArmorStand> entitytypes, World world) {
|
public EntityArmorStand(EntityTypes<? extends EntityArmorStand> entitytypes, World world) {
|
||||||
super(entitytypes, 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.rightArmPose = EntityArmorStand.bx;
|
||||||
this.leftLegPose = EntityArmorStand.by;
|
this.leftLegPose = EntityArmorStand.by;
|
||||||
this.rightLegPose = EntityArmorStand.bz;
|
this.rightLegPose = EntityArmorStand.bz;
|
||||||
|
@ -43,7 +44,7 @@ index c04dee058..aa9e69bce 100644
|
||||||
this.K = 0.0F;
|
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);
|
this.armorItems.set(enumitemslot.b(), itemstack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,27 +52,28 @@ index c04dee058..aa9e69bce 100644
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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.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
|
@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.setBasePlate(nbttagcompound.getBoolean("NoBasePlate"));
|
||||||
this.setMarker(nbttagcompound.getBoolean("Marker"));
|
this.setMarker(nbttagcompound.getBoolean("Marker"));
|
||||||
this.noclip = !this.A();
|
this.noclip = !this.A();
|
||||||
+ // Paper start - persist no tick
|
+ // Paper start - persist no tick
|
||||||
+ if (nbttagcompound.hasKey("Paper.CanTick")) {
|
+ if (nbttagcompound.hasKey("Paper.CanTickOverride")) {
|
||||||
+ this.canTick = nbttagcompound.getBoolean("Paper.CanTick");
|
+ this.canTick = nbttagcompound.getBoolean("Paper.CanTickOverride");
|
||||||
|
+ this.canTickSetByAPI = true;
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("Pose");
|
NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("Pose");
|
||||||
|
|
||||||
this.g(nbttagcompound1);
|
this.g(nbttagcompound1);
|
||||||
@@ -589,7 +602,29 @@ public class EntityArmorStand extends EntityLiving {
|
@@ -589,7 +604,29 @@ public class EntityArmorStand extends EntityLiving {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick() {
|
||||||
|
@ -101,7 +103,7 @@ index c04dee058..aa9e69bce 100644
|
||||||
Vector3f vector3f = (Vector3f) this.datawatcher.get(EntityArmorStand.c);
|
Vector3f vector3f = (Vector3f) this.datawatcher.get(EntityArmorStand.c);
|
||||||
|
|
||||||
if (!this.headPose.equals(vector3f)) {
|
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) {
|
public void setHeadPose(Vector3f vector3f) {
|
||||||
this.headPose = vector3f;
|
this.headPose = vector3f;
|
||||||
this.datawatcher.set(EntityArmorStand.c, vector3f);
|
this.datawatcher.set(EntityArmorStand.c, vector3f);
|
||||||
|
@ -256,10 +258,10 @@ index e1972f793..dbf42f882 100644
|
||||||
float f2 = MathHelper.g(f - this.aK);
|
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
|
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
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
|
||||||
+++ b/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) {
|
public boolean isSlotDisabled(org.bukkit.inventory.EquipmentSlot slot) {
|
||||||
return getHandle().isSlotDisabled(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot));
|
return getHandle().isSlotDisabled(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot));
|
||||||
}
|
}
|
||||||
|
@ -272,9 +274,10 @@ index 9f5c3b92e..07ce93f17 100644
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void setCanTick(final boolean tick) {
|
+ public void setCanTick(final boolean tick) {
|
||||||
+ this.getHandle().canTick = tick;
|
+ this.getHandle().canTick = tick;
|
||||||
|
+ this.getHandle().canTickSetByAPI = true;
|
||||||
+ }
|
+ }
|
||||||
// Paper end
|
// Paper end
|
||||||
}
|
}
|
||||||
--
|
--
|
||||||
2.23.0
|
2.22.0
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue