af480b8b95
Whilst the new behaviour was technically correct as it prevented the possibility of the chunk tick list actually increasing over time, it introduced a few issues, namely the fact that it slowed growth to unreasonable levels, and interfered with the values which server admins have finally tuned, and come to enjoy over the last few years. If it is absolutely essential that growth be halted and ticking reduced as much as possible, the config option is there for power users. If we wish to 'fix' this by default in the future, a new chunk ticking algorithm, which actually has meaningful config options should be designed.
52 lines
2.3 KiB
Diff
52 lines
2.3 KiB
Diff
From 6a5b7f6ba565726739616f685d89593fa5862aa6 Mon Sep 17 00:00:00 2001
|
|
From: md_5 <md_5@live.com.au>
|
|
Date: Sat, 23 Mar 2013 09:52:41 +1100
|
|
Subject: [PATCH] View Distance
|
|
|
|
This commit allows the user to select per world view distances, and view distances below 3. Be wary of the issues selecting a view distance of 1 or 2 may cause!
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
index 4e0398c..ae4ca63 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
@@ -24,7 +24,7 @@ public class PlayerChunkMap {
|
|
public PlayerChunkMap(WorldServer worldserver, int i) {
|
|
if (i > 15) {
|
|
throw new IllegalArgumentException("Too big view radius!");
|
|
- } else if (i < 3) {
|
|
+ } else if (i < 1) {
|
|
throw new IllegalArgumentException("Too small view radius!");
|
|
} else {
|
|
this.f = i;
|
|
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
|
index 3a8856d..a0e4ade 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
|
@@ -54,7 +54,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
|
|
// CraftBukkit end
|
|
this.server = minecraftserver;
|
|
this.tracker = new EntityTracker(this);
|
|
- this.manager = new PlayerChunkMap(this, minecraftserver.getPlayerList().o());
|
|
+ this.manager = new PlayerChunkMap(this, spigotConfig.viewDistance); // Spigot
|
|
if (this.entitiesById == null) {
|
|
this.entitiesById = new IntHashMap();
|
|
}
|
|
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
index 185442a..15b2ac8 100644
|
|
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
@@ -124,4 +124,11 @@ public class SpigotWorldConfig
|
|
expMerge = getDouble("merge-radius.exp", 3.0 );
|
|
log( "Experience Merge Radius: " + expMerge );
|
|
}
|
|
+
|
|
+ public int viewDistance;
|
|
+ private void viewDistance()
|
|
+ {
|
|
+ viewDistance = getInt( "view-distance", Bukkit.getViewDistance() );
|
|
+ log( "View Distance: " + viewDistance );
|
|
+ }
|
|
}
|
|
--
|
|
1.8.3.2
|
|
|