mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-06 18:50:51 +01:00
9f6ea786bc
This patch appears to be causing some issues with 1.14.3 entity AI
59 lines
No EOL
2.9 KiB
Diff
59 lines
No EOL
2.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <1254957+zachbr@users.noreply.github.com>
|
|
Date: Tue, 16 May 2017 21:29:08 -0500
|
|
Subject: [PATCH] Add option to make parrots stay on shoulders despite movement
|
|
|
|
Makes parrots not fall off whenever the player changes height, or touches water, or gets hit by a passing leaf.
|
|
Instead, switches the behavior so that players have to sneak to make the birds leave.
|
|
|
|
I suspect Mojang may switch to this behavior before full release.
|
|
|
|
To be converted into a Paper-API event at some point in the future?
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index 58fe5a8c4d..a341214952 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 {
|
|
maxCollisionsPerEntity = getInt( "max-entity-collisions", this.spigotConfig.getInt("max-entity-collisions", 8) );
|
|
log( "Max Entity Collisions: " + maxCollisionsPerEntity );
|
|
}
|
|
+
|
|
+ public boolean parrotsHangOnBetter;
|
|
+ private void parrotsHangOnBetter() {
|
|
+ parrotsHangOnBetter = getBoolean("parrots-are-unaffected-by-player-movement", false);
|
|
+ log("Parrots are unaffected by player movement: " + parrotsHangOnBetter);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
|
|
index 1a1b1dd1e8..0974135c65 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityHuman.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
|
|
@@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving {
|
|
this.j(this.getShoulderEntityLeft());
|
|
this.j(this.getShoulderEntityRight());
|
|
if (!this.world.isClientSide && (this.fallDistance > 0.5F || this.isInWater() || this.isPassenger()) || this.abilities.isFlying) {
|
|
- this.releaseShoulderEntities();
|
|
+ if (!this.world.paperConfig.parrotsHangOnBetter) this.releaseShoulderEntities(); // Paper - Hang on!
|
|
}
|
|
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
index ac8ab28a35..175f685d27 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
|
switch (packetplayinentityaction.c()) {
|
|
case START_SNEAKING:
|
|
this.player.setSneaking(true);
|
|
+
|
|
+ // Paper start - Hang on!
|
|
+ if (this.player.world.paperConfig.parrotsHangOnBetter) {
|
|
+ this.player.releaseShoulderEntities();
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
break;
|
|
case STOP_SNEAKING:
|
|
this.player.setSneaking(false);
|
|
--
|