From 56c384824ace5291549e6340984333a483ee7d46 Mon Sep 17 00:00:00 2001 From: ementalo Date: Thu, 7 Jul 2011 21:05:08 +0100 Subject: [PATCH] #571 test jailing offline players. Person needs to have visited the server at least once and have a players.yml file --- .../essentials/commands/Commandtogglejail.java | 6 +++++- .../essentials/commands/EssentialsCommand.java | 17 +++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java b/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java index acd06bf5a..888dcbf68 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java @@ -22,8 +22,12 @@ public class Commandtogglejail extends EssentialsCommand throw new NotEnoughArgumentsException(); } - User p = getPlayer(server, args, 0); + User p = getPlayer(server, args, 0, true); + if(p == null) + { + + } if (p.isAuthorized("essentials.jail.exempt")) { sender.sendMessage(Util.i18n("mayNotJail")); diff --git a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java index 01ab569a1..ac19f7d74 100644 --- a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java +++ b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java @@ -22,7 +22,7 @@ public abstract class EssentialsCommand implements IEssentialsCommand { this.name = name; } - + public void setEssentials(IEssentials ess) { this.ess = ess; @@ -34,10 +34,23 @@ public abstract class EssentialsCommand implements IEssentialsCommand } protected User getPlayer(Server server, String[] args, int pos) throws NoSuchFieldException, NotEnoughArgumentsException + { + return getPlayer(server, args, pos, false); + } + + protected User getPlayer(Server server, String[] args, int pos, boolean getOffline) throws NoSuchFieldException, NotEnoughArgumentsException { if (args.length <= pos) throw new NotEnoughArgumentsException(); List matches = server.matchPlayer(args[pos]); - if (matches.size() < 1) throw new NoSuchFieldException(Util.i18n("playerNotFound")); + + if (matches.size() < 1) + { + if (!getOffline) throw new NoSuchFieldException(Util.i18n("playerNotFound")); + User u = ess.getOfflineUser(args[pos]); + if (u == null) throw new NoSuchFieldException(Util.i18n("playerNotFound")); + return u; + } + for (Player p : matches) { if (p.getDisplayName().startsWith(args[pos]))