diff --git a/paper-api/src/main/java/org/bukkit/Server.java b/paper-api/src/main/java/org/bukkit/Server.java index d7dfe92d38..e8ef29c51a 100644 --- a/paper-api/src/main/java/org/bukkit/Server.java +++ b/paper-api/src/main/java/org/bukkit/Server.java @@ -57,13 +57,6 @@ public interface Server { */ public int getPort(); - /** - * Get the view distance from this server. - * - * @return The view distance from this server. - */ - public int getViewDistance(); - /** * Get the IP that this server is bound to or empty string if not specified * @@ -247,18 +240,18 @@ public interface Server { * @return World with the given Unique ID, or null if none exists. */ public World getWorld(UUID uid); - + /** * Gets the map from the given item ID. - * + * * @param id ID of the map to get. * @return The MapView if it exists, or null otherwise. */ public MapView getMap(short id); - + /** * Create a new map with an automatically assigned ID. - * + * * @param world The world the map will belong to. * @return The MapView just created. */ @@ -346,4 +339,26 @@ public interface Server { * @return Whether this server allows flying or not. */ public boolean getAllowFlight(); + + /** + * Get the default view distance of this server. + * + * The view distance is a measure of how far a player can see. + * It affects the number of chunks loaded and updated around every player. + * + * @return The default view distance of the server. + */ + public int getViewDistance(); + + /** + * Set the default view distance for this server. + * + * The view distance is a measure of how far a player can see. + * It affects the number of chunks loaded and updated around every player. + * The view distance must be in the range [3,15]. + * + * @param viewDistance an integer between 3 and 15 inclusive + * @throws IllegalArgumentException If view distance is less than 3 or greater than 15 + */ + public void setViewDistance(int viewDistance) throws IllegalArgumentException; } diff --git a/paper-api/src/main/java/org/bukkit/World.java b/paper-api/src/main/java/org/bukkit/World.java index 3c416de1a2..d2b83eafe6 100644 --- a/paper-api/src/main/java/org/bukkit/World.java +++ b/paper-api/src/main/java/org/bukkit/World.java @@ -694,12 +694,44 @@ public interface World { public boolean getKeepSpawnInMemory(); /** - * Sets whether the world's spawn area should be kept loaded into memory or not. - * - * @param keepLoaded if true then the world's spawn area will be kept loaded into memory. - */ + * Sets whether the world's spawn area should be kept loaded into memory or not. + * + * @param keepLoaded if true then the world's spawn area will be kept loaded into memory. + */ public void setKeepSpawnInMemory(boolean keepLoaded); + /** + * Get the view distance of this world. + * + * The view distance is a measure of how far a player can see. + * It affects the number of chunks loaded and updated around every player. + * + * @return Current view distance of the world + */ + public int getViewDistance(); + + /** + * Set the view distance for this world. + * + * The view distance is a measure of how far a player can see. + * It affects the number of chunks loaded and updated around every player. + * The view distance must be in the range [3,15] + * + * @param viewDistance an integer between 3 and 15 inclusive + * @throws IllegalArgumentException If view distance is less than 3 or greater than 15 + */ + public void setViewDistance(int viewDistance) throws IllegalArgumentException; + + /** + * Set the view distance for this world back to server defaults. + */ + public void resetViewDistance(); + + /** + * @return if the view distance has been set for this world + */ + boolean isViewDistanceSet(); + /** * Represents various map environment types that a world may be */ diff --git a/paper-api/src/main/java/org/bukkit/entity/Player.java b/paper-api/src/main/java/org/bukkit/entity/Player.java index 706f1fd990..b00d58aa29 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Player.java +++ b/paper-api/src/main/java/org/bukkit/entity/Player.java @@ -300,4 +300,25 @@ public interface Player extends HumanEntity, CommandSender { */ public void resetPlayerTime(); + /** + * Set the view distance for this player. + * View distance will remain constant, even between worlds, until it is changed or reset to default. + * @param viewDistance the number of chunks this player can see. + */ + void setViewDistance(int viewDistance); + + /** + * @return the number of chunks this player can see + */ + int getViewDistance(); + + /** + * Set this players view distance back to the same as whichever world they are on. + */ + void resetViewDistance(); + + /** + * @return if the view distance has been set for this player specifically. + */ + boolean isViewDistanceSet(); }