From 25171953f805554457a3891cecf77fd9728619fa Mon Sep 17 00:00:00 2001 From: John Doe Date: Mon, 7 Jan 2013 01:14:30 -0500 Subject: [PATCH 01/19] Added a plugin.yml --- plugin.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 plugin.yml diff --git a/plugin.yml b/plugin.yml new file mode 100644 index 0000000..30fd299 --- /dev/null +++ b/plugin.yml @@ -0,0 +1,6 @@ +name: DynCap +version: 1.0.0 +main: com.untamedears.DynCap.DynCapPlugin +commands: + setcap + getcap \ No newline at end of file From d2d9161048f6efa43692cb9d65dbb17e9e0bd02f Mon Sep 17 00:00:00 2001 From: John Doe Date: Mon, 7 Jan 2013 01:23:46 -0500 Subject: [PATCH 02/19] Fixed error with commands --- plugin.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin.yml b/plugin.yml index 30fd299..42f3b31 100644 --- a/plugin.yml +++ b/plugin.yml @@ -2,5 +2,5 @@ name: DynCap version: 1.0.0 main: com.untamedears.DynCap.DynCapPlugin commands: - setcap - getcap \ No newline at end of file + setcap: + getcap: \ No newline at end of file From c635bedf24c0d2c26c6e6b10836b78c02f8ddd08 Mon Sep 17 00:00:00 2001 From: Tim Goddard Date: Fri, 18 Jan 2013 11:42:45 +1300 Subject: [PATCH 03/19] Get player count overall, not per world --- src/com/untamedears/DynCap/DynCapPlugin.java | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index ccba676..92c77ef 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -82,15 +82,6 @@ private void setWhitelist(boolean enabled) { } public int getPlayerCount() { - int playerCount = 0; - - List worlds = this.getServer().getWorlds(); - for (World world : worlds) { - if (world != null) { - playerCount += world.getPlayers().size(); - } - } - - return playerCount; + return this.getServer().getOnlinePlayers().length; } } From bc507181cbdf0a4d9b7929197145dcaeba2fded9 Mon Sep 17 00:00:00 2001 From: erocs Date: Thu, 17 Jan 2013 21:10:31 -0800 Subject: [PATCH 04/19] Fix the bug - Use pull #2 and adjust the total player count on logout - Lock down the console commands via bukkit permissions --- plugin.yml | 15 ++++- src/com/untamedears/DynCap/DynCapPlugin.java | 65 ++++++++++---------- 2 files changed, 47 insertions(+), 33 deletions(-) diff --git a/plugin.yml b/plugin.yml index 42f3b31..25f433d 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,6 +1,17 @@ name: DynCap -version: 1.0.0 +version: 1.0.1 main: com.untamedears.DynCap.DynCapPlugin +author: Exultant commands: setcap: - getcap: \ No newline at end of file + description: Sets the player cap + usage: /setcap + permission: dyncap.console + getcap: + description: Displays the current player cap + usage: /getcap + permission: dyncap.console +permissions: + dyncap.console: + description: Console commands for DynCap + default: false diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index 92c77ef..355353f 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -4,6 +4,7 @@ import org.bukkit.Bukkit; import org.bukkit.World; +import org.bukkit.command.ConsoleCommandSender; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -18,7 +19,7 @@ public class DynCapPlugin extends JavaPlugin implements Listener { private int dynamicPlayerCap = 1000; private Logger log; private boolean whiteListEnabled = false; - + public void onEnable() { log = this.getLogger(); commands = new DynCapCommands(this, log); @@ -27,60 +28,62 @@ public void onEnable() { for (String command : getDescription().getCommands().keySet()) { getCommand(command).setExecutor(commands); } + + // Give the console permission + ConsoleCommandSender console = getServer().getConsoleSender(); + console.addAttachment(this, "dyncap.console", true); } - - public void onDisable() { - - } - + + public void onDisable() {} + @EventHandler(priority=EventPriority.MONITOR) public void onPlayerJoinEvent(PlayerJoinEvent event) { - updatePlayerCap(); + updatePlayerCap(getPlayerCount()); } - + @EventHandler(priority=EventPriority.MONITOR) public void onPlayerQuitEvent(PlayerQuitEvent event) { - updatePlayerCap(); + updatePlayerCap(getPlayerCount() - 1); } - + @EventHandler(priority=EventPriority.MONITOR) public void onPlayerKickEvent(PlayerKickEvent event) { - updatePlayerCap(); + updatePlayerCap(getPlayerCount() - 1); } - + public void setPlayerCap(int cap) { dynamicPlayerCap = cap; - updatePlayerCap(); + updatePlayerCap(getPlayerCount()); } - + public int getPlayerCap() { return dynamicPlayerCap; } - - private void updatePlayerCap() { - int playerCount = getPlayerCount(); + + private void updatePlayerCap(int playerCount) { if (playerCount >= dynamicPlayerCap) { - setWhitelist(true); + setWhitelist(true, playerCount); } else if (playerCount < dynamicPlayerCap) { - setWhitelist(false); + setWhitelist(false, playerCount); } } - - private void setWhitelist(boolean enabled) { - Bukkit.setWhitelist(enabled); - Integer playerCount = getPlayerCount(); - Integer cap = getPlayerCap(); - String message = playerCount.toString()+"/"+cap.toString()+" players online "; - if (enabled && !whiteListEnabled) { - message+=" dynamic cap enabled."; - log.info(message); - } else if (!enabled && whiteListEnabled) { - message+=" dynamic cap disabled."; + + private void setWhitelist(boolean enabled, int playerCount) { + if ((enabled && !whiteListEnabled) || (!enabled && whiteListEnabled)) { + Integer cap = getPlayerCap(); + String state_message = "disabled"; + if (enabled) { + state_message = "enabled"; + } + String message = String.format( + "%d/%d players online dynamic cap %s.", + playerCount, cap, state_message); log.info(message); } whiteListEnabled = enabled; + Bukkit.setWhitelist(enabled); } - + public int getPlayerCount() { return this.getServer().getOnlinePlayers().length; } From b8069641e9cb3aa9f4c17b7221efa872b062edeb Mon Sep 17 00:00:00 2001 From: igotyou Date: Tue, 21 May 2013 03:13:27 +0200 Subject: [PATCH 05/19] Added a login queue --- dyncap.jar | Bin 0 -> 6913 bytes src/com/untamedears/DynCap/DynCapPlugin.java | 104 +++++++++++++++++-- src/com/untamedears/DynCap/QueueItem.java | 33 ++++++ 3 files changed, 127 insertions(+), 10 deletions(-) create mode 100644 dyncap.jar create mode 100644 src/com/untamedears/DynCap/QueueItem.java diff --git a/dyncap.jar b/dyncap.jar new file mode 100644 index 0000000000000000000000000000000000000000..69feabf6a08ac133fff3341b63dd6b1118419f14 GIT binary patch literal 6913 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 loginQueue = new ArrayList(); public void onEnable() { log = this.getLogger(); @@ -32,11 +31,18 @@ public void onEnable() { // Give the console permission ConsoleCommandSender console = getServer().getConsoleSender(); console.addAttachment(this, "dyncap.console", true); + this.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() + { + @Override + public void run() + { + removeOldQueueItems(loginQueue, 60); + }}, 0L, 20); } public void onDisable() {} - @EventHandler(priority=EventPriority.MONITOR) + /*@EventHandler(priority=EventPriority.MONITOR) public void onPlayerJoinEvent(PlayerJoinEvent event) { updatePlayerCap(getPlayerCount()); } @@ -49,7 +55,7 @@ public void onPlayerQuitEvent(PlayerQuitEvent event) { @EventHandler(priority=EventPriority.MONITOR) public void onPlayerKickEvent(PlayerKickEvent event) { updatePlayerCap(getPlayerCount() - 1); - } + }*/ public void setPlayerCap(int cap) { dynamicPlayerCap = cap; @@ -62,12 +68,12 @@ public int getPlayerCap() { private void updatePlayerCap(int playerCount) { if (playerCount >= dynamicPlayerCap) { - setWhitelist(true, playerCount); + //setWhitelist(true, playerCount); } else if (playerCount < dynamicPlayerCap) { - setWhitelist(false, playerCount); + //setWhitelist(false, playerCount); } } - +/* private void setWhitelist(boolean enabled, int playerCount) { if ((enabled && !whiteListEnabled) || (!enabled && whiteListEnabled)) { Integer cap = getPlayerCap(); @@ -82,9 +88,87 @@ private void setWhitelist(boolean enabled, int playerCount) { } whiteListEnabled = enabled; Bukkit.setWhitelist(enabled); - } + }*/ public int getPlayerCount() { return this.getServer().getOnlinePlayers().length; } + + @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false) + public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) + { + //log.info("login event called!"); + String playerName = event.getName().toLowerCase(); + int position = getQueuePosition(loginQueue, playerName); + //log.info("posistion is:" + position); + //if the server is not full, and there is no queue + if (getPlayerCount() < getPlayerCap() && loginQueue.isEmpty()) + { + //log.info("allowed " + playerName + " to join, server is not full and has no queue!"); + event.allow(); + return; + } + //server is either full, or has a queue + else + { + //if the server has a queue, but there is enough space for the player + if(position != -1 && position + 1 <= getPlayerCap() - getPlayerCount()) + { + //log.info("allowed " + playerName + " to join, server is not full and he is in a queue!"); + event.allow(); + loginQueue.remove(position); + return; + } + //if the server has a queue, and there is not enough space for the player + else if (position != -1) + { + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "Your posistion in the queue is: " + (position + 1) + ". Please try again in 15 seconds"); + return; + } + else + { + //log.info("disallowed " + playerName + " added him to queue"); + QueueItem queueItem = new QueueItem(playerName); + loginQueue.add(queueItem); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "The server is full, you have been added to the queue. Your position is:" + loginQueue.size() + ". Please try again in 15 seconds"); + return; + } + } + + } + //returning -1 means error/not contained + private int getQueuePosition(List queue, String name) + { + if (queue.isEmpty()) + { + //log.info("queue is empty!"); + return -1; + } + for (int x = 0; x < queue.size(); x++) + { + //log.info("x is:" + x + " and queueItem name is " + queue.get(x).getName() + " while paramter is " + name); + if (queue.get(x).getName().equalsIgnoreCase(name)) + { + return x; + } + } + return -1; + } + //timeOut is in seconds + private void removeOldQueueItems(List queue, int timeOut) + { + if (queue.isEmpty()) + { + return; + } + for (int x = 0; x< queue.size(); x++) + { + if (queue.get(x).getSecondsSinceLastAttempt() > timeOut) + { + queue.remove(x); + x--; + } + } + } } + diff --git a/src/com/untamedears/DynCap/QueueItem.java b/src/com/untamedears/DynCap/QueueItem.java new file mode 100644 index 0000000..a0cfac5 --- /dev/null +++ b/src/com/untamedears/DynCap/QueueItem.java @@ -0,0 +1,33 @@ +package com.untamedears.DynCap; + +import java.util.Date; +import java.util.concurrent.TimeUnit; + +public class QueueItem +{ + private Date lastAttempt; + private String name; + + public QueueItem(String playerName) + { + lastAttempt = new Date(); + name = playerName; + } + public Date getLastAttempt() + { + return lastAttempt; + } + public int getSecondsSinceLastAttempt() + { + Date now = new Date(); + return (int) TimeUnit.MILLISECONDS.toSeconds(now.getTime() - lastAttempt.getTime()); + } + public void updateDate() + { + lastAttempt = new Date(); + } + public String getName() + { + return name; + } +} From d26ed17ebea6a8b28c13cffee4074159323f8cc9 Mon Sep 17 00:00:00 2001 From: igotyou Date: Tue, 21 May 2013 03:25:32 +0200 Subject: [PATCH 06/19] small bug fix --- dyncap.jar | Bin 6913 -> 6905 bytes src/com/untamedears/DynCap/DynCapPlugin.java | 11 ++++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/dyncap.jar b/dyncap.jar index 69feabf6a08ac133fff3341b63dd6b1118419f14..e72bfcf5dafab82963642e78308769c37a617976 100644 GIT binary patch delta 2915 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 Ny&66Sniv28007EYsx|-s delta 2952 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 diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index febc022..39f87ed 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -59,20 +59,20 @@ public void onPlayerKickEvent(PlayerKickEvent event) { public void setPlayerCap(int cap) { dynamicPlayerCap = cap; - updatePlayerCap(getPlayerCount()); + //updatePlayerCap(getPlayerCount()); } public int getPlayerCap() { return dynamicPlayerCap; } - private void updatePlayerCap(int playerCount) { + /*private void updatePlayerCap(int playerCount) { if (playerCount >= dynamicPlayerCap) { //setWhitelist(true, playerCount); } else if (playerCount < dynamicPlayerCap) { //setWhitelist(false, playerCount); } - } + }*/ /* private void setWhitelist(boolean enabled, int playerCount) { if ((enabled && !whiteListEnabled) || (!enabled && whiteListEnabled)) { @@ -122,7 +122,8 @@ public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) //if the server has a queue, and there is not enough space for the player else if (position != -1) { - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "Your posistion in the queue is: " + (position + 1) + ". Please try again in 15 seconds"); + loginQueue.get(position).updateDate(); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "Your posistion in the queue is: " + (position + 1) + ". Please try again in no less than 10 seconds, and no more than 60 seconds."); return; } else @@ -130,7 +131,7 @@ else if (position != -1) //log.info("disallowed " + playerName + " added him to queue"); QueueItem queueItem = new QueueItem(playerName); loginQueue.add(queueItem); - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "The server is full, you have been added to the queue. Your position is:" + loginQueue.size() + ". Please try again in 15 seconds"); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "The server is full, you have been added to the login queue. Your current position is: " + loginQueue.size() + ". Please try again in no less than 10 seconds, and no more than 60 seconds."); return; } } From c8eb35abce9ae677a6f7ce4b4af1a3ffd73ebc3c Mon Sep 17 00:00:00 2001 From: igotyou Date: Tue, 21 May 2013 03:33:26 +0200 Subject: [PATCH 07/19] Punish people that join too fast --- dyncap.jar | Bin 6905 -> 6990 bytes src/com/untamedears/DynCap/DynCapPlugin.java | 9 +++++++++ 2 files changed, 9 insertions(+) diff --git a/dyncap.jar b/dyncap.jar index e72bfcf5dafab82963642e78308769c37a617976..506e636344921fbdce588d4b3491bbc355814806 100644 GIT binary patch delta 3031 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 ZP)h{{000002mlBGNdf=>?-&38005p7zu5o) delta 2930 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 diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index 39f87ed..b141834 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -122,9 +122,18 @@ public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) //if the server has a queue, and there is not enough space for the player else if (position != -1) { + if (loginQueue.get(position).getSecondsSinceLastAttempt() < 5) + { + loginQueue.remove(position); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "You rejoined way to quick, you have been moved to the end of the login queue. Next time please join no less than every 10 seconds."); + return; + } + else + { loginQueue.get(position).updateDate(); event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "Your posistion in the queue is: " + (position + 1) + ". Please try again in no less than 10 seconds, and no more than 60 seconds."); return; + } } else { From 44232a1c17429c606dfb301a106c1c97a1c57496 Mon Sep 17 00:00:00 2001 From: shadowjay1 Date: Tue, 21 May 2013 01:53:36 -0400 Subject: [PATCH 08/19] Untested fix to not showing the actual player cap I am unable to test this at the moment, but unless I somehow missed a mistake, this should work. --- src/com/untamedears/DynCap/DynCapPlugin.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index b141834..dedbf8c 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -9,6 +9,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerPreLoginEvent; +import org.bukkit.event.server.ServerListPingEvent; import org.bukkit.plugin.java.JavaPlugin; @@ -41,6 +42,11 @@ public void run() } public void onDisable() {} + + @EventHandler + public void onServerListPingEvent(ServerListPingEvent event) { + event.setMaxPlayers(getPlayerCap()); + } /*@EventHandler(priority=EventPriority.MONITOR) public void onPlayerJoinEvent(PlayerJoinEvent event) { From 27a3ac32fe4468a51433cb88160e6ac5924628ab Mon Sep 17 00:00:00 2001 From: igotyou Date: Tue, 21 May 2013 13:53:13 +0200 Subject: [PATCH 09/19] Added a config file, with a queue whitelist --- config.yml | 34 ++++++++++++++ dyncap.jar | Bin 6990 -> 14895 bytes src/com/untamedears/DynCap/DynCapPlugin.java | 46 +++++++++++++++---- 3 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 config.yml diff --git a/config.yml b/config.yml new file mode 100644 index 0000000..066ea56 --- /dev/null +++ b/config.yml @@ -0,0 +1,34 @@ +# firstJoin is the message that gets sent to a client, if it tries to connect when the server has a login queue. +# %d is the queue position. Remember to include %d somewhere in the string, but only once, otherwise errors will occur. +# +# toFastJoin is the message that gets sent to a client, if the client joins before minimumjointime has elapsed. +# there are no %d in this strng. Only text. +# +# updateMessage is the message that gets sent to a client, when it connects after having being added to the queue. +# %d is the queue position. Remember to include %d somewhere in the string, but only once, otherwise errors will occur. +# +messages: + firstJoin: The server is full, you have been added to the login queue. Your current position is %d. Please try again in no less than 10 seconds, and no more than 60 seconds. + toFastJoin: You rejoined way to quick, you have been moved to the end of the login queue. Next time please join no less than every 10 seconds. + updateMessage: Your position in the queue is %d. Please try again in no less than 10 seconds, and no more than 60 seconds. +# all timers are in seconds. +timers: + # + # minimumJoinTime is the amount of time that must at least elapse, before a player tries to rejoin. + # If minimumJoinTime has not elapsed before they rejoin, they get removed from the login queue. + # + minimumJoinTime: 5 + # + # timeOutTime is the amount of time that can elapse, since a player last tried to join the server, + # before they are removed from the login queue. + # + timeOutTime: 60 +# +# whiteListedPlayers: a list of players that can join imediatetly, even if there is a login queue. +# Even though case is ignored in the code. Ie would recomend getting the case right. +# Because of config files being weird there needs to be something after the colon. +# However the right side of the colon is never read, so just make it something like the username again. +# +whiteListedPlayers: + ttk2: ttk2 + notch: notch \ No newline at end of file diff --git a/dyncap.jar b/dyncap.jar index 506e636344921fbdce588d4b3491bbc355814806..ac8e17502ecb45d2cdf440a1c39ed2aee351031d 100644 GIT binary patch delta 11844 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 delta 3973 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 JXLSJp{s$w{Iye9T diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index dedbf8c..b1c3ff4 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -1,10 +1,12 @@ package com.untamedears.DynCap; import java.util.ArrayList; import java.util.List; +import java.util.Set; import java.util.logging.Logger; import org.bukkit.Bukkit; import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -17,9 +19,15 @@ public class DynCapPlugin extends JavaPlugin implements Listener { private DynCapCommands commands; private int dynamicPlayerCap = 1000; private Logger log; - private boolean whiteListEnabled = false; + //private boolean whiteListEnabled = false; private List loginQueue = new ArrayList(); - + private String firstJoinMessage; + private String updateMessage; + private String toFastJoinMessage; + private int minimumJoinTime; + private int timeOutTime; + private Set whiteListedPlayers; + public void onEnable() { log = this.getLogger(); commands = new DynCapCommands(this, log); @@ -32,19 +40,31 @@ public void onEnable() { // Give the console permission ConsoleCommandSender console = getServer().getConsoleSender(); console.addAttachment(this, "dyncap.console", true); + + this.saveDefaultConfig(); + FileConfiguration config = getConfig(); + firstJoinMessage = config.getString("messages.firstJoin", "The server is full, you have been added to the login queue. Your current position is %d. Please try again in no less than 10 seconds, and no more than 60 seconds."); + //firstJoinMessage.replace("^d^", "%d"); + toFastJoinMessage = config.getString("messages.toFastJoin", "You rejoined way to quick, you have been moved to the end of the login queue. Next time please join no less than every 10 seconds."); + updateMessage = config.getString("messages.updateMessage", "Your posistion in the queue is %d. Please try again in no less than 10 seconds, and no more than 60 seconds."); + //updateMessage.replace("^d^", "%d"); + minimumJoinTime = config.getInt("timers.minimumJoinTime", 5); + timeOutTime = config.getInt("timers.timeOutTime", 60); + whiteListedPlayers = config.getConfigurationSection("whiteListedPlayers").getKeys(false); this.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { @Override public void run() { - removeOldQueueItems(loginQueue, 60); - }}, 0L, 20); + removeOldQueueItems(loginQueue, timeOutTime); + }}, 0L, 20); } public void onDisable() {} @EventHandler - public void onServerListPingEvent(ServerListPingEvent event) { + public void onServerListPingEvent(ServerListPingEvent event) + { event.setMaxPlayers(getPlayerCap()); } @@ -105,6 +125,14 @@ public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) { //log.info("login event called!"); String playerName = event.getName().toLowerCase(); + + //if the player is whitelisted(admin/mod) + if (whiteListedPlayers.contains(playerName)) + { + event.allow(); + return; + } + int position = getQueuePosition(loginQueue, playerName); //log.info("posistion is:" + position); //if the server is not full, and there is no queue @@ -128,16 +156,16 @@ public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) //if the server has a queue, and there is not enough space for the player else if (position != -1) { - if (loginQueue.get(position).getSecondsSinceLastAttempt() < 5) + if (loginQueue.get(position).getSecondsSinceLastAttempt() <= minimumJoinTime) { loginQueue.remove(position); - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "You rejoined way to quick, you have been moved to the end of the login queue. Next time please join no less than every 10 seconds."); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, toFastJoinMessage); return; } else { loginQueue.get(position).updateDate(); - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "Your posistion in the queue is: " + (position + 1) + ". Please try again in no less than 10 seconds, and no more than 60 seconds."); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, String.format(updateMessage, (position + 1))); return; } } @@ -146,7 +174,7 @@ else if (position != -1) //log.info("disallowed " + playerName + " added him to queue"); QueueItem queueItem = new QueueItem(playerName); loginQueue.add(queueItem); - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "The server is full, you have been added to the login queue. Your current position is: " + loginQueue.size() + ". Please try again in no less than 10 seconds, and no more than 60 seconds."); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, String.format(firstJoinMessage, loginQueue.size())); return; } } From 1f3ea2f59e894b036bf6dce1b489d7da7d45b1ea Mon Sep 17 00:00:00 2001 From: igotyou Date: Tue, 21 May 2013 14:52:08 +0200 Subject: [PATCH 10/19] Fixed a small bug and added a few commands. --- dyncap.jar | Bin 14895 -> 8204 bytes plugin.yml | 8 ++++ .../untamedears/DynCap/DynCapCommands.java | 25 ++++++++++- src/com/untamedears/DynCap/DynCapPlugin.java | 41 +++++++++++++----- 4 files changed, 62 insertions(+), 12 deletions(-) diff --git a/dyncap.jar b/dyncap.jar index ac8e17502ecb45d2cdf440a1c39ed2aee351031d..6d98ca6b0e18eae9f493554161b217b4ce91cf1b 100644 GIT binary patch delta 6252 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 delta 12982 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 diff --git a/plugin.yml b/plugin.yml index 25f433d..d0c2a4d 100644 --- a/plugin.yml +++ b/plugin.yml @@ -11,6 +11,14 @@ commands: description: Displays the current player cap usage: /getcap permission: dyncap.console + getqueuesize: + description: Displays the current player queue size + usage: /getqueuesize + permission: dyncap.console + reloadqueue: + description: Reload the config.yml of dyncap + usage: /reloadQueue + permission: dyncap.console permissions: dyncap.console: description: Console commands for DynCap diff --git a/src/com/untamedears/DynCap/DynCapCommands.java b/src/com/untamedears/DynCap/DynCapCommands.java index 15c22bc..0aa6657 100644 --- a/src/com/untamedears/DynCap/DynCapCommands.java +++ b/src/com/untamedears/DynCap/DynCapCommands.java @@ -23,14 +23,19 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String if (sender instanceof Player) { return false; } - if (label.equalsIgnoreCase("setcap")) { + if (label.equalsIgnoreCase("setCap")) { return setcapCmd(args); - } else if (label.equalsIgnoreCase("getcap")) { + } else if (label.equalsIgnoreCase("getCap")) { return getcapCmd(); + } else if (label.equalsIgnoreCase("getQueueSize")) { + return getQueueSize(); + } else if (label.equalsIgnoreCase("reloadQueue")) { + return reloadQueueConfig(); } return false; } + private boolean setcapCmd(String[] args) { if (args.length < 1 || args.length > 1) { return false; } int cap = 1000; @@ -54,5 +59,21 @@ private boolean getcapCmd() { log.info(message); return true; } + + private boolean getQueueSize() + { + Integer queueSize = plugin.getQueueSize(); + log.info(queueSize + " players in the queue."); + return true; + } + + private boolean reloadQueueConfig() + { + plugin.reloadConfig(); + plugin.initConfig(); + log.info("queue config reloaded"); + return true; + } + } diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index b1c3ff4..8d902eb 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -42,15 +42,9 @@ public void onEnable() { console.addAttachment(this, "dyncap.console", true); this.saveDefaultConfig(); - FileConfiguration config = getConfig(); - firstJoinMessage = config.getString("messages.firstJoin", "The server is full, you have been added to the login queue. Your current position is %d. Please try again in no less than 10 seconds, and no more than 60 seconds."); - //firstJoinMessage.replace("^d^", "%d"); - toFastJoinMessage = config.getString("messages.toFastJoin", "You rejoined way to quick, you have been moved to the end of the login queue. Next time please join no less than every 10 seconds."); - updateMessage = config.getString("messages.updateMessage", "Your posistion in the queue is %d. Please try again in no less than 10 seconds, and no more than 60 seconds."); - //updateMessage.replace("^d^", "%d"); - minimumJoinTime = config.getInt("timers.minimumJoinTime", 5); - timeOutTime = config.getInt("timers.timeOutTime", 60); - whiteListedPlayers = config.getConfigurationSection("whiteListedPlayers").getKeys(false); + + initConfig(); + this.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { @Override @@ -62,6 +56,19 @@ public void run() public void onDisable() {} + public void initConfig() + { + FileConfiguration config = getConfig(); + firstJoinMessage = config.getString("messages.firstJoin", "The server is full, you have been added to the login queue. Your current position is %d. Please try again in no less than 10 seconds, and no more than 60 seconds."); + //firstJoinMessage.replace("^d^", "%d"); + toFastJoinMessage = config.getString("messages.toFastJoin", "You rejoined way to quick, you have been moved to the end of the login queue. Next time please join no less than every 10 seconds."); + updateMessage = config.getString("messages.updateMessage", "Your posistion in the queue is %d. Please try again in no less than 10 seconds, and no more than 60 seconds."); + //updateMessage.replace("^d^", "%d"); + minimumJoinTime = config.getInt("timers.minimumJoinTime", 5); + timeOutTime = config.getInt("timers.timeOutTime", 60); + whiteListedPlayers = config.getConfigurationSection("whiteListedPlayers").getKeys(false); + } + @EventHandler public void onServerListPingEvent(ServerListPingEvent event) { @@ -120,6 +127,10 @@ public int getPlayerCount() { return this.getServer().getOnlinePlayers().length; } + public int getQueueSize() + { + return loginQueue.size(); + } @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false) public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) { @@ -136,7 +147,7 @@ public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) int position = getQueuePosition(loginQueue, playerName); //log.info("posistion is:" + position); //if the server is not full, and there is no queue - if (getPlayerCount() < getPlayerCap() && loginQueue.isEmpty()) + if ((getPlayerCount() < getPlayerCap() && loginQueue.isEmpty())) { //log.info("allowed " + playerName + " to join, server is not full and has no queue!"); event.allow(); @@ -171,6 +182,16 @@ else if (position != -1) } else { + if ((!loginQueue.isEmpty() && loginQueue.size() <= (getPlayerCap() - getPlayerCount()))) + { + //if for some reason the person is in the queue remove them + if (position == -1) + { + loginQueue.remove(position); + } + event.allow(); + return; + } //log.info("disallowed " + playerName + " added him to queue"); QueueItem queueItem = new QueueItem(playerName); loginQueue.add(queueItem); From a626b0b52d9cac8958a43ca02d4c52d65b6885a8 Mon Sep 17 00:00:00 2001 From: igotyou Date: Tue, 21 May 2013 15:08:11 +0200 Subject: [PATCH 11/19] Small bug fix --- dyncap.jar | Bin 8204 -> 8204 bytes src/com/untamedears/DynCap/DynCapPlugin.java | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/dyncap.jar b/dyncap.jar index 6d98ca6b0e18eae9f493554161b217b4ce91cf1b..f8c2bc71b97f3de23d7a4ce798152e88fb6084c5 100644 GIT binary patch delta 3211 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 delta 3209 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 diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index 8d902eb..59da721 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -185,7 +185,7 @@ else if (position != -1) if ((!loginQueue.isEmpty() && loginQueue.size() <= (getPlayerCap() - getPlayerCount()))) { //if for some reason the person is in the queue remove them - if (position == -1) + if (position != -1) { loginQueue.remove(position); } From 2d614a8ffe78aa8ee0c95ba124bd8c6946c2a5a2 Mon Sep 17 00:00:00 2001 From: igotyou Date: Tue, 21 May 2013 21:42:30 +0200 Subject: [PATCH 12/19] Many small changes here and there. A completetly new command: getqueueinfo (alias gqi) displays information about who's in the queue. --- config.yml | 11 +- dyncap.jar | Bin 8204 -> 9698 bytes plugin.yml | 7 +- .../untamedears/DynCap/DynCapCommands.java | 109 ++++++++++++++++-- src/com/untamedears/DynCap/DynCapPlugin.java | 74 +++++------- 5 files changed, 143 insertions(+), 58 deletions(-) diff --git a/config.yml b/config.yml index 066ea56..d081dcb 100644 --- a/config.yml +++ b/config.yml @@ -2,15 +2,18 @@ # %d is the queue position. Remember to include %d somewhere in the string, but only once, otherwise errors will occur. # # toFastJoin is the message that gets sent to a client, if the client joins before minimumjointime has elapsed. -# there are no %d in this strng. Only text. +# there is no %d in this strng. Only text. # # updateMessage is the message that gets sent to a client, when it connects after having being added to the queue. # %d is the queue position. Remember to include %d somewhere in the string, but only once, otherwise errors will occur. # +# BanMessage is the message that gets sent to a client if the client is on the ban list. +# there is no %d in this strng. Only text. messages: firstJoin: The server is full, you have been added to the login queue. Your current position is %d. Please try again in no less than 10 seconds, and no more than 60 seconds. toFastJoin: You rejoined way to quick, you have been moved to the end of the login queue. Next time please join no less than every 10 seconds. updateMessage: Your position in the queue is %d. Please try again in no less than 10 seconds, and no more than 60 seconds. + banMessage: You are banned. If you believe this is a mistake, message modmail at www.reddit.com/r/civcraft # all timers are in seconds. timers: # @@ -23,6 +26,8 @@ timers: # before they are removed from the login queue. # timeOutTime: 60 +other: + initialDynCap: 175 # # whiteListedPlayers: a list of players that can join imediatetly, even if there is a login queue. # Even though case is ignored in the code. Ie would recomend getting the case right. @@ -31,4 +36,6 @@ timers: # whiteListedPlayers: ttk2: ttk2 - notch: notch \ No newline at end of file + hammond_of_texas: hammond_of_texas + ariehkovler: ariehkovler + spock_bot: spock_bot \ No newline at end of file diff --git a/dyncap.jar b/dyncap.jar index f8c2bc71b97f3de23d7a4ce798152e88fb6084c5..8e0079b42aa6b1091250fa586b57ad96211f829a 100644 GIT binary patch delta 8458 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 S|2Q^U@IDp!>n6H?X8Rw|CnO~R delta 6921 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 optional if first paramter is a index + aliases: gqi + permission: dyncap.console permissions: dyncap.console: description: Console commands for DynCap diff --git a/src/com/untamedears/DynCap/DynCapCommands.java b/src/com/untamedears/DynCap/DynCapCommands.java index 0aa6657..6c5bf3a 100644 --- a/src/com/untamedears/DynCap/DynCapCommands.java +++ b/src/com/untamedears/DynCap/DynCapCommands.java @@ -5,6 +5,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; public class DynCapCommands implements CommandExecutor { @@ -19,18 +20,23 @@ public DynCapCommands(DynCapPlugin p, Logger l) { @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - //commands can only be issued from the console + + if (label.equalsIgnoreCase("getQueueSize") || label.equalsIgnoreCase("gqs")) { + return getQueueSize(sender); + } + //commands below here can only be issued from the console if (sender instanceof Player) { return false; } + if (label.equalsIgnoreCase("setCap")) { return setcapCmd(args); } else if (label.equalsIgnoreCase("getCap")) { return getcapCmd(); - } else if (label.equalsIgnoreCase("getQueueSize")) { - return getQueueSize(); } else if (label.equalsIgnoreCase("reloadQueue")) { return reloadQueueConfig(); + } else if (label.equalsIgnoreCase("getqueueinfo") || label.equalsIgnoreCase("gqi")) { + return getqueueinfo(args); } return false; } @@ -60,11 +66,22 @@ private boolean getcapCmd() { return true; } - private boolean getQueueSize() + private boolean getQueueSize(CommandSender sender) { Integer queueSize = plugin.getQueueSize(); - log.info(queueSize + " players in the queue."); - return true; + if (sender instanceof Player) + { + Player player = (Player) sender; + player.sendMessage(queueSize + " players are in the queue."); + return true; + } + else if (sender instanceof ConsoleCommandSender) + { + log.info(queueSize + " players in the queue."); + return true; + } + + return false; } private boolean reloadQueueConfig() @@ -74,6 +91,82 @@ private boolean reloadQueueConfig() log.info("queue config reloaded"); return true; } - - + + private boolean getqueueinfo(String[] args) + { + if (args.length < 1 || args.length > 2) { return false; } + + if (args.length == 1) + { + //display info on 1 slot + if (isInteger(args[0])) + { + int startIndex = (Integer.parseInt(args[0]) - 1); + QueueItem queueItem = plugin.getQueueItem(startIndex); + if (queueItem != null) + { + log.info("Player name is " + queueItem.getName() + " . " + queueItem.getSecondsSinceLastAttempt() + " seconds have elapsed since " + queueItem.getName() + "'s last join attempt."); + return true; + } + else + { + log.info("Could not find information about index " + args[0]); + return false; + } + } + //search by name + else + { + String playerName = args[0]; + int index = plugin.getQueuePosition(playerName); + if (index != -1) + { + QueueItem queueItem = plugin.getQueueItem(index); + log.info(playerName + " is number " + (index+1) + " in the login queue. " + queueItem.getSecondsSinceLastAttempt() + " seconds have elapsed since " + queueItem.getName() + "'s last join attempt."); + return true; + } + else + { + log.info("Could not find " + playerName + " in the queue."); + return false; + } + } + } + else if (args.length == 2) + { + if (isInteger(args[0]) && isInteger(args[1])) + { + int startIndex = (Integer.parseInt(args[0]) - 1); + int endIndex = (Integer.parseInt(args[1]) - 1); + for (int x = startIndex; x <= endIndex; x++) + { + QueueItem queueItem = plugin.getQueueItem(x); + if (queueItem != null) + { + log.info("Player name is " + queueItem.getName() + " . " + queueItem.getSecondsSinceLastAttempt() + " seconds have elapsed since " + queueItem.getName() + "'s last join attempt."); + } + else + { + log.info("Could not find information about index " + (x + 1)); + } + } + return true; + } + else + { + log.info("Please enter two integers above 0"); + } + } + return false; + } + + private static boolean isInteger(String s) { + try { + Integer.parseInt(s); + } catch(NumberFormatException e) { + return false; + } + // only got here if we didn't return false + return true; + } } diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index 59da721..57b0f3f 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -17,13 +17,14 @@ public class DynCapPlugin extends JavaPlugin implements Listener { private DynCapCommands commands; - private int dynamicPlayerCap = 1000; + private int dynamicPlayerCap = 175; private Logger log; //private boolean whiteListEnabled = false; private List loginQueue = new ArrayList(); private String firstJoinMessage; private String updateMessage; private String toFastJoinMessage; + private String banMessage; private int minimumJoinTime; private int timeOutTime; private Set whiteListedPlayers; @@ -60,12 +61,12 @@ public void initConfig() { FileConfiguration config = getConfig(); firstJoinMessage = config.getString("messages.firstJoin", "The server is full, you have been added to the login queue. Your current position is %d. Please try again in no less than 10 seconds, and no more than 60 seconds."); - //firstJoinMessage.replace("^d^", "%d"); toFastJoinMessage = config.getString("messages.toFastJoin", "You rejoined way to quick, you have been moved to the end of the login queue. Next time please join no less than every 10 seconds."); updateMessage = config.getString("messages.updateMessage", "Your posistion in the queue is %d. Please try again in no less than 10 seconds, and no more than 60 seconds."); - //updateMessage.replace("^d^", "%d"); + banMessage = config.getString("messages.banMessage", "You are banned. If you believe this is a mistake, message modmail at www.reddit.com/r/civcraft"); minimumJoinTime = config.getInt("timers.minimumJoinTime", 5); timeOutTime = config.getInt("timers.timeOutTime", 60); + dynamicPlayerCap = config.getInt("other.initialDynCap", 175); whiteListedPlayers = config.getConfigurationSection("whiteListedPlayers").getKeys(false); } @@ -75,21 +76,6 @@ public void onServerListPingEvent(ServerListPingEvent event) event.setMaxPlayers(getPlayerCap()); } - /*@EventHandler(priority=EventPriority.MONITOR) - public void onPlayerJoinEvent(PlayerJoinEvent event) { - updatePlayerCap(getPlayerCount()); - } - - @EventHandler(priority=EventPriority.MONITOR) - public void onPlayerQuitEvent(PlayerQuitEvent event) { - updatePlayerCap(getPlayerCount() - 1); - } - - @EventHandler(priority=EventPriority.MONITOR) - public void onPlayerKickEvent(PlayerKickEvent event) { - updatePlayerCap(getPlayerCount() - 1); - }*/ - public void setPlayerCap(int cap) { dynamicPlayerCap = cap; //updatePlayerCap(getPlayerCount()); @@ -99,30 +85,6 @@ public int getPlayerCap() { return dynamicPlayerCap; } - /*private void updatePlayerCap(int playerCount) { - if (playerCount >= dynamicPlayerCap) { - //setWhitelist(true, playerCount); - } else if (playerCount < dynamicPlayerCap) { - //setWhitelist(false, playerCount); - } - }*/ -/* - private void setWhitelist(boolean enabled, int playerCount) { - if ((enabled && !whiteListEnabled) || (!enabled && whiteListEnabled)) { - Integer cap = getPlayerCap(); - String state_message = "disabled"; - if (enabled) { - state_message = "enabled"; - } - String message = String.format( - "%d/%d players online dynamic cap %s.", - playerCount, cap, state_message); - log.info(message); - } - whiteListEnabled = enabled; - Bukkit.setWhitelist(enabled); - }*/ - public int getPlayerCount() { return this.getServer().getOnlinePlayers().length; } @@ -131,6 +93,19 @@ public int getQueueSize() { return loginQueue.size(); } + + public QueueItem getQueueItem(int queueIndex) + { + if (queueIndex < 0 || queueIndex >= loginQueue.size()) + { + return null; + } + else + { + return loginQueue.get(queueIndex); + } + } + @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false) public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) { @@ -143,8 +118,13 @@ public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) event.allow(); return; } + if(this.getServer().getBannedPlayers().contains(this.getServer().getOfflinePlayer(event.getName()))) + { + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED, banMessage); + return; + } - int position = getQueuePosition(loginQueue, playerName); + int position = getQueuePosition(playerName); //log.info("posistion is:" + position); //if the server is not full, and there is no queue if ((getPlayerCount() < getPlayerCap() && loginQueue.isEmpty())) @@ -202,17 +182,17 @@ else if (position != -1) } //returning -1 means error/not contained - private int getQueuePosition(List queue, String name) + public int getQueuePosition(String name) { - if (queue.isEmpty()) + if (loginQueue.isEmpty()) { //log.info("queue is empty!"); return -1; } - for (int x = 0; x < queue.size(); x++) + for (int x = 0; x < loginQueue.size(); x++) { //log.info("x is:" + x + " and queueItem name is " + queue.get(x).getName() + " while paramter is " + name); - if (queue.get(x).getName().equalsIgnoreCase(name)) + if (loginQueue.get(x).getName().equalsIgnoreCase(name)) { return x; } From b574a17214bc0249032e112215424e1f04b0305d Mon Sep 17 00:00:00 2001 From: igotyou Date: Tue, 21 May 2013 23:22:18 +0200 Subject: [PATCH 13/19] Added a average join time command. --- dyncap.jar | Bin 9698 -> 10437 bytes plugin.yml | 10 ++++++ .../untamedears/DynCap/DynCapCommands.java | 25 ++++++++++++-- src/com/untamedears/DynCap/DynCapPlugin.java | 31 ++++++++++++++++-- src/com/untamedears/DynCap/QueueItem.java | 7 ++++ 5 files changed, 67 insertions(+), 6 deletions(-) diff --git a/dyncap.jar b/dyncap.jar index 8e0079b42aa6b1091250fa586b57ad96211f829a..eaf2f17f63559af3bab16318cada2c3052e884e5 100644 GIT binary patch delta 8910 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�fsT+I4i2GEeb6*;I&_p0 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 JHq-p0{ST!-j9&l% diff --git a/plugin.yml b/plugin.yml index 983f052..fd3a0dc 100644 --- a/plugin.yml +++ b/plugin.yml @@ -24,6 +24,16 @@ commands: usage: /getqueueinfo optional if first paramter is a index aliases: gqi permission: dyncap.console + getjoinaverage: + description: Gets the average amount of time spent in the login queue, before joining. + usage: /getjoinaverage + aliases: gja + permission: dyncap.console + resetjoinaverage: + description: Resets the average amount of time + usage: /resetjoinaverage + aliases: rja + permission: dyncap.console permissions: dyncap.console: description: Console commands for DynCap diff --git a/src/com/untamedears/DynCap/DynCapCommands.java b/src/com/untamedears/DynCap/DynCapCommands.java index 6c5bf3a..6400e86 100644 --- a/src/com/untamedears/DynCap/DynCapCommands.java +++ b/src/com/untamedears/DynCap/DynCapCommands.java @@ -36,12 +36,15 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String } else if (label.equalsIgnoreCase("reloadQueue")) { return reloadQueueConfig(); } else if (label.equalsIgnoreCase("getqueueinfo") || label.equalsIgnoreCase("gqi")) { - return getqueueinfo(args); + return getQueueInfo(args); + } else if (label.equalsIgnoreCase("getjoinaverage") || label.equalsIgnoreCase("gja")) { + return getJoinAverage(); + } else if (label.equalsIgnoreCase("resetjoinaverage") || label.equalsIgnoreCase("rja")) { + return resetJoinAverage(); } return false; } - private boolean setcapCmd(String[] args) { if (args.length < 1 || args.length > 1) { return false; } int cap = 1000; @@ -92,7 +95,7 @@ private boolean reloadQueueConfig() return true; } - private boolean getqueueinfo(String[] args) + private boolean getQueueInfo(String[] args) { if (args.length < 1 || args.length > 2) { return false; } @@ -169,4 +172,20 @@ private static boolean isInteger(String s) { // only got here if we didn't return false return true; } + + + private boolean resetJoinAverage() + { + plugin.resetAverageTimeToJoin(); + log.info("Average join time has been reset!"); + return true; + } + + private boolean getJoinAverage() + { + float average = plugin.getAverageTimeToJoin(); + log.info("Average join time is " + average + " seconds."); + return true; + } + } diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index 57b0f3f..11176bf 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -19,7 +19,8 @@ public class DynCapPlugin extends JavaPlugin implements Listener { private DynCapCommands commands; private int dynamicPlayerCap = 175; private Logger log; - //private boolean whiteListEnabled = false; + private float averageTimeToJoin = 0F; + private int numberOfJoins = 0; private List loginQueue = new ArrayList(); private String firstJoinMessage; private String updateMessage; @@ -52,7 +53,7 @@ public void onEnable() { public void run() { removeOldQueueItems(loginQueue, timeOutTime); - }}, 0L, 20); + }}, 0L, 100); } public void onDisable() {} @@ -105,7 +106,7 @@ public QueueItem getQueueItem(int queueIndex) return loginQueue.get(queueIndex); } } - + @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false) public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) { @@ -131,6 +132,7 @@ public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) { //log.info("allowed " + playerName + " to join, server is not full and has no queue!"); event.allow(); + updateAverageTimeToJoin(0); return; } //server is either full, or has a queue @@ -141,6 +143,7 @@ public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) { //log.info("allowed " + playerName + " to join, server is not full and he is in a queue!"); event.allow(); + updateAverageTimeToJoin(loginQueue.get(position).getSecondsSinceFirstAttempt()); loginQueue.remove(position); return; } @@ -169,6 +172,7 @@ else if (position != -1) { loginQueue.remove(position); } + updateAverageTimeToJoin(0); event.allow(); return; } @@ -198,7 +202,27 @@ public int getQueuePosition(String name) } } return -1; + } + + public void updateAverageTimeToJoin(int newJoinTime) + { + numberOfJoins++; + Float tempFloat = Integer.valueOf(numberOfJoins).floatValue(); + Float tempFloat2 = Integer.valueOf(newJoinTime).floatValue(); + averageTimeToJoin = ((tempFloat -1F)/tempFloat) * averageTimeToJoin + (tempFloat2/tempFloat); + } + + public void resetAverageTimeToJoin() + { + averageTimeToJoin = 0F; + numberOfJoins = 0; } + + public float getAverageTimeToJoin() + { + return averageTimeToJoin; + } + //timeOut is in seconds private void removeOldQueueItems(List queue, int timeOut) { @@ -215,5 +239,6 @@ private void removeOldQueueItems(List queue, int timeOut) } } } + } diff --git a/src/com/untamedears/DynCap/QueueItem.java b/src/com/untamedears/DynCap/QueueItem.java index a0cfac5..8a2bce0 100644 --- a/src/com/untamedears/DynCap/QueueItem.java +++ b/src/com/untamedears/DynCap/QueueItem.java @@ -5,12 +5,14 @@ public class QueueItem { + private Date firstAttempt; private Date lastAttempt; private String name; public QueueItem(String playerName) { lastAttempt = new Date(); + firstAttempt = new Date(); name = playerName; } public Date getLastAttempt() @@ -22,6 +24,11 @@ public int getSecondsSinceLastAttempt() Date now = new Date(); return (int) TimeUnit.MILLISECONDS.toSeconds(now.getTime() - lastAttempt.getTime()); } + public int getSecondsSinceFirstAttempt() + { + Date now = new Date(); + return (int) TimeUnit.MILLISECONDS.toSeconds(now.getTime() - firstAttempt.getTime()); + } public void updateDate() { lastAttempt = new Date(); From 33a936d110ef8d17d26f594256ecb7945461d486 Mon Sep 17 00:00:00 2001 From: igotyou Date: Fri, 24 May 2013 14:31:24 +0200 Subject: [PATCH 14/19] Added the permission dyncap.debug.getqueueinfo which alows players to use gqi. --- dyncap.jar | Bin 10437 -> 10499 bytes plugin.yml | 2 +- .../untamedears/DynCap/DynCapCommands.java | 59 ++++++++++-------- src/com/untamedears/DynCap/DynCapPlugin.java | 25 +++++--- 4 files changed, 51 insertions(+), 35 deletions(-) diff --git a/dyncap.jar b/dyncap.jar index eaf2f17f63559af3bab16318cada2c3052e884e5..1fcba568eed64582177b6db9e5222e51afeefc33 100644 GIT binary patch delta 9062 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 delta 9031 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 optional if first paramter is a index aliases: gqi - permission: dyncap.console + permission: dyncap.debug.getqueueinfo getjoinaverage: description: Gets the average amount of time spent in the login queue, before joining. usage: /getjoinaverage diff --git a/src/com/untamedears/DynCap/DynCapCommands.java b/src/com/untamedears/DynCap/DynCapCommands.java index 6400e86..2aaf05c 100644 --- a/src/com/untamedears/DynCap/DynCapCommands.java +++ b/src/com/untamedears/DynCap/DynCapCommands.java @@ -23,7 +23,10 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String if (label.equalsIgnoreCase("getQueueSize") || label.equalsIgnoreCase("gqs")) { return getQueueSize(sender); + } else if (label.equalsIgnoreCase("getqueueinfo") || label.equalsIgnoreCase("gqi")) { + return getQueueInfo(sender, args); } + //commands below here can only be issued from the console if (sender instanceof Player) { return false; @@ -35,8 +38,6 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String return getcapCmd(); } else if (label.equalsIgnoreCase("reloadQueue")) { return reloadQueueConfig(); - } else if (label.equalsIgnoreCase("getqueueinfo") || label.equalsIgnoreCase("gqi")) { - return getQueueInfo(args); } else if (label.equalsIgnoreCase("getjoinaverage") || label.equalsIgnoreCase("gja")) { return getJoinAverage(); } else if (label.equalsIgnoreCase("resetjoinaverage") || label.equalsIgnoreCase("rja")) { @@ -72,19 +73,7 @@ private boolean getcapCmd() { private boolean getQueueSize(CommandSender sender) { Integer queueSize = plugin.getQueueSize(); - if (sender instanceof Player) - { - Player player = (Player) sender; - player.sendMessage(queueSize + " players are in the queue."); - return true; - } - else if (sender instanceof ConsoleCommandSender) - { - log.info(queueSize + " players in the queue."); - return true; - } - - return false; + return sendMessage(sender, queueSize + " players are in the queue."); } private boolean reloadQueueConfig() @@ -95,8 +84,12 @@ private boolean reloadQueueConfig() return true; } - private boolean getQueueInfo(String[] args) + private boolean getQueueInfo(CommandSender sender, String[] args) { + if (!sender.hasPermission("dyncap.debug.getQueueInfo")) + { + return false; + } if (args.length < 1 || args.length > 2) { return false; } if (args.length == 1) @@ -108,13 +101,11 @@ private boolean getQueueInfo(String[] args) QueueItem queueItem = plugin.getQueueItem(startIndex); if (queueItem != null) { - log.info("Player name is " + queueItem.getName() + " . " + queueItem.getSecondsSinceLastAttempt() + " seconds have elapsed since " + queueItem.getName() + "'s last join attempt."); - return true; + return sendMessage(sender, startIndex + " " + queueItem.getName() + " " + queueItem.getSecondsSinceLastAttempt()); } else { - log.info("Could not find information about index " + args[0]); - return false; + return sendMessage(sender, "Could not find information about index " + args[0]); } } //search by name @@ -125,13 +116,11 @@ private boolean getQueueInfo(String[] args) if (index != -1) { QueueItem queueItem = plugin.getQueueItem(index); - log.info(playerName + " is number " + (index+1) + " in the login queue. " + queueItem.getSecondsSinceLastAttempt() + " seconds have elapsed since " + queueItem.getName() + "'s last join attempt."); - return true; + return sendMessage(sender, index + " " + queueItem.getName() + " " + queueItem.getSecondsSinceLastAttempt() ); } else { - log.info("Could not find " + playerName + " in the queue."); - return false; + return sendMessage(sender, "Could not find " + playerName + " in the queue."); } } } @@ -146,18 +135,18 @@ else if (args.length == 2) QueueItem queueItem = plugin.getQueueItem(x); if (queueItem != null) { - log.info("Player name is " + queueItem.getName() + " . " + queueItem.getSecondsSinceLastAttempt() + " seconds have elapsed since " + queueItem.getName() + "'s last join attempt."); + sendMessage(sender, x + " " + queueItem.getName() + " " + queueItem.getSecondsSinceLastAttempt() ); } else { - log.info("Could not find information about index " + (x + 1)); + sendMessage(sender, "Could not find information about index " + (x + 1)); } } return true; } else { - log.info("Please enter two integers above 0"); + sendMessage(sender, "Please enter two integers above 0"); } } return false; @@ -187,5 +176,21 @@ private boolean getJoinAverage() log.info("Average join time is " + average + " seconds."); return true; } + + private boolean sendMessage(CommandSender sender, String string) + { + if (sender instanceof Player) + { + Player player = (Player) sender; + player.sendMessage(string); + return true; + } + else if (sender instanceof ConsoleCommandSender) + { + log.info(string); + return true; + } + return false; + } } diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index 11176bf..8d331f5 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -52,7 +52,7 @@ public void onEnable() { @Override public void run() { - removeOldQueueItems(loginQueue, timeOutTime); + removeOldQueueItems(timeOutTime); }}, 0L, 100); } @@ -224,21 +224,32 @@ public float getAverageTimeToJoin() } //timeOut is in seconds - private void removeOldQueueItems(List queue, int timeOut) + private void removeOldQueueItems(int timeOut) { - if (queue.isEmpty()) + if (loginQueue.isEmpty()) { return; } - for (int x = 0; x< queue.size(); x++) + for (int x = 0; x< loginQueue.size(); x++) { - if (queue.get(x).getSecondsSinceLastAttempt() > timeOut) + if (loginQueue.get(x).getSecondsSinceLastAttempt() > timeOut) { - queue.remove(x); - x--; + loginQueue.remove(x); + x -- ; } } } + + private void moveQueueItem(int oldIndex, int newIndex) + { + if (oldIndex < 0 || oldIndex >= loginQueue.size() || newIndex < 0 || newIndex >= loginQueue.size()) + { + return; + } + QueueItem tempItem = loginQueue.get(oldIndex); + loginQueue.remove(oldIndex); + loginQueue.add(newIndex, tempItem); + } } From f09ff6ad54d2d7f688abcf234fad4e87647aa1bd Mon Sep 17 00:00:00 2001 From: igotyou Date: Fri, 24 May 2013 14:33:06 +0200 Subject: [PATCH 15/19] forgot to add orthzar --- config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config.yml b/config.yml index d081dcb..dabb470 100644 --- a/config.yml +++ b/config.yml @@ -38,4 +38,5 @@ whiteListedPlayers: ttk2: ttk2 hammond_of_texas: hammond_of_texas ariehkovler: ariehkovler - spock_bot: spock_bot \ No newline at end of file + spock_bot: spock_bot + orthzar: orthzar \ No newline at end of file From 3d24c2b410de0f217a4ea638b92f1f527a531c01 Mon Sep 17 00:00:00 2001 From: igotyou Date: Fri, 24 May 2013 23:28:13 +0200 Subject: [PATCH 16/19] Forgot to add permissions to be off by default... --- dyncap.jar | Bin 10499 -> 10525 bytes plugin.yml | 6 ++++++ 2 files changed, 6 insertions(+) diff --git a/dyncap.jar b/dyncap.jar index 1fcba568eed64582177b6db9e5222e51afeefc33..50476a7d6a4b75ae8b566e792d92b599d9ca17e8 100644 GIT binary patch delta 9861 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 ZZJquL2MhO4r|^F(_FsX|{eNcZe*s0Y%xeGu delta 9865 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 e7m$s;?LXo%H6_$n|C|f$? Date: Sun, 26 May 2013 00:54:07 +0200 Subject: [PATCH 17/19] Fixed permissions, added a try catch statement to the playerJoinEvent, also tried to make the code threadSafe. --- dyncap.jar | Bin 10525 -> 10758 bytes plugin.yml | 2 + .../untamedears/DynCap/DynCapCommands.java | 2 +- src/com/untamedears/DynCap/DynCapPlugin.java | 138 ++++++++++-------- 4 files changed, 80 insertions(+), 62 deletions(-) diff --git a/dyncap.jar b/dyncap.jar index 50476a7d6a4b75ae8b566e792d92b599d9ca17e8..b168455959b1d5bcfab488937603ef1a8d6f7523 100644 GIT binary patch delta 6809 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 zɾ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 delta 6571 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 diff --git a/plugin.yml b/plugin.yml index 5ff605f..4a3978f 100644 --- a/plugin.yml +++ b/plugin.yml @@ -38,6 +38,8 @@ permissions: dyncap.console: description: Console commands for DynCap default: false + children: + dyncap.debug.getqueueinfo: true dyncap.debug: description: Debug commands for DynCap default: false diff --git a/src/com/untamedears/DynCap/DynCapCommands.java b/src/com/untamedears/DynCap/DynCapCommands.java index 2aaf05c..54bb511 100644 --- a/src/com/untamedears/DynCap/DynCapCommands.java +++ b/src/com/untamedears/DynCap/DynCapCommands.java @@ -86,7 +86,7 @@ private boolean reloadQueueConfig() private boolean getQueueInfo(CommandSender sender, String[] args) { - if (!sender.hasPermission("dyncap.debug.getQueueInfo")) + if (!sender.hasPermission("dyncap.debug.getqueueinfo")) { return false; } diff --git a/src/com/untamedears/DynCap/DynCapPlugin.java b/src/com/untamedears/DynCap/DynCapPlugin.java index 8d331f5..1966847 100644 --- a/src/com/untamedears/DynCap/DynCapPlugin.java +++ b/src/com/untamedears/DynCap/DynCapPlugin.java @@ -95,7 +95,7 @@ public int getQueueSize() return loginQueue.size(); } - public QueueItem getQueueItem(int queueIndex) + public synchronized QueueItem getQueueItem(int queueIndex) { if (queueIndex < 0 || queueIndex >= loginQueue.size()) { @@ -110,83 +110,98 @@ public QueueItem getQueueItem(int queueIndex) @EventHandler(priority=EventPriority.LOWEST, ignoreCancelled = false) public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent event) { - //log.info("login event called!"); - String playerName = event.getName().toLowerCase(); - - //if the player is whitelisted(admin/mod) - if (whiteListedPlayers.contains(playerName)) - { - event.allow(); - return; - } - if(this.getServer().getBannedPlayers().contains(this.getServer().getOfflinePlayer(event.getName()))) - { - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED, banMessage); - return; - } - - int position = getQueuePosition(playerName); - //log.info("posistion is:" + position); - //if the server is not full, and there is no queue - if ((getPlayerCount() < getPlayerCap() && loginQueue.isEmpty())) - { - //log.info("allowed " + playerName + " to join, server is not full and has no queue!"); - event.allow(); - updateAverageTimeToJoin(0); - return; - } - //server is either full, or has a queue - else + try { - //if the server has a queue, but there is enough space for the player - if(position != -1 && position + 1 <= getPlayerCap() - getPlayerCount()) + //log.info("login event called!"); + String playerName = event.getName().toLowerCase(); + + //if the player is whitelisted(admin/mod) + if (whiteListedPlayers.contains(playerName)) { - //log.info("allowed " + playerName + " to join, server is not full and he is in a queue!"); event.allow(); - updateAverageTimeToJoin(loginQueue.get(position).getSecondsSinceFirstAttempt()); - loginQueue.remove(position); return; } - //if the server has a queue, and there is not enough space for the player - else if (position != -1) + if(this.getServer().getBannedPlayers().contains(this.getServer().getOfflinePlayer(event.getName()))) + { + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED, banMessage); + return; + } + + int position = getQueuePosition(playerName); + //log.info("posistion is:" + position); + //if the server is not full, and there is no queue + if ((getPlayerCount() < getPlayerCap() && loginQueue.isEmpty())) + { + //log.info("allowed " + playerName + " to join, server is not full and has no queue!"); + event.allow(); + updateAverageTimeToJoin(0); + return; + } + //server is either full, or has a queue + else { - if (loginQueue.get(position).getSecondsSinceLastAttempt() <= minimumJoinTime) + //if the server has a queue, but there is enough space for the player + if(position != -1 && position + 1 <= getPlayerCap() - getPlayerCount()) { - loginQueue.remove(position); - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, toFastJoinMessage); + //log.info("allowed " + playerName + " to join, server is not full and he is in a queue!"); + event.allow(); + updateAverageTimeToJoin(loginQueue.get(position).getSecondsSinceFirstAttempt()); + removeFromQueue(position); return; } - else + //if the server has a queue, and there is not enough space for the player + else if (position != -1) { - loginQueue.get(position).updateDate(); - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, String.format(updateMessage, (position + 1))); - return; + if (getQueueItem(position).getSecondsSinceLastAttempt() <= minimumJoinTime) + { + removeFromQueue(position); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, toFastJoinMessage); + return; + } + else + { + getQueueItem(position).updateDate(); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, String.format(updateMessage, (position + 1))); + return; + } } - } - else - { - if ((!loginQueue.isEmpty() && loginQueue.size() <= (getPlayerCap() - getPlayerCount()))) + else { - //if for some reason the person is in the queue remove them - if (position != -1) + if ((!loginQueue.isEmpty() && loginQueue.size() <= (getPlayerCap() - getPlayerCount()))) { - loginQueue.remove(position); + //if for some reason the person is in the queue remove them + if (position != -1) + { + removeFromQueue(position); + } + updateAverageTimeToJoin(0); + event.allow(); + return; } - updateAverageTimeToJoin(0); - event.allow(); + //log.info("disallowed " + playerName + " added him to queue"); + QueueItem queueItem = new QueueItem(playerName); + addToQueue(queueItem); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, String.format(firstJoinMessage, loginQueue.size())); return; } - //log.info("disallowed " + playerName + " added him to queue"); - QueueItem queueItem = new QueueItem(playerName); - loginQueue.add(queueItem); - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, String.format(firstJoinMessage, loginQueue.size())); - return; } } - + catch (Exception e) + { + e.printStackTrace(); + } + } + + private synchronized void removeFromQueue(int index) + { + loginQueue.remove(index); + } + private synchronized void addToQueue(QueueItem queueItem) + { + loginQueue.add(queueItem); } //returning -1 means error/not contained - public int getQueuePosition(String name) + public synchronized int getQueuePosition(String name) { if (loginQueue.isEmpty()) { @@ -196,7 +211,7 @@ public int getQueuePosition(String name) for (int x = 0; x < loginQueue.size(); x++) { //log.info("x is:" + x + " and queueItem name is " + queue.get(x).getName() + " while paramter is " + name); - if (loginQueue.get(x).getName().equalsIgnoreCase(name)) + if (getQueueItem(x).getName().equalsIgnoreCase(name)) { return x; } @@ -204,6 +219,7 @@ public int getQueuePosition(String name) return -1; } + public void updateAverageTimeToJoin(int newJoinTime) { numberOfJoins++; @@ -224,7 +240,7 @@ public float getAverageTimeToJoin() } //timeOut is in seconds - private void removeOldQueueItems(int timeOut) + private synchronized void removeOldQueueItems(int timeOut) { if (loginQueue.isEmpty()) { @@ -234,7 +250,7 @@ private void removeOldQueueItems(int timeOut) { if (loginQueue.get(x).getSecondsSinceLastAttempt() > timeOut) { - loginQueue.remove(x); + removeFromQueue(x); x -- ; } } From 156cf8c3f0f97717b0f20db02252b8d13e11d7e6 Mon Sep 17 00:00:00 2001 From: Travis Christian Date: Tue, 1 Jul 2014 23:36:54 -0400 Subject: [PATCH 18/19] maven build script --- pom.xml | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 pom.xml diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..c4266bc --- /dev/null +++ b/pom.xml @@ -0,0 +1,56 @@ + + 4.0.0 + com.untamedears + DynCap + jar + 1.0.1-SNAPSHOT + DynCap + https://github.com/erocs/DynCap + + + + + + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + + + + + + + ${basedir}/src + + + + ${basedir} + + *.yml + + + + + + + + org.bukkit + craftbukkit + 1.7.2 + provided + + + + + + lib + lib + ${project.baseUri}lib + + + From 47b33da2779e920b95ccacb113244a7c327edf02 Mon Sep 17 00:00:00 2001 From: Travis Christian Date: Fri, 11 Jul 2014 23:34:10 -0400 Subject: [PATCH 19/19] use bukkit repo --- pom.xml | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/pom.xml b/pom.xml index c4266bc..1a4643f 100644 --- a/pom.xml +++ b/pom.xml @@ -9,22 +9,13 @@ 1.0.1-SNAPSHOT DynCap https://github.com/erocs/DynCap + + + 1.7 + 1.7 + - - - - maven-compiler-plugin - 2.3.2 - - 1.7 - 1.7 - - - - - - ${basedir}/src @@ -40,17 +31,16 @@ org.bukkit - craftbukkit - 1.7.2 + bukkit + 1.7.2-R0.3 provided - lib - lib - ${project.baseUri}lib + bukkit-repo + http://repo.bukkit.org/content/groups/public/