From 468aaa18a3f18d92575316e2d7eb27a20b82735c Mon Sep 17 00:00:00 2001 From: Xephi Date: Wed, 3 Apr 2013 03:21:33 +0200 Subject: [PATCH] Add VIP Slots method --- pom.xml | 2 +- .../java/uk/org/whoami/authme/AuthMe.java | 16 +++++++++++++- .../authme/listener/AuthMePlayerListener.java | 22 ++++++++++++++++++- .../org/whoami/authme/settings/Messages.java | 2 ++ src/main/resources/messages_br.yml | 4 +++- src/main/resources/messages_cz.yml | 4 +++- src/main/resources/messages_de.yml | 4 +++- src/main/resources/messages_en.yml | 3 ++- src/main/resources/messages_es.yml | 2 ++ src/main/resources/messages_fi.yml | 4 ++-- src/main/resources/messages_fr.yml | 4 +++- src/main/resources/messages_hu.yml | 2 ++ src/main/resources/messages_pl.yml | 2 ++ src/main/resources/messages_ru.yml | 5 +++++ src/main/resources/messages_sk.yml | 4 +++- src/main/resources/messages_zhcn.yml | 2 ++ src/main/resources/messages_zhtw.yml | 2 ++ src/main/resources/plugin.yml | 5 ++++- 18 files changed, 77 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 3153bbb8d..018ea2e87 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ - 2.7.13b1 + 2.7.13b2 org.bukkit diff --git a/src/main/java/uk/org/whoami/authme/AuthMe.java b/src/main/java/uk/org/whoami/authme/AuthMe.java index 09fb63117..7cd12665f 100644 --- a/src/main/java/uk/org/whoami/authme/AuthMe.java +++ b/src/main/java/uk/org/whoami/authme/AuthMe.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.sql.SQLException; import java.util.Date; import java.util.HashMap; +import java.util.Random; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -255,7 +256,6 @@ public class AuthMe extends JavaPlugin { if (permissionProvider != null) permission = permissionProvider.getProvider(); else { - ConsoleLogger.showError("Vault and Permissions plugins is needed for enable AuthMe Reloaded!"); this.getServer().getPluginManager().disablePlugin(this); } @@ -498,4 +498,18 @@ public class AuthMe extends JavaPlugin { return m; } + public Player generateKickPlayer(Player[] players) { + Player player = null; + int i; + for (i = 0 ; i <= players.length ; i++) { + Random rdm = new Random(); + int a = rdm.nextInt(players.length); + if (!players[a].hasPermission("authme.vip")) { + player = players[a]; + break; + } + } + return player; + } + } diff --git a/src/main/java/uk/org/whoami/authme/listener/AuthMePlayerListener.java b/src/main/java/uk/org/whoami/authme/listener/AuthMePlayerListener.java index 0b6616b36..ed2518a5e 100644 --- a/src/main/java/uk/org/whoami/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/uk/org/whoami/authme/listener/AuthMePlayerListener.java @@ -566,7 +566,7 @@ public class AuthMePlayerListener implements Listener { } - @EventHandler(priority = EventPriority.LOWEST) + @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerLogin(PlayerLoginEvent event) { final Player player = event.getPlayer(); @@ -652,6 +652,26 @@ public class AuthMePlayerListener implements Listener { return; } } + if (event.getResult() != Result.KICK_FULL) return; + if (player.isBanned()) return; + if (!player.hasPermission("authme.vip")) { + event.disallow(Result.KICK_FULL, m._("kick_fullserver")); + return; + } + if (plugin.getServer().getOnlinePlayers().length > plugin.getServer().getMaxPlayers()) { + event.allow(); + return; + } else { + final Player pl = plugin.generateKickPlayer(plugin.getServer().getOnlinePlayers()); + if (pl != null) { + pl.kickPlayer(m._("kick_forvip")); + event.allow(); + return; + } else { + ConsoleLogger.info("The player " + player.getName() + " wants to join, but the server is full"); + event.disallow(Result.KICK_FULL, m._("kick_fullserver")); + } + } } diff --git a/src/main/java/uk/org/whoami/authme/settings/Messages.java b/src/main/java/uk/org/whoami/authme/settings/Messages.java index 7ae9cbb40..630a90c34 100644 --- a/src/main/java/uk/org/whoami/authme/settings/Messages.java +++ b/src/main/java/uk/org/whoami/authme/settings/Messages.java @@ -73,6 +73,8 @@ public class Messages extends CustomConfiguration { this.set("usage_captcha", "&cUsage: /captcha "); this.set("wrong_captcha", "&cWrong Captcha, please use : /captcha THE_CAPTCHA"); this.set("valid_captcha", "&cYour captcha is valid !"); + this.set("kick_forvip", "&cA VIP Player join the full server!"); + this.set("kick_fullserver", "&cThe server is actually full, Sorry!"); } private void loadFile() { diff --git a/src/main/resources/messages_br.yml b/src/main/resources/messages_br.yml index 10c8fe51d..e9eb200a1 100644 --- a/src/main/resources/messages_br.yml +++ b/src/main/resources/messages_br.yml @@ -35,4 +35,6 @@ bad_database_email: '[AuthMe] This /email command only available with MySQL and recovery_email: '&cForgot your password? Please use /email recovery ' usage_captcha: '&cUsage: /captcha ' wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA' -valid_captcha: '&cYour captcha is valid !' \ No newline at end of file +valid_captcha: '&cYour captcha is valid !' +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' \ No newline at end of file diff --git a/src/main/resources/messages_cz.yml b/src/main/resources/messages_cz.yml index 1546bffce..1d0e5a14e 100644 --- a/src/main/resources/messages_cz.yml +++ b/src/main/resources/messages_cz.yml @@ -37,4 +37,6 @@ bad_database_email: '[AuthMe] This /email command only available with MySQL and recovery_email: '&cForgot your password? Please use /email recovery ' usage_captcha: '&cUsage: /captcha ' wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA' -valid_captcha: '&cYour captcha is valid !' \ No newline at end of file +valid_captcha: '&cYour captcha is valid !' +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' \ No newline at end of file diff --git a/src/main/resources/messages_de.yml b/src/main/resources/messages_de.yml index 142610737..92dfadc7b 100644 --- a/src/main/resources/messages_de.yml +++ b/src/main/resources/messages_de.yml @@ -38,4 +38,6 @@ bad_database_email: '[AuthMe] This /email command only available with MySQL and recovery_email: '&cForgot your password? Please use /email recovery ' usage_captcha: '&cUsage: /captcha ' wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA' -valid_captcha: '&cYour captcha is valid !' \ No newline at end of file +valid_captcha: '&cYour captcha is valid !' +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' \ No newline at end of file diff --git a/src/main/resources/messages_en.yml b/src/main/resources/messages_en.yml index 846cb60fa..273ed5d5c 100644 --- a/src/main/resources/messages_en.yml +++ b/src/main/resources/messages_en.yml @@ -38,5 +38,6 @@ recovery_email: '&cForgot your password? Please use /email recovery ' usage_captcha: '&cUsage: /captcha ' wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA' valid_captcha: '&cYour captcha is valid !' - +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' diff --git a/src/main/resources/messages_es.yml b/src/main/resources/messages_es.yml index da2682b70..72f29bc06 100644 --- a/src/main/resources/messages_es.yml +++ b/src/main/resources/messages_es.yml @@ -39,3 +39,5 @@ recovery_email: '&c¿Olvidaste tu contraseña? Por favor usa /email recovery ' wrong_captcha: '&cCaptcha incorrecto, please use : /captcha EL_CAPTCHA' valid_captcha: '&c¡ Captcha ingresado correctamente !' +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' \ No newline at end of file diff --git a/src/main/resources/messages_fi.yml b/src/main/resources/messages_fi.yml index b8606be7e..316701991 100644 --- a/src/main/resources/messages_fi.yml +++ b/src/main/resources/messages_fi.yml @@ -38,5 +38,5 @@ recovery_email: '&cUnohtuiko salasana?' usage_captcha: '&cKäyttö: /captcha ' wrong_captcha: '&cVäärä varmistus, käytä : /captcha THE_CAPTCHA' valid_captcha: '&cSinun varmistus epäonnistui.!' - - +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' diff --git a/src/main/resources/messages_fr.yml b/src/main/resources/messages_fr.yml index 60b4982fe..9dfb0fc15 100644 --- a/src/main/resources/messages_fr.yml +++ b/src/main/resources/messages_fr.yml @@ -37,4 +37,6 @@ bad_database_email: '[AuthMe] La commande /email est disponible uniquement pour recovery_email: '&cOublie de MotDePasse? Utilisez /email recovery ' usage_captcha: '&cTrop de Mauvais MotDePasse, utilisez: /captcha ' wrong_captcha: '&cCaptcha Incorrect, entrez de nouveau : /captcha THE_CAPTCHA' -valid_captcha: '&cLe Captcha est valide, Merci!' \ No newline at end of file +valid_captcha: '&cLe Captcha est valide, Merci!' +kick_forvip: '&cUn joueur VIP a rejoint le serveur plein!' +kick_fullserver: '&cThe server is actually full, Sorry!' \ No newline at end of file diff --git a/src/main/resources/messages_hu.yml b/src/main/resources/messages_hu.yml index 0f302655d..6639f0d1e 100644 --- a/src/main/resources/messages_hu.yml +++ b/src/main/resources/messages_hu.yml @@ -38,3 +38,5 @@ recovery_email: '&cForgot your password? Please use /email recovery ' usage_captcha: '&cUsage: /captcha ' wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA' valid_captcha: '&cYour captcha is valid !' +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' diff --git a/src/main/resources/messages_pl.yml b/src/main/resources/messages_pl.yml index e0d129382..dc2c946b0 100644 --- a/src/main/resources/messages_pl.yml +++ b/src/main/resources/messages_pl.yml @@ -38,3 +38,5 @@ recovery_email: '&cForgot your password? Please use /email recovery ' usage_captcha: '&cUsage: /captcha ' wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA' valid_captcha: '&cYour captcha is valid !' +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' diff --git a/src/main/resources/messages_ru.yml b/src/main/resources/messages_ru.yml index 488b17167..fe061a468 100644 --- a/src/main/resources/messages_ru.yml +++ b/src/main/resources/messages_ru.yml @@ -40,3 +40,8 @@ add_email: '&eДобавь свой email: &d/email add АДРЕС_ПОЧТЫ П bad_database_email: '&c[AuthMe] Команда &d/email&c доступна только при работе с MySQL или SQLite' recovery_email: '&cЗабыл пароль? Используй команду &d/email recovery <АДРЕС_ПОЧТЫ>' +usage_captcha: '&cUsage: /captcha ' +wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA' +valid_captcha: '&cYour captcha is valid !' +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' diff --git a/src/main/resources/messages_sk.yml b/src/main/resources/messages_sk.yml index 38f23846b..e3e3e36f0 100644 --- a/src/main/resources/messages_sk.yml +++ b/src/main/resources/messages_sk.yml @@ -41,4 +41,6 @@ bad_database_email: '[AuthMe] Tento príkaz je dostupny iba pri MySQL SQLite' recovery_email: '&cZabudol si heslo? Pouzi príkaz /email recovery ' usage_captcha: '&cUsage: /captcha ' wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA' -valid_captcha: '&cYour captcha is valid !' \ No newline at end of file +valid_captcha: '&cYour captcha is valid !' +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' \ No newline at end of file diff --git a/src/main/resources/messages_zhcn.yml b/src/main/resources/messages_zhcn.yml index e090055cf..f69de08af 100644 --- a/src/main/resources/messages_zhcn.yml +++ b/src/main/resources/messages_zhcn.yml @@ -38,3 +38,5 @@ recovery_email: '&c忘了你的密码?请输入:“/email recovery <你的 usage_captcha: '&c正确用法:/captcha <验证码>' wrong_captcha: '&c错误的验证码,请输入:“/captcha <验证码>”' valid_captcha: '&c你的验证码是有效的!' +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' diff --git a/src/main/resources/messages_zhtw.yml b/src/main/resources/messages_zhtw.yml index 65be7a92f..886752fdf 100644 --- a/src/main/resources/messages_zhtw.yml +++ b/src/main/resources/messages_zhtw.yml @@ -38,3 +38,5 @@ recovery_email: '&c忘記密碼 ? 請使用這個的指令來更新密碼 : usage_captcha: '&c用法 : 《 /captcha <驗證碼> 》' wrong_captcha: '&c你輸入了錯誤的驗證碼,請使用 《 /captcha <驗證碼> 》 再次輸入 。' valid_captcha: '&c你的驗證碼是無效的 !' +kick_forvip: '&cA VIP Player join the full server!' +kick_fullserver: '&cThe server is actually full, Sorry!' \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 08688423c..03553ef62 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,7 +3,7 @@ author: darkwarriros,Xephi website: http://www.multiplayer-italia.com/ description: AuthMe prevents people, which aren't logged in, from doing stuff like placing blocks, moving, typing commands or seeing the inventory of the current player. main: uk.org.whoami.authme.AuthMe -version: 2.7.13 +version: 2.7.13b2 softdepend: [Vault, ChestShop, Spout, Multiverse-Core, Notifications, Citizens, CombatTag] commands: register: @@ -131,4 +131,7 @@ permissions: default: op authme.admin.spawn: description: Teleport to AuthMe spawn point + default: op + authme.vip: + description: Allow vip slot when the server is full default: op \ No newline at end of file