diff options
Diffstat (limited to 'Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java')
-rw-r--r-- | Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java | 89 |
1 files changed, 49 insertions, 40 deletions
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index ff32a9636..9ba02b5c3 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -73,11 +73,7 @@ public class EssentialsPlayerListener extends PlayerListener it.remove(); } } - if (user.isAfk()) - { - user.setAfk(false); - ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName())); - } + user.updateActivity(true); if (ess.getSettings().changeDisplayName()) { user.setDisplayName(user.getNick()); @@ -93,10 +89,27 @@ public class EssentialsPlayerListener extends PlayerListener } final User user = ess.getUser(event.getPlayer()); - if (user.isAfk()) + if (user.isAfk() && ess.getSettings().getFreezeAfkPlayers()) { - user.setAfk(false); - ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName())); + final Location from = event.getFrom(); + final Location to = event.getTo().clone(); + to.setX(from.getX()); + to.setY(from.getY()); + to.setZ(from.getZ()); + try + { + event.setTo(Util.getSafeDestination(to)); + } + catch (Exception ex) + { + event.setTo(to); + } + return; + } + + Location afk = user.getAfkPosition(); + if (afk == null || !event.getTo().getWorld().equals(afk.getWorld()) || afk.distanceSquared(event.getTo()) > 9) { + user.updateActivity(true); } if (!ess.getSettings().getNetherPortalsEnabled()) @@ -216,6 +229,7 @@ public class EssentialsPlayerListener extends PlayerListener user.getInventory().setContents(user.getSavedInventory()); user.setSavedInventory(null); } + user.updateActivity(false); user.dispose(); if (!ess.getSettings().getReclaimSetting()) { @@ -252,19 +266,11 @@ public class EssentialsPlayerListener extends PlayerListener ess.getBackup().onPlayerJoin(); final User user = ess.getUser(event.getPlayer()); - //we do not know the ip address on playerlogin so we need to do this here. - if (user.isIpBanned()) - { - final String banReason = user.getBanReason(); - user.kickPlayer(banReason != null && !banReason.isEmpty() ? banReason : Util.i18n("defaultBanReason")); - return; - } - if (ess.getSettings().changeDisplayName()) { user.setDisplayName(user.getNick()); } - user.setAfk(false); + user.updateActivity(false); if (user.isAuthorized("essentials.sleepingignored")) { user.setSleepingIgnored(true); @@ -299,14 +305,11 @@ public class EssentialsPlayerListener extends PlayerListener @Override public void onPlayerLogin(final PlayerLoginEvent event) { - if (event.getResult() != Result.ALLOWED && event.getResult() != Result.KICK_FULL) + if (event.getResult() != Result.ALLOWED && event.getResult() != Result.KICK_FULL && event.getResult() != Result.KICK_BANNED) { return; } User user = ess.getUser(event.getPlayer()); - if (user == null) { - user = new User(event.getPlayer(), ess); - } user.setNPC(false); final long currentTime = System.currentTimeMillis(); @@ -326,6 +329,7 @@ public class EssentialsPlayerListener extends PlayerListener event.disallow(Result.KICK_FULL, Util.i18n("serverFull")); return; } + event.allow(); user.setLastLogin(System.currentTimeMillis()); updateCompass(user); @@ -426,30 +430,35 @@ public class EssentialsPlayerListener extends PlayerListener } final User user = ess.getUser(event.getPlayer()); final ItemStack is = user.getItemInHand(); - if (is == null || is.getType() == Material.AIR) - { - return; - } - final String command = user.getPowertool(is); - if (command == null || command.isEmpty()) + if (is == null || is.getType() == Material.AIR || !user.arePowerToolsEnabled()) { return; } - if (command.matches(".*\\{player\\}.*")) + final List<String> commandList = user.getPowertool(is); + if (commandList == null || commandList.isEmpty()) { - //user.sendMessage("Click a player to use this command"); return; } - if (command.startsWith("c:")) + + // We need to loop through each command and execute + for (String command : commandList) { - for (Player p : server.getOnlinePlayers()) + if (command.matches(".*\\{player\\}.*")) { - p.sendMessage(user.getDisplayName() + ":" + command.substring(2)); + //user.sendMessage("Click a player to use this command"); + continue; + } + else if (command.startsWith("c:")) + { + for (Player p : server.getOnlinePlayers()) + { + p.sendMessage(user.getDisplayName() + ":" + command.substring(2)); + } + } + else + { + user.getServer().dispatchCommand(event.getPlayer(), command); } - } - else - { - user.getServer().dispatchCommand(user, command); } } @@ -467,16 +476,16 @@ public class EssentialsPlayerListener extends PlayerListener { for (Player player : ess.getServer().getOnlinePlayers()) { - if (ess.getUser(player).isSocialSpyEnabled()) + User spyer = ess.getUser(player); + if (spyer.isSocialSpyEnabled() && !user.equals(spyer)) { player.sendMessage(user.getDisplayName() + " : " + event.getMessage()); } } } - if (user.isAfk()) + if (!cmd.equalsIgnoreCase("afk")) { - user.setAfk(false); - ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName())); + user.updateActivity(true); } } } |