From 5998e37cd88fa203cabf048dd850597921e1646b Mon Sep 17 00:00:00 2001 From: Robin Kupper Date: Sat, 12 Nov 2011 11:01:09 +0100 Subject: [PATCH] Fixed everyone with logblock.spawnTools was allowed to spawn tools without the tool permission --- src/de/diddiz/LogBlock/CommandsHandler.java | 101 ++++++++++---------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/src/de/diddiz/LogBlock/CommandsHandler.java b/src/de/diddiz/LogBlock/CommandsHandler.java index 9e14cc6..e4787fc 100644 --- a/src/de/diddiz/LogBlock/CommandsHandler.java +++ b/src/de/diddiz/LogBlock/CommandsHandler.java @@ -135,57 +135,60 @@ public class CommandsHandler implements CommandExecutor sender.sendMessage(ChatColor.GOLD + msg.substring(2)); } } else if (config.toolsByName.get(command) != null) { - if (sender instanceof Player) { - final Player player = (Player)sender; - final Session session = Session.getSession(player.getName()); - final Tool tool = config.toolsByName.get(command); - final ToolData toolData = session.toolData.get(tool); - if (args.length == 1) { - if (logblock.hasPermission(player, "logblock.spawnTools")) { - giveTool(player, tool.item); - session.toolData.get(tool).enabled = true; - } else - sender.sendMessage(ChatColor.RED + "You aren't allowed to do this."); - } else if (args[1].equalsIgnoreCase("enable") || args[1].equalsIgnoreCase("on")) { - toolData.enabled = true; - player.sendMessage(ChatColor.GREEN + "Tool enabled."); - } else if (args[1].equalsIgnoreCase("disable") || args[1].equalsIgnoreCase("off")) { - toolData.enabled = false; - player.getInventory().removeItem(new ItemStack(tool.item, 1)); - player.sendMessage(ChatColor.GREEN + "Tool disabled."); - } else if (args[1].equalsIgnoreCase("mode")) { - if (args.length == 3) { - final ToolMode mode; - try { - mode = ToolMode.valueOf(args[2].toUpperCase()); - } catch (final IllegalArgumentException ex) { - sender.sendMessage(ChatColor.RED + "Can't find mode " + args[2]); - return true; - } - if (logblock.hasPermission(player, mode.getPermission())) { - toolData.mode = mode; - sender.sendMessage(ChatColor.GREEN + "Tool mode set to " + args[2]); + final Tool tool = config.toolsByName.get(command); + if (logblock.hasPermission(sender, "logblock.tools." + tool.name)) { + if (sender instanceof Player) { + final Player player = (Player)sender; + final Session session = Session.getSession(player.getName()); + final ToolData toolData = session.toolData.get(tool); + if (args.length == 1) { + if (logblock.hasPermission(player, "logblock.spawnTools")) { + giveTool(player, tool.item); + session.toolData.get(tool).enabled = true; } else - sender.sendMessage(ChatColor.RED + "You aren't allowed to use mode " + args[2]); - } else - player.sendMessage(ChatColor.RED + "No mode specified"); - } else if (args[1].equalsIgnoreCase("default")) { - toolData.params = tool.params.clone(); - toolData.mode = tool.mode; - sender.sendMessage(ChatColor.GREEN + "Tool set to default."); - } else if (logblock.hasPermission(player, "logblock.lookup")) - try { - final QueryParams params = tool.params.clone(); - params.parseArgs(sender, argsToList(args, 1)); - toolData.params = params; - sender.sendMessage(ChatColor.GREEN + "Set tool query to: " + params.getTitle()); - } catch (final Exception ex) { - sender.sendMessage(ChatColor.RED + ex.getMessage()); - } - else - sender.sendMessage(ChatColor.RED + "You aren't allowed to do this."); + sender.sendMessage(ChatColor.RED + "You aren't allowed to do this."); + } else if (args[1].equalsIgnoreCase("enable") || args[1].equalsIgnoreCase("on")) { + toolData.enabled = true; + player.sendMessage(ChatColor.GREEN + "Tool enabled."); + } else if (args[1].equalsIgnoreCase("disable") || args[1].equalsIgnoreCase("off")) { + toolData.enabled = false; + player.getInventory().removeItem(new ItemStack(tool.item, 1)); + player.sendMessage(ChatColor.GREEN + "Tool disabled."); + } else if (args[1].equalsIgnoreCase("mode")) { + if (args.length == 3) { + final ToolMode mode; + try { + mode = ToolMode.valueOf(args[2].toUpperCase()); + } catch (final IllegalArgumentException ex) { + sender.sendMessage(ChatColor.RED + "Can't find mode " + args[2]); + return true; + } + if (logblock.hasPermission(player, mode.getPermission())) { + toolData.mode = mode; + sender.sendMessage(ChatColor.GREEN + "Tool mode set to " + args[2]); + } else + sender.sendMessage(ChatColor.RED + "You aren't allowed to use mode " + args[2]); + } else + player.sendMessage(ChatColor.RED + "No mode specified"); + } else if (args[1].equalsIgnoreCase("default")) { + toolData.params = tool.params.clone(); + toolData.mode = tool.mode; + sender.sendMessage(ChatColor.GREEN + "Tool set to default."); + } else if (logblock.hasPermission(player, "logblock.lookup")) + try { + final QueryParams params = tool.params.clone(); + params.parseArgs(sender, argsToList(args, 1)); + toolData.params = params; + sender.sendMessage(ChatColor.GREEN + "Set tool query to: " + params.getTitle()); + } catch (final Exception ex) { + sender.sendMessage(ChatColor.RED + ex.getMessage()); + } + else + sender.sendMessage(ChatColor.RED + "You aren't allowed to do this."); + } else + sender.sendMessage(ChatColor.RED + "You have to be a player."); } else - sender.sendMessage(ChatColor.RED + "You have to be a player."); + sender.sendMessage(ChatColor.RED + "You aren't allowed to do this."); } else if (command.equals("hide")) { if (sender instanceof Player) { if (logblock.hasPermission(sender, "logblock.hide")) {