diff --git a/paper-server/patches/features/0001-Moonrise-optimisation-patches.patch b/paper-server/patches/features/0001-Moonrise-optimisation-patches.patch index 2f5fc143544b..748fd086714a 100644 --- a/paper-server/patches/features/0001-Moonrise-optimisation-patches.patch +++ b/paper-server/patches/features/0001-Moonrise-optimisation-patches.patch @@ -28453,7 +28453,7 @@ index c974b6cafb1f6aa2a57cfdc8a39c887f02f42b1d..ec40f02032f965f548b0c0a29aa9d9bb // Paper start - PlayerChunkLoadEvent if (io.papermc.paper.event.packet.PlayerChunkLoadEvent.getHandlerList().getRegisteredListeners().length > 0) { diff --git a/net/minecraft/server/network/config/PrepareSpawnTask.java b/net/minecraft/server/network/config/PrepareSpawnTask.java -index 83af9ee3ba150da85b9b694cd76a5fabb5b2d8ef..1fb40837bd02672850ec9adc2797190df22b33fc 100644 +index b5d993095aa77bb132c513f73dbf6d2afb2e3943..8b318dd8aa918284c5fa89e990b13bec425102cb 100644 --- a/net/minecraft/server/network/config/PrepareSpawnTask.java +++ b/net/minecraft/server/network/config/PrepareSpawnTask.java @@ -171,7 +171,7 @@ public class PrepareSpawnTask implements ConfigurationTask { @@ -36949,10 +36949,10 @@ index 082258e7d8270d4026a70a5c0a9e1228d70a2e8d..c3825e91504f5df6bfd8e41de1f5dc4a for (SavedTick pendingTick : this.pendingTicks) { diff --git a/net/minecraft/world/waypoints/WaypointTransmitter.java b/net/minecraft/world/waypoints/WaypointTransmitter.java -index d785e9a69a109d1d7ce7a7e182c215f3d6a35b64..d6f842cbd2060eb56a1e4384b3ea97feea3e73ba 100644 +index ce9e6cc47fc26acf7253d27ac9a587bfad8ce8ff..f8230867b75a25e385475a43b4604e379c0661ea 100644 --- a/net/minecraft/world/waypoints/WaypointTransmitter.java +++ b/net/minecraft/world/waypoints/WaypointTransmitter.java -@@ -34,7 +34,10 @@ public interface WaypointTransmitter extends Waypoint { +@@ -38,7 +38,10 @@ public interface WaypointTransmitter extends Waypoint { } static boolean isChunkVisible(final ChunkPos chunkPos, final ServerPlayer receiver) { diff --git a/paper-server/patches/sources/net/minecraft/world/waypoints/WaypointTransmitter.java.patch b/paper-server/patches/sources/net/minecraft/world/waypoints/WaypointTransmitter.java.patch index a8da863bf0c6..b85f9aa5d29a 100644 --- a/paper-server/patches/sources/net/minecraft/world/waypoints/WaypointTransmitter.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/waypoints/WaypointTransmitter.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/waypoints/WaypointTransmitter.java +++ b/net/minecraft/world/waypoints/WaypointTransmitter.java -@@ -20,6 +_,7 @@ +@@ -20,13 +_,18 @@ Waypoint.Icon waypointIcon(); static boolean doesSourceIgnoreReceiver(final LivingEntity source, final ServerPlayer receiver) { @@ -8,3 +8,15 @@ if (receiver.isSpectator()) { return false; } else if (!source.isSpectator() && !source.hasIndirectPassenger(receiver)) { + double broadcastRange = Math.min( + source.getAttributeValue(Attributes.WAYPOINT_TRANSMIT_RANGE), receiver.getAttributeValue(Attributes.WAYPOINT_RECEIVE_RANGE) + ); +- return source.distanceTo(receiver) >= broadcastRange; ++ // Paper start - optimize waypoint distance check by using squared distance ++ if (broadcastRange <= 0) ++ return true; ++ return source.distanceToSqr(receiver) >= broadcastRange*broadcastRange; ++ // Paper end - optimize waypoint distance check by using squared distance + } else { + return true; + }