diff --git a/client/src/main/java/client/Client.java b/client/src/main/java/client/Client.java index cacef781..4827311c 100755 --- a/client/src/main/java/client/Client.java +++ b/client/src/main/java/client/Client.java @@ -537,7 +537,7 @@ public class Client implements IThreadListener { private IntHashMap entityIds; - @Variable(name = "chunk_view_distance", category = CVarCategory.RENDER, min = 2, max = 16, callback = DistanceFunction.class, display = "Sichtweite", unit = "Chunks") + @Variable(name = "chunk_view_distance", category = CVarCategory.RENDER, min = 2, max = 64, callback = DistanceFunction.class, display = "Sichtweite", unit = "Chunks") public int renderDistance = 8; @Variable(name = "chunk_build_time", category = CVarCategory.RENDER, min = 1, max = 100, display = "Zeit für Chunk-Bau", unit = "ms") public int maxBuildTime = 8; diff --git a/common/src/main/java/common/vars/Vars.java b/common/src/main/java/common/vars/Vars.java index f549df41..dc8060dd 100755 --- a/common/src/main/java/common/vars/Vars.java +++ b/common/src/main/java/common/vars/Vars.java @@ -265,7 +265,7 @@ public abstract class Vars { public static int spawnMoreZombie = 25; @Var(name = "explosionBlocksPerTick", min = 100, max = 10000000) public static int maxExplosionIters = 1000000; - @Var(name = "viewDistance", min = 2, max = 16) + @Var(name = "viewDistance", min = 2, max = 64) public static int distance = 8; @Var(name = "timeFlow", min = 0) public static int timeFlow = 1; diff --git a/server/src/main/java/server/network/Player.java b/server/src/main/java/server/network/Player.java index 5cc3eeee..d8fa5435 100755 --- a/server/src/main/java/server/network/Player.java +++ b/server/src/main/java/server/network/Player.java @@ -1014,7 +1014,7 @@ public class Player extends User implements Executor, IPlayer List list1 = Lists.newArrayList(); WorldServer world = this.getEntityWorld(); - int n = 10; // TODO: this.local ? 1024 : 10; + int n = SVars.chunksPerTick; while (iterator1.hasNext() && ((List)list).size() < n) { @@ -1048,7 +1048,14 @@ public class Player extends User implements Executor, IPlayer } else { - this.sendPacket(getPacket(world, list)); + if(list.size() <= 10) { + this.sendPacket(getPacket(world, list)); + } + else { + for(int h = 0; h < list.size(); h += 10) { + this.sendPacket(getPacket(world, list.subList(h, h + 10 > list.size() ? list.size() : h + 10))); + } + } } for (TileEntity tileentity : list1) diff --git a/server/src/main/java/server/vars/SVars.java b/server/src/main/java/server/vars/SVars.java index 6c82e006..1aeeb73a 100644 --- a/server/src/main/java/server/vars/SVars.java +++ b/server/src/main/java/server/vars/SVars.java @@ -79,6 +79,10 @@ public abstract class SVars { public static int port = -1; @Var(name = "spawnDungeonMobs") public static int spawnDungeonMobs = 4; + @Var(name = "chunksPerTick", min = 5, max = 1024) + public static int chunksPerTick = 10; + @Var(name = "updateDistance", min = 2, max = 64) + public static int updateDistance = 8; @Var(name = "password", nonDefault = true) public static String password = ""; diff --git a/server/src/main/java/server/world/ChunkServer.java b/server/src/main/java/server/world/ChunkServer.java index 4e8af3c9..5180fe9b 100644 --- a/server/src/main/java/server/world/ChunkServer.java +++ b/server/src/main/java/server/world/ChunkServer.java @@ -20,6 +20,8 @@ public class ChunkServer extends Chunk { public ChunkServer(WorldServer world, int x, int z) { super(world, x, z); + this.lightInit = true; + this.updated = true; } public ChunkServer(WorldServer world, char[] data, int height, boolean base, boolean ceil, Random rand, int x, int z) { @@ -82,6 +84,8 @@ public class ChunkServer extends Chunk { } if(!ceil) this.genSky(); + this.lightInit = true; + this.updated = true; } public int getTopSegment() { diff --git a/server/src/main/java/server/world/WorldServer.java b/server/src/main/java/server/world/WorldServer.java index e3775f64..4149c667 100755 --- a/server/src/main/java/server/world/WorldServer.java +++ b/server/src/main/java/server/world/WorldServer.java @@ -452,7 +452,7 @@ public final class WorldServer extends AWorldServer { } protected void updateBlocks() { - this.setActivePlayerChunksAndCheckLight(Vars.distance); + this.setActivePlayerChunksAndCheckLight(SVars.updateDistance); int dtics = 0; int rtics = 0;