From fc072c0954c803d265634cc460fac3c2a9498e1a Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Sun, 26 Feb 2023 09:38:42 -0800 Subject: [PATCH] Fix forced respawn with respawn anchor (#8845) --- patches/server/0451-Fix-SPIGOT-5989.patch | 10 ++++++---- patches/server/0547-Add-sendOpLevel-API.patch | 6 +++--- patches/server/0631-Add-PlayerKickEvent-causes.patch | 4 ++-- ...rname-instead-of-display-name-in-PlayerList-g.patch | 4 ++-- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/patches/server/0451-Fix-SPIGOT-5989.patch b/patches/server/0451-Fix-SPIGOT-5989.patch index 12e8ee03d6..365b3d8f47 100644 --- a/patches/server/0451-Fix-SPIGOT-5989.patch +++ b/patches/server/0451-Fix-SPIGOT-5989.patch @@ -10,7 +10,7 @@ This fixes that by checking if the modified spawn location is still at a respawn anchor. diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 290052c0c004047e26870365ca5eeb75eaff6371..5d6128932e1af0445cf928fac6d6b91226a18de6 100644 +index 290052c0c004047e26870365ca5eeb75eaff6371..9c23f4ee8c3f7a4126261ddc3c80708724757064 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -773,6 +773,7 @@ public abstract class PlayerList { @@ -44,7 +44,7 @@ index 290052c0c004047e26870365ca5eeb75eaff6371..5d6128932e1af0445cf928fac6d6b912 if (!flag) entityplayer.reset(); // SPIGOT-4785 isRespawn = true; // Paper } else { -@@ -867,8 +873,12 @@ public abstract class PlayerList { +@@ -867,8 +873,14 @@ public abstract class PlayerList { } // entityplayer1.initInventoryMenu(); entityplayer1.setHealth(entityplayer1.getHealth()); @@ -52,8 +52,10 @@ index 290052c0c004047e26870365ca5eeb75eaff6371..5d6128932e1af0445cf928fac6d6b912 - entityplayer1.connection.send(new ClientboundSoundPacket(SoundEvents.RESPAWN_ANCHOR_DEPLETE, SoundSource.BLOCKS, (double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ(), 1.0F, 1.0F, worldserver1.getRandom().nextLong())); + // Paper start - Fix SPIGOT-5989 + if (flag2 && !isLocAltered) { -+ BlockState data = worldserver1.getBlockState(blockposition); -+ worldserver1.setBlock(blockposition, data.setValue(net.minecraft.world.level.block.RespawnAnchorBlock.CHARGE, data.getValue(net.minecraft.world.level.block.RespawnAnchorBlock.CHARGE) - 1), 3); ++ if (!flag1) { ++ BlockState data = worldserver1.getBlockState(blockposition); ++ worldserver1.setBlock(blockposition, data.setValue(net.minecraft.world.level.block.RespawnAnchorBlock.CHARGE, data.getValue(net.minecraft.world.level.block.RespawnAnchorBlock.CHARGE) - 1), 3); ++ } + entityplayer1.connection.send(new ClientboundSoundPacket(SoundEvents.RESPAWN_ANCHOR_DEPLETE, SoundSource.BLOCKS, (double) location.getX(), (double) location.getY(), (double) location.getZ(), 1.0F, 1.0F, worldserver1.getRandom().nextLong())); + // Paper end } diff --git a/patches/server/0547-Add-sendOpLevel-API.patch b/patches/server/0547-Add-sendOpLevel-API.patch index a95ab6bbe7..d3a51afc08 100644 --- a/patches/server/0547-Add-sendOpLevel-API.patch +++ b/patches/server/0547-Add-sendOpLevel-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add sendOpLevel API diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 3d05b2f37b192bf707414f4a574f79423b0f0be1..ad6a9e238d21a821e7d5c3634fbc8fc9bdfc38a3 100644 +index 58334842b0fd3d7d69f4946038fc163867c75339..a25181642210cfa30fa1add4a4570d7a8cd3e59e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1063,6 +1063,11 @@ public abstract class PlayerList { +@@ -1065,6 +1065,11 @@ public abstract class PlayerList { } private void sendPlayerPermissionLevel(ServerPlayer player, int permissionLevel) { @@ -20,7 +20,7 @@ index 3d05b2f37b192bf707414f4a574f79423b0f0be1..ad6a9e238d21a821e7d5c3634fbc8fc9 if (player.connection != null) { byte b0; -@@ -1077,8 +1082,10 @@ public abstract class PlayerList { +@@ -1079,8 +1084,10 @@ public abstract class PlayerList { player.connection.send(new ClientboundEntityEventPacket(player, b0)); } diff --git a/patches/server/0631-Add-PlayerKickEvent-causes.patch b/patches/server/0631-Add-PlayerKickEvent-causes.patch index 1fa2899bc5..01db5ba7e1 100644 --- a/patches/server/0631-Add-PlayerKickEvent-causes.patch +++ b/patches/server/0631-Add-PlayerKickEvent-causes.patch @@ -434,7 +434,7 @@ index 9a2d9bcad94612e5c2506db5a9dcd4a3f9271a59..6c166950247118cb1bbae4aa1fc3ee8a } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 565a75e5e775edf604cdb4b991b17fb3ca3423ab..adb546d97810b0a4f25568c8a5e50d01bdcfb274 100644 +index f54873b3f1fa9a5181d1fe6d1673d6c54de05b72..fede2a6f68de79783f3aa0fd9276a28479dfea48 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -657,7 +657,7 @@ public abstract class PlayerList { @@ -446,7 +446,7 @@ index 565a75e5e775edf604cdb4b991b17fb3ca3423ab..adb546d97810b0a4f25568c8a5e50d01 } // Instead of kicking then returning, we need to store the kick reason -@@ -1291,8 +1291,8 @@ public abstract class PlayerList { +@@ -1293,8 +1293,8 @@ public abstract class PlayerList { // Paper end // CraftBukkit start - disconnect safely for (ServerPlayer player : this.players) { diff --git a/patches/server/0830-Use-username-instead-of-display-name-in-PlayerList-g.patch b/patches/server/0830-Use-username-instead-of-display-name-in-PlayerList-g.patch index d1bb449db4..497bfe27e3 100644 --- a/patches/server/0830-Use-username-instead-of-display-name-in-PlayerList-g.patch +++ b/patches/server/0830-Use-username-instead-of-display-name-in-PlayerList-g.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Use username instead of display name in diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 0093be36b2d107549da99d51894f7a332af5e3fa..c092bfa679c60fd11eb95aaa4828b4f3403869f8 100644 +index 2a1273d560279b97faeaa3c906e60cc51c356fce..2bd6cf60e2489b55b17e9245bc1481823ced7785 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1407,7 +1407,7 @@ public abstract class PlayerList { +@@ -1409,7 +1409,7 @@ public abstract class PlayerList { // CraftBukkit start public ServerStatsCounter getPlayerStats(ServerPlayer entityhuman) { ServerStatsCounter serverstatisticmanager = entityhuman.getStats();