diff --git a/src/main/java/net/minecraft/world/SpawnerAnimals.java b/src/main/java/net/minecraft/world/SpawnerAnimals.java index 2137145..bcf04ef 100644 --- a/src/main/java/net/minecraft/world/SpawnerAnimals.java +++ b/src/main/java/net/minecraft/world/SpawnerAnimals.java @@ -55,7 +55,7 @@ EntityPlayer entityplayer = (EntityPlayer)p_77192_1_.playerEntities.get(i); int j = MathHelper.floor_double(entityplayer.posX / 16.0D); k = MathHelper.floor_double(entityplayer.posZ / 16.0D); - int b0 = p_77192_1_.getConfig().chunkLoading.chunkUpdateRadius; + int b0 = p_77192_1_.getConfig().chunkLoading.chunkActivateRadius; for (int l = -b0; l <= b0; ++l) { diff --git a/src/main/java/net/minecraft/world/WorldServer.java b/src/main/java/net/minecraft/world/WorldServer.java index 3a8d3c9..1087b47 100644 --- a/src/main/java/net/minecraft/world/WorldServer.java +++ b/src/main/java/net/minecraft/world/WorldServer.java @@ -923,7 +923,7 @@ protected int func_152379_p() { - return config.chunkLoading.chunkUpdateRadius; + return config.chunkLoading.chunkActivateRadius; } public MinecraftServer func_73046_m() diff --git a/src/main/java/org/ultramine/server/ServerLoadBalancer.java b/src/main/java/org/ultramine/server/ServerLoadBalancer.java index 1bff767..0b2d2da 100644 --- a/src/main/java/org/ultramine/server/ServerLoadBalancer.java +++ b/src/main/java/org/ultramine/server/ServerLoadBalancer.java @@ -9,7 +9,6 @@ import cpw.mods.fml.common.FMLCommonHandler; import gnu.trove.map.TIntByteMap; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.WorldServer; @@ -28,8 +27,11 @@ { clientLimits.lowerLimit = 32; clientLimits.higherLimit = Integer.MAX_VALUE; + clientLimits.updateRadius = 7; infinityLimits.lowerLimit = Integer.MAX_VALUE; infinityLimits.higherLimit = Integer.MAX_VALUE; + clientLimits.updateRadius = 99; + clientLimits.updateByChunkLoader = true; } public ServerLoadBalancer(World world) @@ -54,9 +56,14 @@ if(!ent.addedToChunk) return true; + PerChunkEntityLimits getLimits = getLimits(ent); + if(prior == WorldConstants.CL_CHUNK_PRIOR) + return getLimits.updateByChunkLoader; + if(prior > getLimits.updateRadius) + return false; + Chunk chunk = world.getChunkFromChunkCoords(cx, cz); int count = chunk.getEntityCountOfSameType(ent); - PerChunkEntityLimits getLimits = getLimits(ent); if(count > getLimits.higherLimit) { ent.setDead(); diff --git a/src/main/java/org/ultramine/server/WorldsConfig.java b/src/main/java/org/ultramine/server/WorldsConfig.java index 3ae1c2b..54bc508 100644 --- a/src/main/java/org/ultramine/server/WorldsConfig.java +++ b/src/main/java/org/ultramine/server/WorldsConfig.java @@ -104,7 +104,7 @@ public static class ChunkLoading { public int viewDistance = 10; - public int chunkUpdateRadius = 7; + public int chunkActivateRadius = 7; public int chunkCacheSize; public boolean enableChunkLoaders = true; public int maxSendRate = 4; @@ -124,6 +124,8 @@ public static class PerChunkEntityLimits { + public int updateRadius; + public boolean updateByChunkLoader; public int lowerLimit; public int higherLimit; } diff --git a/src/main/resources/org/ultramine/defaults/defaultworlds.yml b/src/main/resources/org/ultramine/defaults/defaultworlds.yml index a2cc740..b039f5e 100644 --- a/src/main/resources/org/ultramine/defaults/defaultworlds.yml +++ b/src/main/resources/org/ultramine/defaults/defaultworlds.yml @@ -59,28 +59,40 @@ borders: [] chunkLoading: &global_cl viewDistance: 10 - chunkUpdateRadius: 7 + chunkActivateRadius: 7 chunkCacheSize: 1024 enableChunkLoaders: true maxSendRate: 4 loadBalancer: limits: monsters: + updateRadius: 7 + updateByChunkLoader: true lowerLimit: 16 higherLimit: 16 animals: + updateRadius: 7 + updateByChunkLoader: true lowerLimit: 4 higherLimit: 32 water: + updateRadius: 7 + updateByChunkLoader: true lowerLimit: 4 higherLimit: 16 ambient: + updateRadius: 7 + updateByChunkLoader: true lowerLimit: 16 higherLimit: 16 items: + updateRadius: 7 + updateByChunkLoader: true lowerLimit: 16 higherLimit: 1024 xpOrbs: + updateRadius: 7 + updateByChunkLoader: true lowerLimit: 8 higherLimit: 16