mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-30 04:02:50 +01:00
488 lines
26 KiB
Diff
488 lines
26 KiB
Diff
From 0adf31b995d7637074febf78abbdda02291a63c1 Mon Sep 17 00:00:00 2001
|
|
From: md_5 <md_5@live.com.au>
|
|
Date: Tue, 11 Jun 2013 12:16:05 +1000
|
|
Subject: [PATCH] Spigot Changes
|
|
|
|
|
|
diff --git a/.gitignore b/.gitignore
|
|
index c3faf57..346b232 100644
|
|
--- a/.gitignore
|
|
+++ b/.gitignore
|
|
@@ -34,3 +34,5 @@
|
|
|
|
/src/main/resources/achievement
|
|
/src/main/resources/lang
|
|
+
|
|
+/dependency-reduced-pom.xml
|
|
\ No newline at end of file
|
|
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
|
|
index 4392cb2..8e041c2 100644
|
|
--- a/src/main/java/net/minecraft/server/Block.java
|
|
+++ b/src/main/java/net/minecraft/server/Block.java
|
|
@@ -768,4 +768,16 @@ public class Block {
|
|
return 0;
|
|
}
|
|
// CraftBukkit end
|
|
+
|
|
+ // Spigot start
|
|
+ public static float range(float min, float value, float max) {
|
|
+ if (value < min) {
|
|
+ return min;
|
|
+ }
|
|
+ if (value > max) {
|
|
+ return max;
|
|
+ }
|
|
+ return value;
|
|
+ }
|
|
+ // Spigot end
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java
|
|
index 83cc09d..eed8ded 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockCactus.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockCactus.java
|
|
@@ -23,7 +23,7 @@ public class BlockCactus extends Block {
|
|
if (l < 3) {
|
|
int i1 = world.getData(i, j, k);
|
|
|
|
- if (i1 == 15) {
|
|
+ if (i1 >= (byte) range(3, (world.growthOdds / world.getWorld().cactusGrowthModifier * 15) + 0.5F, 15)) { // Spigot
|
|
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
|
|
world.setData(i, j, k, 0, 4);
|
|
this.doPhysics(world, i, j + 1, k, this.id);
|
|
diff --git a/src/main/java/net/minecraft/server/BlockCrops.java b/src/main/java/net/minecraft/server/BlockCrops.java
|
|
index 14a1c3b..0aee7af 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockCrops.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockCrops.java
|
|
@@ -28,7 +28,7 @@ public class BlockCrops extends BlockFlower {
|
|
if (l < 7) {
|
|
float f = this.k(world, i, j, k);
|
|
|
|
- if (random.nextInt((int) (25.0F / f) + 1) == 0) {
|
|
+ if (random.nextInt((int) (world.growthOdds / world.getWorld().wheatGrowthModifier * (25.0F / f)) + 1) == 0) { // Spigot
|
|
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this.id, ++l); // CraftBukkit
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/BlockGrass.java b/src/main/java/net/minecraft/server/BlockGrass.java
|
|
index 6f9301d..2ccc0b8 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockGrass.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockGrass.java
|
|
@@ -32,7 +32,8 @@ public class BlockGrass extends Block {
|
|
}
|
|
// CraftBukkit end
|
|
} else if (world.getLightLevel(i, j + 1, k) >= 9) {
|
|
- for (int l = 0; l < 4; ++l) {
|
|
+ int numGrowth = Math.min(4, Math.max(20, (int) (4 * 100F / world.growthOdds))); // Spigot
|
|
+ for (int l = 0; l < numGrowth; ++l) { // Spigot
|
|
int i1 = i + random.nextInt(3) - 1;
|
|
int j1 = j + random.nextInt(5) - 3;
|
|
int k1 = k + random.nextInt(3) - 1;
|
|
diff --git a/src/main/java/net/minecraft/server/BlockMushroom.java b/src/main/java/net/minecraft/server/BlockMushroom.java
|
|
index 872ad00..6e135a4 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockMushroom.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockMushroom.java
|
|
@@ -27,7 +27,7 @@ public class BlockMushroom extends BlockFlower {
|
|
|
|
public void a(World world, int i, int j, int k, Random random) {
|
|
final int sourceX = i, sourceY = j, sourceZ = k; // CraftBukkit
|
|
- if (random.nextInt(25) == 0) {
|
|
+ if (random.nextInt(Math.max(1, (int) world.growthOdds / world.getWorld().mushroomGrowthModifier * 25)) == 0) { // Spigot
|
|
byte b0 = 4;
|
|
int l = 5;
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/BlockMycel.java b/src/main/java/net/minecraft/server/BlockMycel.java
|
|
index 1de8c83..fa11d1c 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockMycel.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockMycel.java
|
|
@@ -32,7 +32,8 @@ public class BlockMycel extends Block {
|
|
}
|
|
// CraftBukkit end
|
|
} else if (world.getLightLevel(i, j + 1, k) >= 9) {
|
|
- for (int l = 0; l < 4; ++l) {
|
|
+ int numGrowth = Math.min(4, Math.max(20, (int) (4 * 100F / world.growthOdds))); // Spigot
|
|
+ for (int l = 0; l < numGrowth; ++l) { // Spigot
|
|
int i1 = i + random.nextInt(3) - 1;
|
|
int j1 = j + random.nextInt(5) - 3;
|
|
int k1 = k + random.nextInt(3) - 1;
|
|
diff --git a/src/main/java/net/minecraft/server/BlockReed.java b/src/main/java/net/minecraft/server/BlockReed.java
|
|
index 8657860..50c5200 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockReed.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockReed.java
|
|
@@ -23,7 +23,7 @@ public class BlockReed extends Block {
|
|
if (l < 3) {
|
|
int i1 = world.getData(i, j, k);
|
|
|
|
- if (i1 == 15) {
|
|
+ if (i1 >= (byte) range(3, (world.growthOdds / world.getWorld().sugarGrowthModifier * 15) + 0.5F, 15)) { // Spigot
|
|
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
|
|
world.setData(i, j, k, 0, 4);
|
|
} else {
|
|
diff --git a/src/main/java/net/minecraft/server/BlockSapling.java b/src/main/java/net/minecraft/server/BlockSapling.java
|
|
index 3b00939..4ab0fb9 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockSapling.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockSapling.java
|
|
@@ -26,7 +26,7 @@ public class BlockSapling extends BlockFlower {
|
|
public void a(World world, int i, int j, int k, Random random) {
|
|
if (!world.isStatic) {
|
|
super.a(world, i, j, k, random);
|
|
- if (world.getLightLevel(i, j + 1, k) >= 9 && random.nextInt(7) == 0) {
|
|
+ if (world.getLightLevel(i, j + 1, k) >= 9 && (random.nextInt(Math.max(2, (int) ((world.growthOdds / world.getWorld().aggregateTicks / world.getWorld().treeGrowthModifier * 7) + 0.5F))) == 0)) { // Spigot
|
|
this.grow(world, i, j, k, random, false, null, null); // CraftBukkit - added bonemeal, player and itemstack
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/BlockStem.java b/src/main/java/net/minecraft/server/BlockStem.java
|
|
index 8339a35..c17ce36 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockStem.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockStem.java
|
|
@@ -27,7 +27,7 @@ public class BlockStem extends BlockFlower {
|
|
if (world.getLightLevel(i, j + 1, k) >= 9) {
|
|
float f = this.m(world, i, j, k);
|
|
|
|
- if (random.nextInt((int) (25.0F / f) + 1) == 0) {
|
|
+ if (random.nextInt((int) (world.growthOdds / (this.id == Block.PUMPKIN_STEM.id ? world.getWorld().pumpkinGrowthModifier : world.getWorld().melonGrowthModifier) * (25.0F / f)) + 1) == 0) { // Spigot
|
|
int l = world.getData(i, j, k);
|
|
|
|
if (l < 7) {
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
index f1c2d48..e1872cc 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
@@ -845,8 +845,20 @@ public class PlayerConnection extends Connection {
|
|
|
|
this.chat(s, packet3chat.a_());
|
|
|
|
+ // Spigot start
|
|
+ boolean isCounted = true;
|
|
+ if (server.spamGuardExclusions != null) {
|
|
+ for (String excluded : server.spamGuardExclusions) {
|
|
+ if (s.startsWith(excluded)) {
|
|
+ isCounted = false;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
// This section stays because it is only applicable to packets
|
|
- if (chatSpamField.addAndGet(this, 20) > 200 && !this.minecraftServer.getPlayerList().isOp(this.player.name)) { // CraftBukkit use thread-safe spam
|
|
+ if (isCounted && chatSpamField.addAndGet(this, 20) > 200 && !this.minecraftServer.getPlayerList().isOp(this.player.name)) { // CraftBukkit use thread-safe spam
|
|
+ // Spigot end
|
|
+ // CraftBukkit start
|
|
if (packet3chat.a_()) {
|
|
Waitable waitable = new Waitable() {
|
|
@Override
|
|
@@ -967,7 +979,7 @@ public class PlayerConnection extends Connection {
|
|
}
|
|
|
|
try {
|
|
- this.minecraftServer.getLogger().info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // CraftBukkit
|
|
+ if (server.logCommands) this.minecraftServer.getLogger().info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // Spigot
|
|
if (this.server.dispatchCommand(event.getPlayer(), event.getMessage().substring(1))) {
|
|
return;
|
|
}
|
|
@@ -1554,8 +1566,9 @@ public class PlayerConnection extends Connection {
|
|
flag = false;
|
|
} else {
|
|
for (i = 0; i < packet130updatesign.lines[j].length(); ++i) {
|
|
- if (SharedConstants.allowedCharacters.indexOf(packet130updatesign.lines[j].charAt(i)) < 0) {
|
|
+ if (!SharedConstants.isAllowedChatCharacter(packet130updatesign.lines[j].charAt(i))) {
|
|
flag = false;
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
|
index b7e327b..0e3a6a1 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
|
@@ -307,7 +307,7 @@ public abstract class PlayerList {
|
|
|
|
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, s1);
|
|
} else if (!this.isWhitelisted(s)) {
|
|
- event.disallow(PlayerLoginEvent.Result.KICK_WHITELIST, "You are not white-listed on this server!");
|
|
+ event.disallow(PlayerLoginEvent.Result.KICK_WHITELIST, cserver.whitelistMessage); // Spigot
|
|
} else {
|
|
String s2 = socketaddress.toString();
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
|
index 6c3fcf1..4a8d3f4 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
|
@@ -37,6 +37,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
|
|
private static final StructurePieceTreasure[] S = new StructurePieceTreasure[] { new StructurePieceTreasure(Item.STICK.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.WOOD.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.LOG.id, 0, 1, 3, 10), new StructurePieceTreasure(Item.STONE_AXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_AXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.STONE_PICKAXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_PICKAXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.APPLE.id, 0, 2, 3, 5), new StructurePieceTreasure(Item.BREAD.id, 0, 2, 3, 3)};
|
|
private ArrayList T = new ArrayList();
|
|
private IntHashMap entitiesById;
|
|
+ private int aggregateTicks = 1; // Spigot
|
|
|
|
// CraftBukkit start
|
|
public final int dimension;
|
|
@@ -295,6 +296,10 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
|
|
}
|
|
|
|
protected void g() {
|
|
+ // Spigot start
|
|
+ if (--this.aggregateTicks != 0) return;
|
|
+ aggregateTicks = this.getWorld().aggregateTicks;
|
|
+ // Spigot end
|
|
super.g();
|
|
int i = 0;
|
|
int j = 0;
|
|
@@ -412,7 +417,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
|
|
if (block != null && block.isTicking()) {
|
|
++i;
|
|
this.growthOdds = (iter.value() < 1) ? this.modifiedOdds : 100; // Spigot - grow fast if no players are in this chunk (value = player count)
|
|
- block.a(this, k2 + k, i3 + chunksection.getYPosition(), l2 + l, this.random);
|
|
+ for ( int c = 0; c < ( ( block.id == Block.SAPLING.id ) ? 1 : getWorld().aggregateTicks ); c++ ) block.a(this, k2 + k, i3 + chunksection.getYPosition(), l2 + l, this.random);
|
|
}
|
|
}
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index 2956e75..6ed5212 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -166,6 +166,13 @@ public final class CraftServer implements Server {
|
|
private final class BooleanWrapper {
|
|
private boolean value = true;
|
|
}
|
|
+ // Spigot start
|
|
+ public String whitelistMessage = "You are not white-listed on this server!";
|
|
+ public String stopMessage = "Server restarting. Brb";
|
|
+ public boolean logCommands = true;
|
|
+ public boolean commandComplete = true;
|
|
+ public List<String> spamGuardExclusions;
|
|
+ // Spigot end
|
|
|
|
static {
|
|
ConfigurationSerialization.registerClass(CraftOfflinePlayer.class);
|
|
@@ -208,12 +215,20 @@ public final class CraftServer implements Server {
|
|
chunkGCLoadThresh = configuration.getInt("chunk-gc.load-threshold");
|
|
|
|
updater = new AutoUpdater(new BukkitDLUpdaterService(configuration.getString("auto-updater.host")), getLogger(), configuration.getString("auto-updater.preferred-channel"));
|
|
- updater.setEnabled(configuration.getBoolean("auto-updater.enabled"));
|
|
+ updater.setEnabled(false);
|
|
updater.setSuggestChannels(configuration.getBoolean("auto-updater.suggest-channels"));
|
|
updater.getOnBroken().addAll(configuration.getStringList("auto-updater.on-broken"));
|
|
updater.getOnUpdate().addAll(configuration.getStringList("auto-updater.on-update"));
|
|
updater.check(serverVersion);
|
|
|
|
+ // Spigot start
|
|
+ Spigot.initialize(this, commandMap, configuration);
|
|
+
|
|
+ try {
|
|
+ configuration.save(getConfigFile());
|
|
+ } catch (IOException e) {
|
|
+ }
|
|
+ // Spigot end
|
|
loadPlugins();
|
|
enablePlugins(PluginLoadOrder.STARTUP);
|
|
}
|
|
@@ -535,6 +550,7 @@ public final class CraftServer implements Server {
|
|
|
|
((DedicatedServer) console).propertyManager = config;
|
|
|
|
+ ((SimplePluginManager) pluginManager).useTimings(configuration.getBoolean("settings.plugin-profiling")); // Spigot
|
|
boolean animals = config.getBoolean("spawn-animals", console.getSpawnAnimals());
|
|
boolean monsters = config.getBoolean("spawn-monsters", console.worlds.get(0).difficulty > 0);
|
|
int difficulty = config.getInt("difficulty", console.worlds.get(0).difficulty);
|
|
@@ -600,6 +616,7 @@ public final class CraftServer implements Server {
|
|
"This plugin is not properly shutting down its async tasks when it is being reloaded. This may cause conflicts with the newly loaded version of the plugin"
|
|
));
|
|
}
|
|
+ Spigot.initialize(this, commandMap, configuration); // Spigot
|
|
loadPlugins();
|
|
enablePlugins(PluginLoadOrder.STARTUP);
|
|
enablePlugins(PluginLoadOrder.POSTWORLD);
|
|
@@ -1058,13 +1075,8 @@ public final class CraftServer implements Server {
|
|
return count;
|
|
}
|
|
|
|
+ // Spigot start
|
|
public OfflinePlayer getOfflinePlayer(String name) {
|
|
- return getOfflinePlayer(name, true);
|
|
- }
|
|
-
|
|
- public OfflinePlayer getOfflinePlayer(String name, boolean search) {
|
|
- Validate.notNull(name, "Name cannot be null");
|
|
-
|
|
OfflinePlayer result = getPlayerExact(name);
|
|
String lname = name.toLowerCase();
|
|
|
|
@@ -1072,17 +1084,7 @@ public final class CraftServer implements Server {
|
|
result = offlinePlayers.get(lname);
|
|
|
|
if (result == null) {
|
|
- if (search) {
|
|
- WorldNBTStorage storage = (WorldNBTStorage) console.worlds.get(0).getDataManager();
|
|
- for (String dat : storage.getPlayerDir().list(new DatFileFilter())) {
|
|
- String datName = dat.substring(0, dat.length() - 4);
|
|
- if (datName.equalsIgnoreCase(name)) {
|
|
- name = datName;
|
|
- break;
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
+ // Spigot end
|
|
result = new CraftOfflinePlayer(this, name);
|
|
offlinePlayers.put(lname, result);
|
|
}
|
|
@@ -1220,7 +1222,7 @@ public final class CraftServer implements Server {
|
|
Set<OfflinePlayer> players = new HashSet<OfflinePlayer>();
|
|
|
|
for (String file : files) {
|
|
- players.add(getOfflinePlayer(file.substring(0, file.length() - 4), false));
|
|
+ players.add(getOfflinePlayer(file.substring(0, file.length() - 4))); // Spigot
|
|
}
|
|
players.addAll(Arrays.asList(getOnlinePlayers()));
|
|
|
|
@@ -1326,7 +1328,7 @@ public final class CraftServer implements Server {
|
|
public List<String> tabCompleteCommand(Player player, String message) {
|
|
List<String> completions = null;
|
|
try {
|
|
- completions = getCommandMap().tabComplete(player, message.substring(1));
|
|
+ completions = (commandComplete) ? getCommandMap().tabComplete(player, message.substring(1)) : null; // Spigot
|
|
} catch (CommandException ex) {
|
|
player.sendMessage(ChatColor.RED + "An internal error occurred while attempting to tab-complete this command");
|
|
getLogger().log(Level.SEVERE, "Exception when " + player.getName() + " attempted to tab complete " + message, ex);
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
index d28a4c8..ce7f93a 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -69,6 +69,17 @@ public class CraftWorld implements World {
|
|
private static final Random rand = new Random();
|
|
// Spigot start
|
|
public int growthPerTick = 650;
|
|
+ public boolean randomLightingUpdates = false;
|
|
+ public int mobSpawnRange = 4;
|
|
+ public int aggregateTicks = 4;
|
|
+ // Crop growth rates:
|
|
+ public int wheatGrowthModifier = 100;
|
|
+ public int cactusGrowthModifier = 100;
|
|
+ public int melonGrowthModifier = 100;
|
|
+ public int pumpkinGrowthModifier = 100;
|
|
+ public int sugarGrowthModifier = 100;
|
|
+ public int treeGrowthModifier = 100;
|
|
+ public int mushroomGrowthModifier = 100;
|
|
// Spigot end
|
|
|
|
public CraftWorld(WorldServer world, ChunkGenerator gen, Environment env) {
|
|
@@ -94,16 +105,46 @@ public class CraftWorld implements World {
|
|
// Load defaults first
|
|
boolean info = configuration.getBoolean( "world-settings.default.info", true );
|
|
growthPerTick = configuration.getInt( "world-settings.default.growth-chunks-per-tick", growthPerTick );
|
|
+ randomLightingUpdates = configuration.getBoolean( "world-settings.default.random-light-updates", randomLightingUpdates );
|
|
+ mobSpawnRange = configuration.getInt( "world-settings.default.mob-spawn-range", mobSpawnRange );
|
|
+ aggregateTicks = Math.max( 1, configuration.getInt( "world-settings.default.aggregate-chunkticks", aggregateTicks ) );
|
|
+ wheatGrowthModifier = configuration.getInt( "world-settings.default.wheat-growth-modifier", wheatGrowthModifier );
|
|
+ cactusGrowthModifier = configuration.getInt( "world-settings.default.cactus-growth-modifier", cactusGrowthModifier );
|
|
+ melonGrowthModifier = configuration.getInt( "world-settings.default.melon-growth-modifier", melonGrowthModifier );
|
|
+ pumpkinGrowthModifier = configuration.getInt( "world-settings.default.pumpkin-growth-modifier", pumpkinGrowthModifier );
|
|
+ sugarGrowthModifier = configuration.getInt( "world-settings.default.sugar-growth-modifier", sugarGrowthModifier );
|
|
+ treeGrowthModifier = configuration.getInt( "world-settings.default.tree-growth-modifier", treeGrowthModifier );
|
|
+ mushroomGrowthModifier = configuration.getInt( "world-settings.default.mushroom-growth-modifier", mushroomGrowthModifier );
|
|
|
|
// Override defaults with world specific, if they exist
|
|
info = configuration.getBoolean( "world-settings." + name + ".info", info );
|
|
growthPerTick = configuration.getInt( "world-settings." + name + ".growth-chunks-per-tick", growthPerTick );
|
|
+ randomLightingUpdates = configuration.getBoolean( "world-settings." + name + ".random-light-updates", randomLightingUpdates );
|
|
+ mobSpawnRange = configuration.getInt( "world-settings." + name + ".mob-spawn-range", mobSpawnRange );
|
|
+ aggregateTicks = Math.max( 1, configuration.getInt( "world-settings." + name + ".aggregate-chunkticks", aggregateTicks ) );
|
|
+ wheatGrowthModifier = configuration.getInt( "world-settings." + name + ".wheat-growth-modifier", wheatGrowthModifier );
|
|
+ cactusGrowthModifier = configuration.getInt( "world-settings." + name + ".cactus-growth-modifier", cactusGrowthModifier );
|
|
+ melonGrowthModifier = configuration.getInt( "world-settings." + name + ".melon-growth-modifier", melonGrowthModifier );
|
|
+ pumpkinGrowthModifier = configuration.getInt( "world-settings." + name + ".pumpkin-growth-modifier", pumpkinGrowthModifier );
|
|
+ sugarGrowthModifier = configuration.getInt( "world-settings." + name + ".sugar-growth-modifier", sugarGrowthModifier );
|
|
+ treeGrowthModifier = configuration.getInt( "world-settings." + name + ".tree-growth-modifier", treeGrowthModifier );
|
|
+ mushroomGrowthModifier = configuration.getInt( "world-settings." + name + ".mushroom-growth-modifier", mushroomGrowthModifier );
|
|
|
|
if ( info )
|
|
{
|
|
server.getLogger().info( "-------------- Spigot ----------------" );
|
|
server.getLogger().info( "-------- World Settings For [" + name + "] --------" );
|
|
server.getLogger().info( "Growth Per Tick: " + growthPerTick );
|
|
+ server.getLogger().info( "Random Lighting Updates: " + randomLightingUpdates );
|
|
+ server.getLogger().info( "Mob Spawn Range: " + mobSpawnRange );
|
|
+ server.getLogger().info( "Aggregate Ticks: " + aggregateTicks );
|
|
+ server.getLogger().info( "Wheat Growth Modifier: " + wheatGrowthModifier );
|
|
+ server.getLogger().info( "Cactus Growth Modifier: " + cactusGrowthModifier );
|
|
+ server.getLogger().info( "Melon Growth Modifier: " + melonGrowthModifier );
|
|
+ server.getLogger().info( "Pumpkin Growth Modifier: " + pumpkinGrowthModifier );
|
|
+ server.getLogger().info( "Sugar Growth Modifier: " + sugarGrowthModifier );
|
|
+ server.getLogger().info( "Tree Growth Modifier: " + treeGrowthModifier );
|
|
+ server.getLogger().info( "Mushroom Growth Modifier: " + mushroomGrowthModifier );
|
|
server.getLogger().info( "-------------------------------------------------" );
|
|
}
|
|
// Spigot end
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java
|
|
new file mode 100644
|
|
index 0000000..2cd806e
|
|
--- /dev/null
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java
|
|
@@ -0,0 +1,19 @@
|
|
+package org.bukkit.craftbukkit;
|
|
+
|
|
+import org.bukkit.command.SimpleCommandMap;
|
|
+import org.bukkit.configuration.file.YamlConfiguration;
|
|
+
|
|
+public class Spigot {
|
|
+
|
|
+ public static void initialize(CraftServer server, SimpleCommandMap commandMap, YamlConfiguration configuration) {
|
|
+ server.whitelistMessage = configuration.getString("settings.whitelist-message", server.whitelistMessage);
|
|
+ server.stopMessage = configuration.getString("settings.stop-message", server.stopMessage);
|
|
+ server.logCommands = configuration.getBoolean("settings.log-commands", true);
|
|
+ server.commandComplete = configuration.getBoolean("settings.command-complete", true);
|
|
+ server.spamGuardExclusions = configuration.getStringList("settings.spam-exclusions");
|
|
+
|
|
+ if (server.chunkGCPeriod == 0) {
|
|
+ server.getLogger().severe("[Spigot] You should not disable chunk-gc, unexpected behaviour may occur!");
|
|
+ }
|
|
+ }
|
|
+}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java b/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java
|
|
index c896ba2..e99cb22 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java
|
|
@@ -40,7 +40,7 @@ class ChunkIOProvider implements AsynchronousExecutor.CallBackProvider<QueuedChu
|
|
// See if someone already loaded this chunk while we were working on it (API, etc)
|
|
if (queuedChunk.provider.chunks.containsKey(queuedChunk.coords)) {
|
|
// Make sure it isn't queued for unload, we need it
|
|
- queuedChunk.provider.unloadQueue.remove(queuedChunk.coords);
|
|
+ queuedChunk.provider.unloadQueue.remove(x, z);
|
|
return;
|
|
}
|
|
|
|
diff --git a/src/main/resources/configurations/bukkit.yml b/src/main/resources/configurations/bukkit.yml
|
|
index 61a95e3..67c6c5e 100644
|
|
--- a/src/main/resources/configurations/bukkit.yml
|
|
+++ b/src/main/resources/configurations/bukkit.yml
|
|
@@ -25,6 +25,30 @@ settings:
|
|
query-plugins: true
|
|
deprecated-verbose: default
|
|
shutdown-message: Server closed
|
|
+ whitelist-message: You are not white-listed on this server!
|
|
+ log-commands: true
|
|
+ command-complete: true
|
|
+ spam-exclusions:
|
|
+ - /skill
|
|
+world-settings:
|
|
+ default:
|
|
+ growth-chunks-per-tick: 650
|
|
+ mob-spawn-range: 4
|
|
+ random-light-updates: false
|
|
+ aggregate-chunkticks: 4
|
|
+ wheat-growth-modifier: 100
|
|
+ cactus-growth-modifier: 100
|
|
+ melon-growth-modifier: 100
|
|
+ pumpkin-growth-modifier: 100
|
|
+ sugar-growth-modifier: 100
|
|
+ tree-growth-modifier: 100
|
|
+ mushroom-growth-modifier: 100
|
|
+ info: true
|
|
+ world:
|
|
+ growth-chunks-per-tick: 1000
|
|
+ world_nether:
|
|
+ growth-chunks-per-tick: 0
|
|
+ random-light-updates: true
|
|
spawn-limits:
|
|
monsters: 70
|
|
animals: 15
|
|
--
|
|
1.8.1.2
|
|
|