diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index f539227f0..36654b91f 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -215,11 +215,11 @@ public class EssentialsPlayerListener extends PlayerListener user.getInventory().setContents(user.getSavedInventory()); user.setSavedInventory(null); } + user.dispose(); if (!ess.getSettings().getReclaimSetting()) { return; } - user.dispose(); final Thread thread = new Thread(new Runnable() { public void run() diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandban.java b/Essentials/src/com/earth2me/essentials/commands/Commandban.java index 1499b10ac..2bd09831d 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandban.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandban.java @@ -1,9 +1,11 @@ package com.earth2me.essentials.commands; +import com.earth2me.essentials.OfflinePlayer; import org.bukkit.Server; import org.bukkit.command.CommandSender; import com.earth2me.essentials.User; import com.earth2me.essentials.Util; +import org.bukkit.entity.Player; public class Commandban extends EssentialsCommand @@ -21,12 +23,24 @@ public class Commandban extends EssentialsCommand throw new NotEnoughArgumentsException(); } final User player = getPlayer(server, args, 0, true); - if (player.isAuthorized("essentials.ban.exempt")) + if (player.getBase() instanceof OfflinePlayer) { - sender.sendMessage(Util.i18n("banExempt")); - return; + if (sender instanceof Player + && !ess.getUser(sender).isAuthorized("essentials.ban.offline")) + { + sender.sendMessage(Util.i18n("banExempt")); + return; + } } - + else + { + if (player.isAuthorized("essentials.ban.exempt")) + { + sender.sendMessage(Util.i18n("banExempt")); + return; + } + } + String banReason; if (args.length > 1) { @@ -42,4 +56,3 @@ public class Commandban extends EssentialsCommand server.broadcastMessage(Util.format("playerBanned", player.getName(), banReason)); } } - diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtempban.java b/Essentials/src/com/earth2me/essentials/commands/Commandtempban.java index 639c2bda0..c9495401e 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtempban.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtempban.java @@ -1,9 +1,11 @@ package com.earth2me.essentials.commands; +import com.earth2me.essentials.OfflinePlayer; import org.bukkit.Server; import org.bukkit.command.CommandSender; import com.earth2me.essentials.User; import com.earth2me.essentials.Util; +import org.bukkit.entity.Player; public class Commandtempban extends EssentialsCommand @@ -21,10 +23,22 @@ public class Commandtempban extends EssentialsCommand throw new NotEnoughArgumentsException(); } final User player = getPlayer(server, args, 0, true); - if (player.isAuthorized("essentials.tempban.exempt")) + if (player.getBase() instanceof OfflinePlayer) { - sender.sendMessage(Util.i18n("tempbanExempt")); - return; + if (sender instanceof Player + && !ess.getUser(sender).isAuthorized("essentials.tempban.offline")) + { + sender.sendMessage(Util.i18n("tempbanExempt")); + return; + } + } + else + { + if (player.isAuthorized("essentials.tempban.exempt")) + { + sender.sendMessage(Util.i18n("tempbanExempt")); + return; + } } final String time = getFinalArg(args, 1); final long banTimestamp = Util.parseDateDiff(time, true); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java b/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java index 4f199e472..3312dafc0 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtogglejail.java @@ -5,6 +5,7 @@ import org.bukkit.Server; import org.bukkit.command.CommandSender; import com.earth2me.essentials.User; import com.earth2me.essentials.Util; +import org.bukkit.entity.Player; public class Commandtogglejail extends EssentialsCommand @@ -23,19 +24,39 @@ public class Commandtogglejail extends EssentialsCommand } User p = getPlayer(server, args, 0, true); - if (p.isAuthorized("essentials.jail.exempt")) - { - sender.sendMessage(Util.i18n("mayNotJail")); - return; - } if (args.length >= 2 && !p.isJailed()) { + if (p.getBase() instanceof OfflinePlayer) + { + if (sender instanceof Player + && !ess.getUser(sender).isAuthorized("essentials.togglejail.offline")) + { + sender.sendMessage(Util.i18n("mayNotJail")); + return; + } + } + else + { + if (p.isAuthorized("essentials.jail.exempt")) + { + sender.sendMessage(Util.i18n("mayNotJail")); + return; + } + } charge(sender); p.setJailed(true); p.sendMessage(Util.i18n("userJailed")); p.setJail(null); - ess.getJail().sendToJail(p, args[1]); + if (!(p.getBase() instanceof OfflinePlayer)) + { + ess.getJail().sendToJail(p, args[1]); + } + else + { + // Check if jail exists + ess.getJail().getJail(args[1]); + } p.setJail(args[1]); long timeDiff = 0; if (args.length > 2) @@ -56,7 +77,7 @@ public class Commandtogglejail extends EssentialsCommand return; } - if (args.length >= 2 && p.isJailed() && !args[1].equalsIgnoreCase(p.getJail())) + if (args.length >= 2 && p.isJailed() && args[1].equalsIgnoreCase(p.getJail())) { String time = getFinalArg(args, 2); long timeDiff = Util.parseDateDiff(time, true);