summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/net/minecraft/server/World.java7
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftServer.java19
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftWorld.java16
-rw-r--r--src/main/resources/configurations/bukkit.yml3
4 files changed, 44 insertions, 1 deletions
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index bae74075..a065810f 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -77,6 +77,8 @@ public class World implements IBlockAccess {
public boolean allowMonsters; // CraftBukkit - private -> public
public boolean allowAnimals; // CraftBukkit - private -> public
private LongHashset chunkTickList; // CraftBukkit
+ public long ticksPerAnimalSpawns; // CraftBukkit
+ public long ticksPerMonsterSpawns; // CraftBukkit
private int U;
int[] H;
private List V;
@@ -148,6 +150,8 @@ public class World implements IBlockAccess {
this.allowMonsters = true;
this.allowAnimals = true;
this.chunkTickList = new LongHashset(); // CraftBukkit
+ this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit
+ this.ticksPerMonsterSpawns = this.getServer().getTicksPerMonsterSpawns(); // CraftBukkit
this.U = this.random.nextInt(12000);
this.H = new int['\u8000'];
this.V = new ArrayList();
@@ -1722,8 +1726,9 @@ public class World implements IBlockAccess {
// MethodProfiler.a("mobSpawner"); // CraftBukkit - not in production code
// CraftBukkit start - Only call spawner if we have players online and the world allows for mobs or animals
+ long time = this.worldData.getTime();
if ((this.allowMonsters || this.allowAnimals) && (this instanceof WorldServer && this.getServer().getHandle().players.size() > 0)) {
- SpawnerCreature.spawnEntities(this, this.allowMonsters, this.allowAnimals && this.worldData.getTime() % 400L == 0L);
+ SpawnerCreature.spawnEntities(this, this.allowMonsters && (this.ticksPerMonsterSpawns != 0 && time % this.ticksPerMonsterSpawns == 0L), this.allowAnimals && (this.ticksPerAnimalSpawns != 0 && time % this.ticksPerAnimalSpawns == 0L));
}
// CraftBukkit end
// MethodProfiler.b("chunkSource"); // CraftBukkit - not in production code
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 07ab830f..caeb3844 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -357,6 +357,14 @@ public final class CraftServer implements Server {
return this.configuration.getInt("settings.ping-packet-limit", 100);
}
+ public int getTicksPerAnimalSpawns() {
+ return this.configuration.getInt("ticks-per.animal-spawns");
+ }
+
+ public int getTicksPerMonsterSpawns() {
+ return this.configuration.getInt("ticks-per.monster-spawns");
+ }
+
public PluginManager getPluginManager() {
return pluginManager;
}
@@ -410,6 +418,17 @@ public final class CraftServer implements Server {
for (WorldServer world : console.worlds) {
world.difficulty = difficulty;
world.setSpawnFlags(monsters, animals);
+ if (this.getTicksPerAnimalSpawns() < 0) {
+ world.ticksPerAnimalSpawns = 400;
+ } else {
+ world.ticksPerAnimalSpawns = this.getTicksPerAnimalSpawns();
+ }
+
+ if (this.getTicksPerMonsterSpawns() < 0) {
+ world.ticksPerMonsterSpawns = 1;
+ } else {
+ world.ticksPerMonsterSpawns = this.getTicksPerMonsterSpawns();
+ }
}
pluginManager.clearPlugins();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 5962004b..26abc175 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -982,4 +982,20 @@ public class CraftWorld implements World {
public boolean canGenerateStructures() {
return world.getWorldData().o();
}
+
+ public long getTicksPerAnimalSpawns() {
+ return world.ticksPerAnimalSpawns;
+ }
+
+ public void setTicksPerAnimalSpawns(int ticksPerAnimalSpawns) {
+ world.ticksPerAnimalSpawns = ticksPerAnimalSpawns;
+ }
+
+ public long getTicksPerMonsterSpawns() {
+ return world.ticksPerMonsterSpawns;
+ }
+
+ public void setTicksPerMonsterSpawns(int ticksPerMonsterSpawns) {
+ world.ticksPerMonsterSpawns = ticksPerMonsterSpawns;
+ }
}
diff --git a/src/main/resources/configurations/bukkit.yml b/src/main/resources/configurations/bukkit.yml
index cf93fab4..875ca16b 100644
--- a/src/main/resources/configurations/bukkit.yml
+++ b/src/main/resources/configurations/bukkit.yml
@@ -21,6 +21,9 @@ settings:
update-folder: update
ping-packet-limit: 100
use-exact-login-location: false
+ticks-per:
+ animal-spawns: 400
+ monster-spawns: 1
aliases:
icanhasbukkit:
- version