mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 01:17:42 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: 8fa15382b [Auto] Updated Upstream (CraftBukkit) 732b2f6b5 [CI-SKIP] [Auto] Rebuild Patches c5a39ffa2 Add BlockPreDispenseEvent (#5075) 8aeb4c9c3 Correctly skip pathfinder ticks for inactive entities (#5085) 0e420049c Fix console spam when removing chests in water 56b7935bb Add PlayerChangeBeaconEffectEvent 2eda45c34 added Wither API 97d0c571b Added Vanilla Entity Tags fccac282a fix NPE in getDisplayNameComponent 24e140372 Configurable max leash distance Tuinity Changes: d3ee22224 Merge dev/lighting
89 lines
4.7 KiB
Diff
89 lines
4.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Mariell Hoversholm <proximyst@proximyst.com>
|
|
Date: Sat, 9 Jan 2021 22:22:59 +0100
|
|
Subject: [PATCH] Movement options for armour stands
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
index cb4856e3bbb25e1077f5b4832f359549d57acd7e..41844f30a2a98eb14559b3ab0885ae738b54520c 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -1360,7 +1360,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
return this.isInWater() || flag;
|
|
}
|
|
|
|
- void aL() {
|
|
+ void aL() { // Purpur - diff on change; this is `updateInWaterStateAndDoWaterCurrentPushing()V`
|
|
if (this.getVehicle() instanceof EntityBoat) {
|
|
this.inWater = false;
|
|
} else if (this.a((Tag) TagsFluid.WATER, 0.014D)) {
|
|
diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java
|
|
index e6de89e7f57c3c130dedb8407cd4cd577d394b9a..91df44d2e4f09fb612ae7bcb6c6a3dbb99aaba41 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityArmorStand.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityArmorStand.java
|
|
@@ -52,10 +52,12 @@ public class EntityArmorStand extends EntityLiving {
|
|
private boolean noTickPoseDirty = false;
|
|
private boolean noTickEquipmentDirty = false;
|
|
// Paper end
|
|
+ public boolean canMovementTick = true; // Purpur
|
|
|
|
public EntityArmorStand(EntityTypes<? extends EntityArmorStand> entitytypes, World world) {
|
|
super(entitytypes, world);
|
|
if (world != null) this.canTick = world.paperConfig.armorStandTick; // Paper - armour stand ticking
|
|
+ if (world != null) this.canMovementTick = world.purpurConfig.armorstandMovement; // Purpur
|
|
this.handItems = NonNullList.a(2, ItemStack.b);
|
|
this.armorItems = NonNullList.a(4, ItemStack.b);
|
|
this.headPose = EntityArmorStand.bj;
|
|
@@ -897,4 +899,18 @@ public class EntityArmorStand extends EntityLiving {
|
|
return true;
|
|
}
|
|
// Paper end
|
|
+
|
|
+ // Purpur start
|
|
+ @Override
|
|
+ void aL() {
|
|
+ if (this.world.purpurConfig.armorstandWaterMovement &&
|
|
+ (this.world.purpurConfig.armorstandWaterFence || !(world.getType(getBlockLocation().down()).getBlock() instanceof BlockFence)))
|
|
+ super.aL();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void movementTick() {
|
|
+ if (this.canMovementTick && this.canMove) super.movementTick();
|
|
+ }
|
|
+ // Purpur end
|
|
}
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
index f102e3c3a1a166e54274b71c2f9f8067c44c0029..90bd46e3e2b96ecedc6557896e1f5d95dbbd698b 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -111,10 +111,16 @@ public class PurpurWorldConfig {
|
|
public boolean armorstandSetNameVisible = false;
|
|
public boolean armorstandFixNametags = false;
|
|
public float armorstandStepHeight = 0.0F;
|
|
+ public boolean armorstandMovement = true;
|
|
+ public boolean armorstandWaterMovement = true;
|
|
+ public boolean armorstandWaterFence = true;
|
|
private void armorstandSettings() {
|
|
armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible);
|
|
armorstandFixNametags = getBoolean("gameplay-mechanics.armorstand.fix-nametags", armorstandFixNametags);
|
|
armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight);
|
|
+ armorstandMovement = getBoolean("gameplay-mechanics.armorstand.can-movement-tick", armorstandMovement);
|
|
+ armorstandWaterMovement = getBoolean("gameplay-mechanics.armorstand.can-move-in-water", armorstandWaterMovement);
|
|
+ armorstandWaterFence = getBoolean("gameplay-mechanics.armorstand.can-move-in-water-over-fence", armorstandWaterFence);
|
|
}
|
|
|
|
public boolean controllableMinecarts = false;
|