From 7aea8a3fcee1bc72de87873a63a2b1c2bdbc96a8 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 22:39:01 +0200 Subject: [PATCH 1/6] NPE fix in InventoryWorkaround --- .../src/com/earth2me/essentials/InventoryWorkaround.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java b/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java index e163cfb58..9aee4033c 100644 --- a/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java +++ b/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java @@ -103,6 +103,11 @@ public final class InventoryWorkaround for (int i = 0; i < combined.length; i++) { final ItemStack item = combined[i]; + if (item == null) + { + continue; + } + while (true) { // Do we already have a stack of it? From 81cc5b1f28345640c20a762783af294ebd4da7e7 Mon Sep 17 00:00:00 2001 From: ementalo Date: Mon, 18 Jul 2011 22:16:58 +0100 Subject: [PATCH 2/6] Add yet another way to get a user from our users list, Don't teleport an offline player when jailed Added playerjoin to jaillistener to teleport a player on login --- .../com/earth2me/essentials/Essentials.java | 1 + .../src/com/earth2me/essentials/Jail.java | 5 ++++- .../essentials/JailPlayerListener.java | 21 +++++++++++++++++-- .../essentials/commands/Commandsetjail.java | 1 + .../commands/Commandtogglejail.java | 5 ++++- .../commands/EssentialsCommand.java | 9 ++++++++ 6 files changed, 38 insertions(+), 4 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 1bd909f05..f13075b03 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -217,6 +217,7 @@ public class Essentials extends JavaPlugin implements IEssentials pm.registerEvent(Type.PLAYER_INTERACT, jailPlayerListener, Priority.Low, this); pm.registerEvent(Type.PLAYER_RESPAWN, jailPlayerListener, Priority.High, this); pm.registerEvent(Type.PLAYER_TELEPORT, jailPlayerListener, Priority.High, this); + pm.registerEvent(Type.PLAYER_JOIN, jailPlayerListener, Priority.High, this); if (settings.isNetherEnabled() && getServer().getWorlds().size() < 2) { diff --git a/Essentials/src/com/earth2me/essentials/Jail.java b/Essentials/src/com/earth2me/essentials/Jail.java index a73bb0948..f867a68fd 100644 --- a/Essentials/src/com/earth2me/essentials/Jail.java +++ b/Essentials/src/com/earth2me/essentials/Jail.java @@ -42,7 +42,10 @@ public class Jail extends BlockListener implements IConf public void sendToJail(User user, String jail) throws Exception { - user.getTeleport().now(getJail(jail)); + if (user.getLastActivity() > 0) + { + user.getTeleport().now(getJail(jail)); + } user.setJail(jail); } diff --git a/Essentials/src/com/earth2me/essentials/JailPlayerListener.java b/Essentials/src/com/earth2me/essentials/JailPlayerListener.java index 5ba333952..da8c165cb 100644 --- a/Essentials/src/com/earth2me/essentials/JailPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/JailPlayerListener.java @@ -3,6 +3,7 @@ package com.earth2me.essentials; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerListener; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerTeleportEvent; @@ -62,6 +63,22 @@ public class JailPlayerListener extends PlayerListener } user.sendMessage(Util.i18n("jailMessage")); } - - + + @Override + public void onPlayerJoin(final PlayerJoinEvent event) + { + User u = ess.getUser(event.getPlayer()); + if (u.isJailed()) + { + try + { + ess.getJail().sendToJail(u, u.getJail()); + } + catch (Exception ex) + { + LOGGER.log(Level.WARNING, Util.i18n("returnPlayerToJailError"), ex); + } + u.sendMessage(Util.i18n("jailMessage")); + } + } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsetjail.java b/Essentials/src/com/earth2me/essentials/commands/Commandsetjail.java index 42b5a1953..76fe766c3 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandsetjail.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandsetjail.java @@ -15,6 +15,7 @@ public class Commandsetjail extends EssentialsCommand @Override public void run(Server server, User user, String commandLabel, String[] args) throws Exception { + if (args.length < 1) { throw new NotEnoughArgumentsException(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java b/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java index 899ac37dd..c994cabaa 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java @@ -74,7 +74,10 @@ public class Commandtogglejail extends EssentialsCommand p.setJailTimeout(0); p.sendMessage("§7You have been released"); p.setJail(null); - p.getTeleport().back(); + if (p.getLastActivity() > 0) + { + p.getTeleport().back(); + } sender.sendMessage("§7Player " + p.getName() + " unjailed."); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java index 5ea2bf8b0..23f0b5014 100644 --- a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java +++ b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java @@ -41,6 +41,15 @@ public abstract class EssentialsCommand implements IEssentialsCommand protected User getPlayer(Server server, String[] args, int pos, boolean getOffline) throws NoSuchFieldException, NotEnoughArgumentsException { if (args.length <= pos) throw new NotEnoughArgumentsException(); + User user = ess.getAllUsers().get(args[pos]); + if (user != null) + { + if(user.isHidden()) + { + throw new NoSuchFieldException(Util.i18n("playerNotFound")); + } + return user; + } List matches = server.matchPlayer(args[pos]); if (matches.size() < 1) From 15687c20d0ef0421b976f08453ccf8f4b01da0b4 Mon Sep 17 00:00:00 2001 From: ementalo Date: Mon, 18 Jul 2011 22:49:27 +0100 Subject: [PATCH 3/6] only check hidden if !offline, compare user with offlineplayer class --- Essentials/src/com/earth2me/essentials/Jail.java | 2 +- .../com/earth2me/essentials/commands/Commandtogglejail.java | 3 ++- .../com/earth2me/essentials/commands/EssentialsCommand.java | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Jail.java b/Essentials/src/com/earth2me/essentials/Jail.java index f867a68fd..fdc184055 100644 --- a/Essentials/src/com/earth2me/essentials/Jail.java +++ b/Essentials/src/com/earth2me/essentials/Jail.java @@ -42,7 +42,7 @@ public class Jail extends BlockListener implements IConf public void sendToJail(User user, String jail) throws Exception { - if (user.getLastActivity() > 0) + if (!(user.getBase() instanceof OfflinePlayer)) { user.getTeleport().now(getJail(jail)); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java b/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java index c994cabaa..4f199e472 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.commands; +import com.earth2me.essentials.OfflinePlayer; import org.bukkit.Server; import org.bukkit.command.CommandSender; import com.earth2me.essentials.User; @@ -74,7 +75,7 @@ public class Commandtogglejail extends EssentialsCommand p.setJailTimeout(0); p.sendMessage("§7You have been released"); p.setJail(null); - if (p.getLastActivity() > 0) + if (!(p.getBase() instanceof OfflinePlayer)) { p.getTeleport().back(); } diff --git a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java index 23f0b5014..663895ff7 100644 --- a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java +++ b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java @@ -44,7 +44,7 @@ public abstract class EssentialsCommand implements IEssentialsCommand User user = ess.getAllUsers().get(args[pos]); if (user != null) { - if(user.isHidden()) + if(!getOffline && user.isHidden()) { throw new NoSuchFieldException(Util.i18n("playerNotFound")); } From 6dbb5bc605c6fcae709e8260e442d8023b02c6cb Mon Sep 17 00:00:00 2001 From: snowleo Date: Tue, 19 Jul 2011 00:02:35 +0200 Subject: [PATCH 4/6] Always use lowercase if accessing users map. --- .../src/com/earth2me/essentials/commands/EssentialsCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java index 663895ff7..bb4087c92 100644 --- a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java +++ b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java @@ -41,7 +41,7 @@ public abstract class EssentialsCommand implements IEssentialsCommand protected User getPlayer(Server server, String[] args, int pos, boolean getOffline) throws NoSuchFieldException, NotEnoughArgumentsException { if (args.length <= pos) throw new NotEnoughArgumentsException(); - User user = ess.getAllUsers().get(args[pos]); + User user = ess.getAllUsers().get(args[pos].toLowerCase()); if (user != null) { if(!getOffline && user.isHidden()) From 548666b79b0bcdd24443f7bfc1cea43cdcc2a851 Mon Sep 17 00:00:00 2001 From: snowleo Date: Tue, 19 Jul 2011 00:09:30 +0200 Subject: [PATCH 5/6] show hidden for /whois --- .../earth2me/essentials/commands/Commandwhois.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java b/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java index 9b5d172f2..ef815dd87 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java @@ -22,13 +22,25 @@ public class Commandwhois extends EssentialsCommand { throw new NotEnoughArgumentsException(); } + boolean showhidden = false; + if (sender instanceof Player) + { + if (ess.getUser(sender).isAuthorized("essentials.list.hidden")) + { + showhidden = true; + } + } + else + { + showhidden = true; + } String whois = args[0].toLowerCase(); charge(sender); int prefixLength = ChatColor.stripColor(ess.getSettings().getNicknamePrefix()).length(); for (Player p : server.getOnlinePlayers()) { User u = ess.getUser(p); - if (u.isHidden()) + if (u.isHidden() && !showhidden) { continue; } From d0bf1905a9e84f8b70d7d85d6a9253b16a7cc223 Mon Sep 17 00:00:00 2001 From: snowleo Date: Tue, 19 Jul 2011 00:10:33 +0200 Subject: [PATCH 6/6] {UNIQUE} player count for motd --- Essentials/src/com/earth2me/essentials/Essentials.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index f13075b03..4a1562eaf 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -329,6 +329,7 @@ public class Essentials extends JavaPlugin implements IEssentials } } m = m.replace("{ONLINE}", Integer.toString(getServer().getOnlinePlayers().length - playerHidden)); + m = m.replace("{UNIQUE}", Integer.toString(users.size())); if (m.matches(".*\\{PLAYERLIST\\}.*")) {