Advertisement
Guest User

Untitled

a guest
Mar 15th, 2015
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.36 KB | None | 0 0
  1. @EventHandler(priority = EventPriority.HIGHEST)
  2. public void onPlayerLogin(PlayerLoginEvent event) {
  3.  
  4. final Player player = event.getPlayer();
  5. final String lowname = player.getName().toLowerCase();
  6. final String name = player.getName();
  7.  
  8. if (!lowname.equals(name)) {
  9. // Little workaround to be sure registered player is the same as this
  10. if (player.hasPlayedBefore() && !player.isOnline())
  11. // Make sure it's the correct player
  12. if (data.isAuthAvailable(lowname)) {
  13. if (data.getAuth(lowname).getIp().equalsIgnoreCase(player.getAddress().getAddress().getHostAddress())) {
  14. data.updateName(lowname, name);
  15. } else {
  16. event.setResult(PlayerLoginEvent.Result.KICK_OTHER);
  17. event.setKickMessage(m._("same_nick")[0]);
  18. }
  19. }
  20. }
  21.  
  22. if (plugin.getCitizensCommunicator().isNPC(player, plugin) || Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) {
  23. return;
  24. }
  25.  
  26. if (!Settings.countriesBlacklist.isEmpty()) {
  27. String code = plugin.getCountryCode(event.getAddress().getHostAddress());
  28. if (((code == null) || (Settings.countriesBlacklist.contains(code) && !API.isRegistered(name))) && !plugin.authmePermissible(player, "authme.bypassantibot")) {
  29. event.disallow(PlayerLoginEvent.Result.KICK_OTHER, m._("country_banned")[0]);
  30. return;
  31. }
  32. }
  33. if (Settings.enableProtection && !Settings.countries.isEmpty()) {
  34. String code = plugin.getCountryCode(event.getAddress().getHostAddress());
  35. if (((code == null) || (!Settings.countries.contains(code) && !API.isRegistered(name))) && !plugin.authmePermissible(player, "authme.bypassantibot")) {
  36. event.disallow(PlayerLoginEvent.Result.KICK_OTHER, m._("country_banned")[0]);
  37. return;
  38. }
  39. }
  40.  
  41. if (Settings.isKickNonRegisteredEnabled) {
  42. if (!data.isAuthAvailable(name)) {
  43. event.disallow(PlayerLoginEvent.Result.KICK_OTHER, m._("reg_only")[0]);
  44. return;
  45. }
  46. }
  47.  
  48. if (player.isOnline() && Settings.isForceSingleSessionEnabled) {
  49. event.disallow(PlayerLoginEvent.Result.KICK_OTHER, m._("same_nick")[0]);
  50. return;
  51. }
  52.  
  53. if (data.isAuthAvailable(name) && !LimboCache.getInstance().hasLimboPlayer(name)) {
  54. if (!Settings.isSessionsEnabled) {
  55. } else if (PlayerCache.getInstance().isAuthenticated(name)) {
  56. if (!Settings.sessionExpireOnIpChange)
  57. if (LimboCache.getInstance().hasLimboPlayer(player.getName())) {
  58. LimboCache.getInstance().deleteLimboPlayer(name);
  59. }
  60. }
  61. }
  62. // Check if forceSingleSession is set to true, so kick player that has
  63. // joined with same nick of online player
  64. if (player.isOnline() && Settings.isForceSingleSessionEnabled) {
  65. LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(player.getName());
  66. event.disallow(PlayerLoginEvent.Result.KICK_OTHER, m._("same_nick")[0]);
  67. if (PlayerCache.getInstance().isAuthenticated(player.getName())) {
  68. utils.addNormal(player, limbo.getGroup());
  69. LimboCache.getInstance().deleteLimboPlayer(player.getName());
  70. }
  71. return;
  72. }
  73.  
  74. int min = Settings.getMinNickLength;
  75. int max = Settings.getMaxNickLength;
  76. String regex = Settings.getNickRegex;
  77.  
  78. if (name.length() > max || name.length() < min) {
  79.  
  80. event.disallow(PlayerLoginEvent.Result.KICK_OTHER, m._("name_len")[0]);
  81. return;
  82. }
  83. try {
  84. if (!player.getName().matches(regex) || name.equals("Player")) {
  85. try {
  86. event.disallow(PlayerLoginEvent.Result.KICK_OTHER, m._("regex")[0].replace("REG_EX", regex));
  87. } catch (Exception exc) {
  88. event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "allowed char : " + regex);
  89. }
  90. return;
  91. }
  92. } catch (PatternSyntaxException pse) {
  93. if (regex == null || regex.isEmpty()) {
  94. event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Your nickname do not match");
  95. return;
  96. }
  97. try {
  98. event.disallow(PlayerLoginEvent.Result.KICK_OTHER, m._("regex")[0].replace("REG_EX", regex));
  99. } catch (Exception exc) {
  100. event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "allowed char : " + regex);
  101. }
  102. return;
  103. }
  104.  
  105. if (event.getResult() == PlayerLoginEvent.Result.ALLOWED) {
  106. checkAntiBotMod(event);
  107. if (Settings.bungee) {
  108. final ByteArrayOutputStream b = new ByteArrayOutputStream();
  109. DataOutputStream out = new DataOutputStream(b);
  110.  
  111. try {
  112. out.writeUTF("IP");
  113. } catch (IOException e) {
  114. }
  115. player.sendPluginMessage(plugin, "BungeeCord", b.toByteArray());
  116. }
  117. return;
  118. }
  119. if (event.getResult() != PlayerLoginEvent.Result.KICK_FULL)
  120. return;
  121. if (player.isBanned())
  122. return;
  123. if (!plugin.authmePermissible(player, "authme.vip")) {
  124. event.disallow(Result.KICK_FULL, m._("kick_fullserver")[0]);
  125. return;
  126. }
  127.  
  128. if (plugin.getServer().getOnlinePlayers().length > plugin.getServer().getMaxPlayers()) {
  129. event.allow();
  130. return;
  131. } else {
  132. final Player pl = plugin.generateKickPlayer(plugin.getServer().getOnlinePlayers());
  133. if (pl != null) {
  134. pl.kickPlayer(m._("kick_forvip")[0]);
  135. event.allow();
  136. return;
  137. } else {
  138. ConsoleLogger.info("The player " + player.getName() + " wants to join, but the server is full");
  139. event.disallow(Result.KICK_FULL, m._("kick_fullserver")[0]);
  140. return;
  141. }
  142. }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement