From a530d9d70d9482a2ff9e14dd1319d4840b63ad8a Mon Sep 17 00:00:00 2001
From: Mariell Hoversholm <proximyst@proximyst.com>
Date: Sun, 19 Apr 2020 12:26:07 +0200
Subject: [PATCH] Allow sleeping players to float

This change lets players who are in their bed have a position which is above
ground for a longer period of time. This is because of the server not setting
their position to the ground/exit location when entering the bed, resulting in
the server believing they're still in the air.
---
 .../Allow-sleeping-players-to-float.patch     | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100644 Spigot-Server-Patches/Allow-sleeping-players-to-float.patch

diff --git a/Spigot-Server-Patches/Allow-sleeping-players-to-float.patch b/Spigot-Server-Patches/Allow-sleeping-players-to-float.patch
new file mode 100644
index 0000000000..b70dc13000
--- /dev/null
+++ b/Spigot-Server-Patches/Allow-sleeping-players-to-float.patch
@@ -0,0 +1,24 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Mariell Hoversholm <proximyst@proximyst.com>
+Date: Sun, 19 Apr 2020 12:25:20 +0200
+Subject: [PATCH] Allow sleeping players to float
+
+This change lets players who are in their bed have a position which is above
+ground for a longer period of time. This is because of the server not setting
+their position to the ground/exit location when entering the bed, resulting in
+the server believing they're still in the air.
+
+diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
+index 7929fcc800..8f93a7758c 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 {
+         this.player.setLocation(this.l, this.m, this.n, this.player.yaw, this.player.pitch);
+         ++this.e;
+         this.processedMovePackets = this.receivedMovePackets;
+-        if (this.B) {
++        if (this.B && !this.player.isSleeping()) { // Paper - #3176 Allow sleeping players to float
+             if (++this.C > 80) {
+                 PlayerConnection.LOGGER.warn("{} was kicked for floating too long!", this.player.getDisplayName().getString());
+                 this.disconnect(com.destroystokyo.paper.PaperConfig.flyingKickPlayerMessage); // Paper - use configurable kick message
+--
\ No newline at end of file