From ab1a1deb6b2e2e8dff8d537482f61f41a9a0db6c Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Sat, 16 Oct 2021 19:39:14 +1100 Subject: [PATCH] SPIGOT-5988: Bedspawn doesn't clear after dying when spawn is blocked By: DerFrZocker --- .../minecraft/server/players/PlayerList.patch | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/paper-server/nms-patches/net/minecraft/server/players/PlayerList.patch b/paper-server/nms-patches/net/minecraft/server/players/PlayerList.patch index 523d087f6f..d40808cd98 100644 --- a/paper-server/nms-patches/net/minecraft/server/players/PlayerList.patch +++ b/paper-server/nms-patches/net/minecraft/server/players/PlayerList.patch @@ -435,7 +435,7 @@ entityplayer1.connection = entityplayer.connection; entityplayer1.copyFrom(entityplayer, flag); -@@ -495,49 +680,110 @@ +@@ -495,49 +680,111 @@ boolean flag2 = false; @@ -482,6 +482,7 @@ + location = new Location(worldserver1.getWorld(), vec3d.x, vec3d.y, vec3d.z, f1, 0.0F); + } else if (blockposition != null) { + entityplayer1.connection.sendPacket(new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.NO_RESPAWN_BLOCK_AVAILABLE, 0.0F)); ++ entityplayer1.setRespawnPosition(null, null, 0f, false, false); // CraftBukkit - SPIGOT-5988: Clear respawn location when obstructed + } + } + @@ -570,7 +571,7 @@ return entityplayer1; } -@@ -550,7 +796,18 @@ +@@ -550,7 +797,18 @@ public void tick() { if (++this.sendAllPlayerInfoIn > 600) { @@ -590,7 +591,7 @@ this.sendAllPlayerInfoIn = 0; } -@@ -567,6 +824,25 @@ +@@ -567,6 +825,25 @@ } @@ -616,7 +617,7 @@ public void a(Packet packet, ResourceKey resourcekey) { Iterator iterator = this.players.iterator(); -@@ -669,6 +945,7 @@ +@@ -669,6 +946,7 @@ entityplayer.connection.sendPacket(new PacketPlayOutEntityStatus(entityplayer, b0)); } @@ -624,7 +625,7 @@ this.server.getCommandDispatcher().a(entityplayer); } -@@ -701,6 +978,12 @@ +@@ -701,6 +979,12 @@ for (int i = 0; i < this.players.size(); ++i) { EntityPlayer entityplayer = (EntityPlayer) this.players.get(i); @@ -637,7 +638,7 @@ if (entityplayer != entityhuman && entityplayer.level.getDimensionKey() == resourcekey) { double d4 = d0 - entityplayer.locX(); double d5 = d1 - entityplayer.locY(); -@@ -740,23 +1023,34 @@ +@@ -740,23 +1024,34 @@ public void reloadWhitelist() {} public void a(EntityPlayer entityplayer, WorldServer worldserver) { @@ -677,7 +678,7 @@ } public int getPlayerCount() { -@@ -807,12 +1101,22 @@ +@@ -807,12 +1102,22 @@ } public void shutdown() { @@ -702,7 +703,7 @@ public void sendMessage(IChatBaseComponent ichatbasecomponent, ChatMessageType chatmessagetype, UUID uuid) { this.server.sendMessage(ichatbasecomponent, uuid); Iterator iterator = this.players.iterator(); -@@ -840,16 +1144,23 @@ +@@ -840,16 +1145,23 @@ } @@ -730,7 +731,7 @@ Path path = file2.toPath(); if (FileUtils.a(path) && FileUtils.b(path) && path.startsWith(file.getPath()) && file2.isFile()) { -@@ -858,7 +1169,7 @@ +@@ -858,7 +1170,7 @@ } serverstatisticmanager = new ServerStatisticManager(this.server, file1); @@ -739,7 +740,7 @@ } return serverstatisticmanager; -@@ -866,14 +1177,14 @@ +@@ -866,14 +1178,14 @@ public AdvancementDataPlayer f(EntityPlayer entityplayer) { UUID uuid = entityplayer.getUniqueID(); @@ -756,7 +757,7 @@ } advancementdataplayer.a(entityplayer); -@@ -909,13 +1220,20 @@ +@@ -909,13 +1221,20 @@ } public void reload() {