Implements interface for changing the view distance.

Uses default view distance if player's view distance is not set

Throws an illegal argument exception if view distance is set too high
or too low.

Pushes notifications of server and world view distance changes to the player.
Move view distance functions from PlayerManger to WorldServer.
Set player minimum view distance to 1 for now.
Reset player's 'last known' position when recalculating visible chunks.

Use per-player view distance in chunk distance checks

By: Andrew Ardill <andrew.ardill@gmail.com>
This commit is contained in:
CraftBukkit/Spigot 2011-08-12 00:37:22 +10:00
parent fd2530530d
commit 363d5d3f22
3 changed files with 56 additions and 6 deletions

View file

@ -275,10 +275,6 @@ public final class CraftServer implements Server {
return this.getConfigInt("server-port", 25565);
}
public int getViewDistance() {
return this.getConfigInt("view-distance", 10);
}
public String getIp() {
return this.getConfigString("server-ip", "");
}
@ -754,6 +750,22 @@ public final class CraftServer implements Server {
return this.console.allowFlight;
}
public int getViewDistance() {
return server.getViewDistance();
}
public void setViewDistance(int viewDistance) throws IllegalArgumentException{
server.setViewDistance(viewDistance);
updateViewDistance();
server.saveViewDistance();
}
public void updateViewDistance() {
for (World world : worlds.values()) {
((CraftWorld) world).updateViewDistance();
}
}
public ChunkGenerator getGenerator(String world) {
ConfigurationNode node = configuration.getNode("worlds");
ChunkGenerator result = null;

View file

@ -811,4 +811,24 @@ public class CraftWorld implements World {
}
}
}
public int getViewDistance() {
return world.getViewDistance();
}
public void setViewDistance(int viewDistance) throws IllegalArgumentException{
world.setViewDistance(viewDistance);
}
public void resetViewDistance(){
world.resetViewDistance();
}
public boolean isViewDistanceSet() {
return world.isViewDistanceSet();
}
public void updateViewDistance() {
world.updateViewDistance();
}
}

View file

@ -1,7 +1,5 @@
package org.bukkit.craftbukkit.entity;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import net.minecraft.server.EntityHuman;
import net.minecraft.server.EntityPlayer;
import net.minecraft.server.Packet131;
@ -28,7 +26,11 @@ import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.map.MapView;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
public class CraftPlayer extends CraftHumanEntity implements Player {
public CraftPlayer(CraftServer server, EntityPlayer entity) {
super(server, entity);
}
@ -345,4 +347,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void resetPlayerTime() {
setPlayerTime(0, true);
}
public void setViewDistance(int viewDistance) {
getHandle().setViewDistance(viewDistance);
}
public int getViewDistance() {
return getHandle().getViewDistance();
}
public void resetViewDistance() {
getHandle().resetViewDistance();
}
public boolean isViewDistanceSet() {
return getHandle().isViewDistanceSet();
}
}