summaryrefslogtreecommitdiffstats
path: root/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
diff options
context:
space:
mode:
Diffstat (limited to 'Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java')
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java89
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);
}
}
}