--- a/net/minecraft/world/waypoints/WaypointTransmitter.java
+++ b/net/minecraft/world/waypoints/WaypointTransmitter.java
@@ -20,6 +_,7 @@
     Waypoint.Icon waypointIcon();
 
     static boolean doesSourceIgnoreReceiver(LivingEntity entity, ServerPlayer player) {
+        if (!player.getBukkitEntity().canSee(entity.getBukkitEntity())) return true; // Paper - ignore if entity is hidden from player
         if (player.isSpectator()) {
             return false;
         } else if (!entity.isSpectator() && !entity.hasIndirectPassenger(player)) {
@@ -31,7 +_,10 @@
     }
 
     static boolean isChunkVisible(ChunkPos pos, ServerPlayer player) {
-        return player.getChunkTrackingView().isInViewDistance(pos.x, pos.z);
+        // Paper start - rewrite chunk system
+        final ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData playerChunkLoader = ((ca.spottedleaf.moonrise.patches.chunk_system.player.ChunkSystemServerPlayer)player).moonrise$getChunkLoader();
+        return playerChunkLoader != null && playerChunkLoader.getSentChunksRaw().contains(ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkKey(pos));
+        // Paper end - rewrite chunk system
     }
 
     static boolean isReallyFar(LivingEntity entity, ServerPlayer player) {
