From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Byteflux 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/World.java b/src/main/java/org/bukkit/World.java index 4c878531d9d8d0aee6832fd10b339a32f219fa9a..1ea851c658243aa3bfcdbffca3df5ded9386da98 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java @@ -2875,6 +2875,66 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @NotNull public Set getFeatureFlags(); + // Paper start - view distance api + /** + * Sets the view distance for this world. + * @param viewDistance view distance in [2, 32] + */ + void setViewDistance(int viewDistance); + + /** + * Sets the simulation distance for this world. + * @param simulationDistance simulation distance in [2, 32] + */ + void setSimulationDistance(int simulationDistance); + + /** + * Returns the no-tick view distance for this world. + *

+ * No-tick view distance is the view distance where chunks will load, however the chunks and their entities will not + * be set to tick. + *

+ * @return The no-tick view distance for this world. + * @deprecated Use {@link #getViewDistance()} + */ + @Deprecated + default int getNoTickViewDistance() { + return this.getViewDistance(); + } + + /** + * Sets the no-tick view distance for this world. + *

+ * No-tick view distance is the view distance where chunks will load, however the chunks and their entities will not + * be set to tick. + *

+ * @param viewDistance view distance in [2, 32] + * @deprecated Use {@link #setViewDistance(int)} + */ + @Deprecated + default void setNoTickViewDistance(int viewDistance) { + this.setViewDistance(viewDistance); + } + + /** + * Gets the sending view distance for this world. + *

+ * Sending view distance is the view distance where chunks will load in for players in this world. + *

+ * @return The sending view distance for this world. + */ + int getSendViewDistance(); + + /** + * Sets the sending view distance for this world. + *

+ * Sending view distance is the view distance where chunks will load in for players in this world. + *

+ * @param viewDistance view distance in [2, 32] or -1 + */ + void setSendViewDistance(int viewDistance); + // Paper end - view distance api + /** * Represents various map environment types that a world may be */ diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java index c03b5f24304d28a5ebabdf6301165cf04dd5176c..1f5402afd5e34c5da0d59d9c604f6da8c015950e 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -2391,6 +2391,82 @@ 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() + */ + public int getViewDistance(); + + /** + * Sets the view distance for this player + * + * @param viewDistance the player's view distance + * @see org.bukkit.World#setViewDistance(int) + */ + public void setViewDistance(int viewDistance); + + /** + * Gets the simulation distance for this player + * + * @return the player's simulation distance + */ + public int getSimulationDistance(); + + /** + * Sets the simulation distance for this player + * + * @param simulationDistance the player's new simulation distance + */ + public void setSimulationDistance(int simulationDistance); + + /** + * Gets the no-ticking view distance for this player. + *

+ * No-tick view distance is the view distance where chunks will load, however the chunks and their entities will not + * be set to tick. + *

+ * @return The no-tick view distance for this player. + * @deprecated Use {@link #getViewDistance()} + */ + @Deprecated + default int getNoTickViewDistance() { + return this.getViewDistance(); + } + + /** + * Sets the no-ticking view distance for this player. + *

+ * No-tick view distance is the view distance where chunks will load, however the chunks and their entities will not + * be set to tick. + *

+ * @param viewDistance view distance in [2, 32] or -1 + * @deprecated Use {@link #setViewDistance(int)} + */ + @Deprecated + default void setNoTickViewDistance(int viewDistance) { + this.setViewDistance(viewDistance); + } + + /** + * Gets the sending view distance for this player. + *

+ * Sending view distance is the view distance where chunks will load in for players. + *

+ * @return The sending view distance for this player. + */ + public int getSendViewDistance(); + + /** + * Sets the sending view distance for this player. + *

+ * Sending view distance is the view distance where chunks will load in for players. + *

+ * @param viewDistance view distance in [2, 32] or -1 + */ + public void setSendViewDistance(int viewDistance); // Paper end /**