From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Mon, 29 Feb 2016 18:05:37 -0600
Subject: [PATCH] Add view distance API

Add per player no-tick, tick, and send view distances.

Also add send/no-tick view distance to World.

diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 15ffc7d80bcd7e19fe5477d553e16874d9133c87..e1069d58142c863047b6ed13358e7cfee30a3685 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -1469,6 +1469,62 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
      * @param affects Whether the player can affect mob spawning
      */
     public void setAffectsSpawning(boolean affects);
+
+    /**
+     * Gets the view distance for this player
+     *
+     * @return the player's view distance
+     * @see org.bukkit.World#getViewDistance()
+     * @see org.bukkit.World#getNoTickViewDistance()
+     */
+    public int getViewDistance();
+
+    /**
+     * Sets the view distance for this player
+     *
+     * @param viewDistance the player's view distance
+     * @see org.bukkit.World#setViewDistance(int)
+     * @see org.bukkit.World#setNoTickViewDistance(int)
+     */
+    public void setViewDistance(int viewDistance);
+    
+    /**
+     * Gets the no-ticking view distance for this player.
+     * <p>
+     * No-tick view distance is the view distance where chunks will load, however the chunks and their entities will not
+     * be set to tick.
+     * </p>
+     * @return The no-tick view distance for this player.
+     */
+    public int getNoTickViewDistance();
+
+    /**
+     * Sets the no-ticking view distance for this player.
+     * <p>
+     * No-tick view distance is the view distance where chunks will load, however the chunks and their entities will not
+     * be set to tick.
+     * </p>
+     * @param viewDistance view distance in [2, 32] or -1
+     */
+    public void setNoTickViewDistance(int viewDistance);
+
+    /**
+     * Gets the sending view distance for this player.
+     * <p>
+     * Sending view distance is the view distance where chunks will load in for players.
+     * </p>
+     * @return The sending view distance for this player.
+     */
+    public int getSendViewDistance();
+
+    /**
+     * Sets the sending view distance for this player.
+     * <p>
+     * Sending view distance is the view distance where chunks will load in for players.
+     * </p>
+     * @param viewDistance view distance in [2, 32] or -1
+     */
+    public void setSendViewDistance(int viewDistance);
     // Paper end
 
     /**