diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 43d397fda..3ea10f64a 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -28,6 +28,7 @@ import org.bukkit.*; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import com.earth2me.essentials.commands.IEssentialsCommand; +import com.earth2me.essentials.commands.NoChargeException; import com.earth2me.essentials.commands.NotEnoughArgumentsException; import com.earth2me.essentials.register.payment.Methods; import com.earth2me.essentials.signs.SignBlockListener; @@ -215,7 +216,7 @@ public class Essentials extends JavaPlugin implements IEssentials if (getSettings().isUpdateEnabled()) { updateTimer = new EssentialsUpdateTimer(this); - getScheduler().scheduleAsyncRepeatingTask(this, updateTimer, 20 * 60, 20 * 3600 * 6); + getScheduler().scheduleAsyncRepeatingTask(this, updateTimer, 20 * 60 * 10, 20 * 3600 * 6); } LOGGER.info(Util.format("loadinfo", this.getDescription().getName(), this.getDescription().getVersion(), Util.joinList(this.getDescription().getAuthors()))); } @@ -451,6 +452,10 @@ public class Essentials extends JavaPlugin implements IEssentials } return true; } + catch (NoChargeException ex) + { + return true; + } catch (NotEnoughArgumentsException ex) { sender.sendMessage(command.getDescription()); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java b/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java index 53ed22a23..8e99dc1ed 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandhelp.java @@ -20,6 +20,9 @@ import java.util.logging.Level; public class Commandhelp extends EssentialsCommand { + private static final String DESCRIPTION = "description"; + private static final String PERMISSION = "permission"; + private static final String PERMISSIONS = "permissions"; public final Yaml yaml = new Yaml(new SafeConstructor()); public Commandhelp() @@ -28,7 +31,7 @@ public class Commandhelp extends EssentialsCommand } @Override - protected void run(Server server, User user, String commandLabel, String[] args) throws Exception + protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { int page = 1; String match = ""; @@ -53,34 +56,32 @@ public class Commandhelp extends EssentialsCommand } } - List lines = getHelpLines(user, match); - if (lines.size() > 0) + final List lines = getHelpLines(user, match); + if (lines.isEmpty()) { - int start = (page - 1) * 9; - int pages = lines.size() / 9 + (lines.size() % 9 > 0 ? 1 : 0); - - user.sendMessage(Util.format("helpPages", page, pages)); - for (int i = start; i < lines.size() && i < start + 9; i++) - { - user.sendMessage(lines.get(i)); - } + throw new Exception(Util.i18n("noHelpFound")); } - else + + final int start = (page - 1) * 9; + final int pages = lines.size() / 9 + (lines.size() % 9 > 0 ? 1 : 0); + + user.sendMessage(Util.format("helpPages", page, pages)); + for (int i = start; i < lines.size() && i < start + 9; i++) { - user.sendMessage(Util.i18n("noHelpFound")); + user.sendMessage(lines.get(i)); } } @Override - protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception + protected void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception { sender.sendMessage(Util.i18n("helpConsole")); } @SuppressWarnings("CallToThreadDumpStack") - private List getHelpLines(User user, String match) throws Exception + private List getHelpLines(final User user, final String match) throws Exception { - List retval = new ArrayList(); + final List retval = new ArrayList(); File helpFile = new File(ess.getDataFolder(), "help_" + Util.sanitizeFileName(user.getName()) + ".txt"); if (!helpFile.exists()) { @@ -116,15 +117,16 @@ public class Commandhelp extends EssentialsCommand try { final PluginDescriptionFile desc = p.getDescription(); - final HashMap> cmds = (HashMap>)desc.getCommands(); + final HashMap> cmds = (HashMap>)desc.getCommands(); pluginName = p.getDescription().getName().toLowerCase(); - for (Entry> k : cmds.entrySet()) + for (Entry> k : cmds.entrySet()) { try { if ((!match.equalsIgnoreCase("")) && (!k.getKey().toLowerCase().contains(match)) - && (!k.getValue().get("description").toLowerCase().contains(match)) + && (!(k.getValue().get(DESCRIPTION) instanceof String + && ((String)k.getValue().get(DESCRIPTION)).toLowerCase().contains(match))) && (!pluginName.contains(match))) { continue; @@ -135,37 +137,69 @@ public class Commandhelp extends EssentialsCommand final String node = "essentials." + k.getKey(); if (!ess.getSettings().isCommandDisabled(k.getKey()) && user.isAuthorized(node)) { - retval.add("§c" + k.getKey() + "§7: " + k.getValue().get("description")); + retval.add("§c" + k.getKey() + "§7: " + k.getValue().get(DESCRIPTION)); } } else { if (ess.getSettings().showNonEssCommandsInHelp()) { - final HashMap value = k.getValue(); - if (value.containsKey("permission") && value.get("permission") != null && !(value.get("permission").equals(""))) + final HashMap value = k.getValue(); + if (value.containsKey(PERMISSION) && value.get(PERMISSION) instanceof String && !(value.get(PERMISSION).equals(""))) { - if (user.isAuthorized(value.get("permission"))) + if (user.isAuthorized((String)value.get(PERMISSION))) { - retval.add("§c" + k.getKey() + "§7: " + value.get("description")); + retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION)); } } - else if (value.containsKey("permissions") && value.get("permissions") != null && !(value.get("permissions").equals(""))) + else if (value.containsKey(PERMISSION) && value.get(PERMISSION) instanceof List && !((List)value.get(PERMISSION)).isEmpty()) { - if (user.isAuthorized(value.get("permissions"))) + boolean enabled = false; + for (Object o : (List)value.get(PERMISSION)) { - retval.add("§c" + k.getKey() + "§7: " + value.get("description")); + if (o instanceof String && user.isAuthorized((String)o)) + { + enabled = true; + break; + } + } + if (enabled) + { + retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION)); + } + } + else if (value.containsKey(PERMISSIONS) && value.get(PERMISSIONS) instanceof String && !(value.get(PERMISSIONS).equals(""))) + { + if (user.isAuthorized((String)value.get(PERMISSIONS))) + { + retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION)); + } + } + else if (value.containsKey(PERMISSIONS) && value.get(PERMISSIONS) instanceof List && !((List)value.get(PERMISSIONS)).isEmpty()) + { + boolean enabled = false; + for (Object o : (List)value.get(PERMISSIONS)) + { + if (o instanceof String && user.isAuthorized((String)o)) + { + enabled = true; + break; + } + } + if (enabled) + { + retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION)); } } else if (user.isAuthorized("essentials.help." + pluginName)) { - retval.add("§c" + k.getKey() + "§7: " + value.get("description")); + retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION)); } else { if (!ess.getSettings().hidePermissionlessHelp()) { - retval.add("§c" + k.getKey() + "§7: " + value.get("description")); + retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION)); } } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java index f556ea360..fbcaa555d 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java @@ -58,5 +58,6 @@ public class Commandhome extends EssentialsCommand user.sendMessage(Util.format("homes", Util.joinList(homes))); } } + throw new NoChargeException(); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandpowertool.java b/Essentials/src/com/earth2me/essentials/commands/Commandpowertool.java index 742535a77..b4977167f 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandpowertool.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandpowertool.java @@ -17,17 +17,17 @@ public class Commandpowertool extends EssentialsCommand } @Override - protected void run(Server server, User user, String commandLabel, String[] args) throws Exception + protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { - ItemStack is = user.getItemInHand(); - List powertools = user.getPowertool(is); - if (is == null || is.getType() == Material.AIR) + final ItemStack itemStack = user.getItemInHand(); + if (itemStack == null || itemStack.getType() == Material.AIR) { throw new Exception(Util.i18n("powerToolAir")); } - String itemName = is.getType().toString().toLowerCase().replaceAll("_", " "); + final String itemName = itemStack.getType().toString().toLowerCase().replaceAll("_", " "); String command = getFinalArg(args, 0); + List powertools = user.getPowertool(itemStack); if (command != null && !command.isEmpty()) { if (command.equalsIgnoreCase("l:")) @@ -66,7 +66,7 @@ public class Commandpowertool extends EssentialsCommand if (command.startsWith("a:")) { command = command.substring(2); - if(powertools.contains(command)) + if (powertools.contains(command)) { throw new Exception(Util.format("powerToolAlreadySet", command, itemName)); } @@ -87,10 +87,13 @@ public class Commandpowertool extends EssentialsCommand } else { - powertools.clear(); + if (powertools != null) + { + powertools.clear(); + } user.sendMessage(Util.format("powerToolRemoveAll", itemName)); } - user.setPowertool(is, powertools); + user.setPowertool(itemStack, powertools); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtp.java b/Essentials/src/com/earth2me/essentials/commands/Commandtp.java index c3cc8f7e5..480fb6153 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtp.java @@ -33,7 +33,7 @@ public class Commandtp extends EssentialsCommand Trade charge = new Trade(this.getName(), ess); charge.isAffordableFor(user); user.getTeleport().teleport(p, charge); - break; + throw new NoChargeException(); case 2: if (!user.isAuthorized("essentials.tpohere")) @@ -46,7 +46,7 @@ public class Commandtp extends EssentialsCommand target.getTeleport().now(toPlayer, false); target.sendMessage(Util.format("teleportAtoB", user.getDisplayName(), toPlayer.getDisplayName())); break; - } + } } @Override @@ -62,5 +62,6 @@ public class Commandtp extends EssentialsCommand User toPlayer = getPlayer(server, args, 1); target.getTeleport().now(toPlayer, false); target.sendMessage(Util.format("teleportAtoB", Console.NAME, toPlayer.getDisplayName())); + return; } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtphere.java b/Essentials/src/com/earth2me/essentials/commands/Commandtphere.java index 036c4be27..bba8d8743 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtphere.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtphere.java @@ -24,5 +24,6 @@ public class Commandtphere extends EssentialsCommand p.getTeleport().teleport(user, new Trade(this.getName(), ess)); user.sendMessage(Util.i18n("teleporting")); p.sendMessage(Util.i18n("teleporting")); + throw new NoChargeException(); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java b/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java index 805aefaca..0786f9cb9 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtppos.java @@ -30,5 +30,6 @@ public class Commandtppos extends EssentialsCommand charge.isAffordableFor(user); user.sendMessage(Util.i18n("teleporting")); user.getTeleport().teleport(l, charge); + throw new NoChargeException(); } } \ No newline at end of file diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java b/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java index b93355f5a..36d1d0df0 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java @@ -26,8 +26,7 @@ public class Commandwarp extends EssentialsCommand { if (!user.isAuthorized("essentials.warp.list")) { - user.sendMessage(Util.i18n("warpListPermission")); - return; + throw new Exception(Util.i18n("warpListPermission")); } Warps warps = ess.getWarps(); @@ -56,7 +55,7 @@ public class Commandwarp extends EssentialsCommand } final int warpPage = (page - 1) * WARPS_PER_PAGE; user.sendMessage(Util.joinList(warpNameList.subList(warpPage, warpPage+Math.min(warpNameList.size() - warpPage, WARPS_PER_PAGE)))); - return; + throw new NoChargeException(); } if (args.length > 0) { @@ -66,13 +65,13 @@ public class Commandwarp extends EssentialsCommand otherUser = ess.getUser(server.getPlayer(args[1])); if (otherUser == null) { - user.sendMessage(Util.i18n("playerNotFound")); - return; + throw new Exception(Util.i18n("playerNotFound")); } warpUser(otherUser, args[0]); - return; + throw new NoChargeException(); } warpUser(user, args[0]); + throw new NoChargeException(); } } @@ -87,8 +86,7 @@ public class Commandwarp extends EssentialsCommand user.getTeleport().warp(name, charge); return; } - user.sendMessage(Util.i18n("warpUsePermission")); - return; + throw new Exception(Util.i18n("warpUsePermission")); } user.getTeleport().warp(name, charge); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandworld.java b/Essentials/src/com/earth2me/essentials/commands/Commandworld.java index 0a315b1d4..77db8e5e3 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandworld.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandworld.java @@ -47,7 +47,7 @@ public class Commandworld extends EssentialsCommand user.sendMessage(Util.i18n("invalidWorld")); user.sendMessage(Util.format("possibleWorlds", server.getWorlds().size() - 1)); user.sendMessage(Util.i18n("typeWorldName")); - return; + throw new NoChargeException(); } } @@ -71,5 +71,6 @@ public class Commandworld extends EssentialsCommand Trade charge = new Trade(this.getName(), ess); charge.isAffordableFor(user); user.getTeleport().teleport(loc, charge); + throw new NoChargeException(); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/NoChargeException.java b/Essentials/src/com/earth2me/essentials/commands/NoChargeException.java new file mode 100644 index 000000000..bb0088792 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/commands/NoChargeException.java @@ -0,0 +1,10 @@ +package com.earth2me.essentials.commands; + + +public class NoChargeException extends Exception +{ + public NoChargeException() + { + super("Will charge later"); + } +}