diff --git a/src/main/java/fr/xephi/authme/listener/AuthMeBlockListener.java b/src/main/java/fr/xephi/authme/listener/AuthMeBlockListener.java index 01cbadc2..56b7916c 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMeBlockListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMeBlockListener.java @@ -32,6 +32,12 @@ public class AuthMeBlockListener implements Listener { if (Utils.checkAuth(event.getPlayer())) { return; } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } + event.setCancelled(true); } @@ -45,6 +51,12 @@ public class AuthMeBlockListener implements Listener { if (Utils.checkAuth(event.getPlayer())) { return; } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } + event.setCancelled(true); } diff --git a/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java b/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java index 5e27814e..30b4af72 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java @@ -49,7 +49,12 @@ public class AuthMeEntityListener implements Listener { } Player player = (Player) entity; - if (Utils.checkAuth(player)) { + if (Utils.checkAuth(player) ) { + return; + } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(player)) { return; } player.setFireTicks(0); @@ -73,6 +78,11 @@ public class AuthMeEntityListener implements Listener { return; } + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC((Player) entity)) { + return; + } + event.setTarget(null); event.setCancelled(true); } @@ -83,7 +93,7 @@ public class AuthMeEntityListener implements Listener { * @param event EntityDamageByEntityEvent */ @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) - public void onDmg(EntityDamageByEntityEvent event) { + public void onDamage(EntityDamageByEntityEvent event) { Entity entity = event.getDamager(); if (entity == null || !(entity instanceof Player)) { return; @@ -94,6 +104,11 @@ public class AuthMeEntityListener implements Listener { return; } + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(player)) { + return; + } + event.setCancelled(true); } @@ -113,6 +128,11 @@ public class AuthMeEntityListener implements Listener { return; } + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC((Player) entity)) { + return; + } + event.setCancelled(true); } @@ -132,6 +152,11 @@ public class AuthMeEntityListener implements Listener { return; } + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC((Player) entity)) { + return; + } + event.setAmount(0); event.setCancelled(true); } @@ -152,6 +177,11 @@ public class AuthMeEntityListener implements Listener { return; } + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC((Player) entity)) { + return; + } + event.setCancelled(true); } @@ -171,6 +201,11 @@ public class AuthMeEntityListener implements Listener { return; } + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC((Player) entity)) { + return; + } + event.setCancelled(true); } @@ -210,6 +245,11 @@ public class AuthMeEntityListener implements Listener { return; } + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(player)) { + return; + } + event.setCancelled(true); } @@ -230,6 +270,11 @@ public class AuthMeEntityListener implements Listener { return; } + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(player)) { + return; + } + event.setCancelled(true); } diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java index 5444371f..7fc36994 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java @@ -70,7 +70,6 @@ public class AuthMePlayerListener implements Listener { } final Player player = event.getPlayer(); - if (Utils.checkAuth(player)) { for (Player p : Utils.getOnlinePlayers()) { if (!PlayerCache.getInstance().isAuthenticated(p.getName())) { @@ -81,6 +80,11 @@ public class AuthMePlayerListener implements Listener { } event.setCancelled(true); + sendLoginRegisterMSG(player); + } + + // TODO: new name + private void sendLoginRegisterMSG(final Player player) { plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() { @Override public void run() { @@ -110,6 +114,7 @@ public class AuthMePlayerListener implements Listener { return; } event.setCancelled(true); + sendLoginRegisterMSG(event.getPlayer()); } @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) @@ -186,17 +191,22 @@ public class AuthMePlayerListener implements Listener { @EventHandler(priority = EventPriority.LOWEST) public void onPlayerJoin(PlayerJoinEvent event) { - if (event.getPlayer() == null || Utils.isNPC(event.getPlayer())) { + final Player player = event.getPlayer(); + if (player == null) { return; } - final Player player = event.getPlayer(); + /* IMPOSSIBLE!!!! TODO: check this! + if(Utils.isNPC(player)) { + return; + } + */ + String name = player.getName().toLowerCase(); String joinMsg = event.getJoinMessage(); - boolean delay = Settings.delayJoinLeaveMessages && joinMsg != null; // Remove the join message while the player isn't logging in - if (delay) { + if (Settings.delayJoinLeaveMessages && joinMsg != null) { event.setJoinMessage(null); joinMessage.put(name, joinMsg); } @@ -254,13 +264,13 @@ public class AuthMePlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerLogin(PlayerLoginEvent event) { - if (event.getPlayer() == null || Utils.isUnrestricted(event.getPlayer())) { + final Player player = event.getPlayer(); + if (player == null || Utils.isUnrestricted(player)) { return; } // Get the permissions manager PermissionsManager permsMan = plugin.getPermissionsManager(); - final Player player = event.getPlayer(); if (event.getResult() == PlayerLoginEvent.Result.KICK_FULL && permsMan.hasPermission(player, PlayerPermission.IS_VIP)) { @@ -329,12 +339,12 @@ public class AuthMePlayerListener implements Listener { @EventHandler(priority = EventPriority.MONITOR) public void onPlayerQuit(PlayerQuitEvent event) { - if (event.getPlayer() == null) { + Player player = event.getPlayer(); + + if (player == null) { return; } - Player player = event.getPlayer(); - if (Settings.delayJoinLeaveMessages && !Utils.checkAuth(player)) { event.setQuitMessage(null); } @@ -344,7 +354,9 @@ public class AuthMePlayerListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) public void onPlayerKick(PlayerKickEvent event) { - if (event.getPlayer() == null) { + Player player = event.getPlayer(); + + if (player == null) { return; } @@ -354,13 +366,15 @@ public class AuthMePlayerListener implements Listener { return; } - Player player = event.getPlayer(); plugin.getManagement().performQuit(player, true); } @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) public void onPlayerPickupItem(PlayerPickupItemEvent event) { - if (Utils.checkAuth(event.getPlayer())) { + Player player = event.getPlayer(); + + // TODO: npc status can be used to bypass security!!! + if (Utils.checkAuth(player) || Utils.isNPC(player)) { return; } event.setCancelled(true); @@ -368,7 +382,10 @@ public class AuthMePlayerListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onPlayerInteract(PlayerInteractEvent event) { - if (Utils.checkAuth(event.getPlayer())) { + Player player = event.getPlayer(); + + // TODO: npc status can be used to bypass security!!! + if (Utils.checkAuth(player) || Utils.isNPC(player)) { return; } event.setCancelled(true); @@ -376,7 +393,10 @@ public class AuthMePlayerListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) public void onPlayerConsumeItem(PlayerItemConsumeEvent event) { - if (Utils.checkAuth(event.getPlayer())) { + Player player = event.getPlayer(); + + // TODO: npc status can be used to bypass security!!! + if (Utils.checkAuth(player) || Utils.isNPC(player)) { return; } event.setCancelled(true); @@ -385,7 +405,9 @@ public class AuthMePlayerListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) public void onPlayerInventoryOpen(InventoryOpenEvent event) { final Player player = (Player) event.getPlayer(); - if (Utils.checkAuth(player)) { + + // TODO: npc status can be used to bypass security!!! + if (Utils.checkAuth(player) || Utils.isNPC(player)) { return; } event.setCancelled(true); @@ -410,6 +432,10 @@ public class AuthMePlayerListener implements Listener { return; if (Utils.checkAuth((Player) event.getWhoClicked())) return; + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC((Player) event.getWhoClicked())) + return; event.setCancelled(true); } @@ -422,6 +448,11 @@ public class AuthMePlayerListener implements Listener { if (Utils.checkAuth((Player) damager)) { return; } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC((Player) damager)) { + return; + } event.setCancelled(true); } @@ -430,6 +461,11 @@ public class AuthMePlayerListener implements Listener { if (Utils.checkAuth(event.getPlayer())) { return; } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } event.setCancelled(true); } @@ -438,6 +474,11 @@ public class AuthMePlayerListener implements Listener { if (Utils.checkAuth(event.getPlayer())) { return; } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } event.setCancelled(true); } @@ -446,6 +487,11 @@ public class AuthMePlayerListener implements Listener { if (Utils.checkAuth(event.getPlayer())) { return; } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } event.setCancelled(true); } @@ -454,6 +500,11 @@ public class AuthMePlayerListener implements Listener { if (Utils.checkAuth(event.getPlayer())) { return; } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } event.setCancelled(true); } @@ -463,6 +514,11 @@ public class AuthMePlayerListener implements Listener { return; } + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } + Player player = event.getPlayer(); String name = player.getName().toLowerCase(); Location spawn = plugin.getSpawnLocation(player); @@ -481,6 +537,11 @@ public class AuthMePlayerListener implements Listener { return; } + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } + Player player = event.getPlayer(); if (plugin.getPermissionsManager().hasPermission(player, PlayerPermission.BYPASS_FORCE_SURVIVAL)) { return; @@ -499,6 +560,11 @@ public class AuthMePlayerListener implements Listener { if (Utils.checkAuth(event.getPlayer())) { return; } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } event.setCancelled(true); } @@ -507,6 +573,11 @@ public class AuthMePlayerListener implements Listener { if (Utils.checkAuth(event.getPlayer())) { return; } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } event.setCancelled(true); } diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java index 2a83846b..0975b18a 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java @@ -32,6 +32,11 @@ public class AuthMePlayerListener16 implements Listener { if (Utils.checkAuth(event.getPlayer())) { return; } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } event.setCancelled(true); } diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener18.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener18.java index d19fa2df..dbcb1c71 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener18.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener18.java @@ -32,6 +32,11 @@ public class AuthMePlayerListener18 implements Listener { if (Utils.checkAuth(event.getPlayer())) { return; } + + // TODO: npc status can be used to bypass security!!! + if (Utils.isNPC(event.getPlayer())) { + return; + } event.setCancelled(true); } diff --git a/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java b/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java index 540730f5..0cd0397b 100644 --- a/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java +++ b/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java @@ -47,7 +47,7 @@ public class AsynchronousQuit { public void process() { if (player == null) return; - if (Utils.isNPC(player) || Utils.isUnrestricted(player)) { + if (Utils.isUnrestricted(player)) { return; } diff --git a/src/main/java/fr/xephi/authme/util/Utils.java b/src/main/java/fr/xephi/authme/util/Utils.java index 3e3c52a0..e45b04a8 100644 --- a/src/main/java/fr/xephi/authme/util/Utils.java +++ b/src/main/java/fr/xephi/authme/util/Utils.java @@ -137,7 +137,7 @@ public final class Utils { // TODO: Move to a Manager public static boolean checkAuth(Player player) { - if (player == null || Utils.isUnrestricted(player) || Utils.isNPC(player)) { + if (player == null || Utils.isUnrestricted(player)) { return true; }