Little more progress

Keep getting interrupted so not as much as I'd like :(
This commit is contained in:
Zach Brown
2019-12-11 18:03:31 -06:00
parent c9ef3d1cfc
commit dd751b9191
40 changed files with 263 additions and 617 deletions

View File

@@ -5,12 +5,12 @@ Subject: [PATCH] Allow disabling armour stand ticking
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
index 721685704..9ee27f638 100644
index 0a99b8fe9..42d14fac2 100644
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
@@ -0,0 +0,0 @@ public class PaperWorldConfig {
log("Bed Search Radius: " + bedSearchRadius);
}
private void armorStandEntityLookups() {
armorStandEntityLookups = getBoolean("armor-stands-do-collision-entity-lookups", true);
}
+
+ public boolean armorStandTick = true;
@@ -20,7 +20,7 @@ index 721685704..9ee27f638 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java
index d8497fa5e..85fc48371 100644
index eb6cf3a86..b51662ee9 100644
--- a/src/main/java/net/minecraft/server/EntityArmorStand.java
+++ b/src/main/java/net/minecraft/server/EntityArmorStand.java
@@ -0,0 +0,0 @@ public class EntityArmorStand extends EntityLiving {
@@ -37,11 +37,11 @@ index d8497fa5e..85fc48371 100644
public EntityArmorStand(EntityTypes<? extends EntityArmorStand> entitytypes, World world) {
super(entitytypes, world);
@@ -0,0 +0,0 @@ public class EntityArmorStand extends EntityLiving {
this.rightArmPose = EntityArmorStand.bx;
this.leftLegPose = EntityArmorStand.by;
this.rightLegPose = EntityArmorStand.bz;
this.rightArmPose = EntityArmorStand.bu;
this.leftLegPose = EntityArmorStand.bv;
this.rightLegPose = EntityArmorStand.bw;
+ if (world != null) this.canTick = world.paperConfig.armorStandTick; // Paper - armour stand ticking
this.K = 0.0F;
this.H = 0.0F;
}
@@ -0,0 +0,0 @@ public class EntityArmorStand extends EntityLiving {
@@ -136,13 +136,13 @@ index d8497fa5e..85fc48371 100644
public void setRightLegPose(Vector3f vector3f) {
this.rightLegPose = vector3f;
this.datawatcher.set(EntityArmorStand.bs, vector3f);
this.datawatcher.set(EntityArmorStand.bp, vector3f);
+ this.noTickPoseDirty = true; // Paper - Allow updates when not ticking
}
public Vector3f r() {
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index e1972f793..dbf42f882 100644
index 470cbddeb..91b6d6878 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
@@ -150,18 +150,18 @@ index e1972f793..dbf42f882 100644
}
- EnumItemSlot[] aenumitemslot = EnumItemSlot.values();
- int j = aenumitemslot.length;
- int k = aenumitemslot.length;
-
- for (int k = 0; k < j; ++k) {
- EnumItemSlot enumitemslot = aenumitemslot[k];
- for (int l = 0; l < k; ++l) {
- EnumItemSlot enumitemslot = aenumitemslot[l];
- ItemStack itemstack;
-
- switch (enumitemslot.a()) {
- case HAND:
- itemstack = (ItemStack) this.bw.get(enumitemslot.b());
- itemstack = (ItemStack) this.bu.get(enumitemslot.b());
- break;
- case ARMOR:
- itemstack = (ItemStack) this.bx.get(enumitemslot.b());
- itemstack = (ItemStack) this.bv.get(enumitemslot.b());
- break;
- default:
- continue;
@@ -188,10 +188,10 @@ index e1972f793..dbf42f882 100644
-
- switch (enumitemslot.a()) {
- case HAND:
- this.bw.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack());
- this.bu.set(enumitemslot.b(), itemstack1.cloneItemStack());
- break;
- case ARMOR:
- this.bx.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack());
- this.bv.set(enumitemslot.b(), itemstack1.cloneItemStack());
- }
- }
- }
@@ -206,18 +206,17 @@ index e1972f793..dbf42f882 100644
+ // Paper start - split into own method from above
+ public void updateEntityEquipment() {
+ EnumItemSlot[] aenumitemslot = EnumItemSlot.values();
+ int j = aenumitemslot.length;
+
+ for (int k = 0; k < j; ++k) {
+ EnumItemSlot enumitemslot = aenumitemslot[k];
+ int k = aenumitemslot.length;
+ for (int l = 0; l < k; ++l) {
+ EnumItemSlot enumitemslot = aenumitemslot[l];
+ ItemStack itemstack;
+
+ switch (enumitemslot.a()) {
+ case HAND:
+ itemstack = (ItemStack) this.bw.get(enumitemslot.b());
+ itemstack = (ItemStack) this.bu.get(enumitemslot.b());
+ break;
+ case ARMOR:
+ itemstack = (ItemStack) this.bx.get(enumitemslot.b());
+ itemstack = (ItemStack) this.bv.get(enumitemslot.b());
+ break;
+ default:
+ continue;
@@ -244,21 +243,20 @@ index e1972f793..dbf42f882 100644
+
+ switch (enumitemslot.a()) {
+ case HAND:
+ this.bw.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack());
+ this.bu.set(enumitemslot.b(), itemstack1.cloneItemStack());
+ break;
+ case ARMOR:
+ this.bx.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack());
+ this.bv.set(enumitemslot.b(), itemstack1.cloneItemStack());
+ }
+ }
+ }
+ }
+ // Paper end
+
protected float e(float f, float f1) {
float f2 = MathHelper.g(f - this.aK);
protected float f(float f, float f1) {
float f2 = MathHelper.g(f - this.aI);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
index 9f5c3b92e..73714d71a 100644
index d1d689e5d..ac105270d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
@@ -0,0 +0,0 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand {