geforkt von Mirrors/Paper
b62dfa0bf9
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 39ce5d3a SPIGOT-4399: ItemMeta.equals broken with AttributeModifiers CraftBukkit Changes:1cf8b5dc
SPIGOT-4400: Populators running on existing chunks116cb9a1
SPIGOT-4399: Add attribute modifier equality test5ee1c18a
SPIGOT-4398: Set ASM7_EXPERIMENTAL flag
62 Zeilen
2.9 KiB
Diff
62 Zeilen
2.9 KiB
Diff
From cf0ef274d7d00e56af3759ab9f201b501f5c6f06 Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <zach.brown@destroystokyo.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 02d99aec43..3507997fc3 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -361,4 +361,10 @@ 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 ad9e7f7b54..0f00eecead 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityHuman.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
|
|
@@ -469,7 +469,7 @@ 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 fb0f77f1b3..450f045603 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
@@ -1759,6 +1759,13 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable {
|
|
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:
|
|
--
|
|
2.19.0
|
|
|