diff --git a/src/de/diddiz/LogBlock/Config.java b/src/de/diddiz/LogBlock/Config.java index c4a85cd..92b2150 100644 --- a/src/de/diddiz/LogBlock/Config.java +++ b/src/de/diddiz/LogBlock/Config.java @@ -15,6 +15,7 @@ import java.util.Set; import java.util.zip.DataFormatException; import org.bukkit.Material; import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.permissions.PermissionDefault; import org.bukkit.util.config.Configuration; public class Config @@ -85,6 +86,7 @@ public class Config tdef.put("item", 270); tdef.put("params", "area 0 all sum none limit 15 desc silent"); tdef.put("mode", "LOOKUP"); + tdef.put("permissionDefault", "TRUE"); tbdef.put("aliases", Arrays.asList("tb")); tbdef.put("leftClickBehavior", "TOOL"); tbdef.put("rightClickBehavior", "BLOCK"); @@ -92,6 +94,7 @@ public class Config tbdef.put("item", 7); tbdef.put("params", "area 0 all sum none limit 15 desc silent"); tbdef.put("mode", "LOOKUP"); + tbdef.put("permissionDefault", "TRUE"); tooldef.put("tool", tdef); tooldef.put("toolblock", tbdef); def.put("tools", tooldef); @@ -115,7 +118,7 @@ public class Config dumpDeletedLog = config.getBoolean("clearlog.dumpDeletedLog", false); logCreeperExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false); try { - logKillsLevel = LogKillsLevel.valueOf(config.getString("logging.logKillsLevel")); + logKillsLevel = LogKillsLevel.valueOf(config.getString("logging.logKillsLevel").toUpperCase()); } catch (final IllegalArgumentException ex) { throw new DataFormatException("lookup.toolblockID doesn't appear to be a valid log level. Allowed are 'PLAYERS', 'MONSTERS' and 'ANIMALS'"); } @@ -151,16 +154,18 @@ public class Config final List tools = new ArrayList(); for (final String toolName : toolNames) try { - final List aliases = config.getStringList("tools." + toolName + ".aliases", null); - final ToolBehavior leftClickBehavior = ToolBehavior.valueOf(config.getString("tools." + toolName + ".leftClickBehavior")); - final ToolBehavior rightClickBehavior = ToolBehavior.valueOf(config.getString("tools." + toolName + ".rightClickBehavior")); - final boolean defaultEnabled = config.getBoolean("tools." + toolName + ".defaultEnabled", false); - final int item = config.getInt("tools." + toolName + ".item", 0); + final String path = "tools." + toolName; + final List aliases = config.getStringList(path + ".aliases", null); + final ToolBehavior leftClickBehavior = ToolBehavior.valueOf(config.getString(path + ".leftClickBehavior").toUpperCase()); + final ToolBehavior rightClickBehavior = ToolBehavior.valueOf(config.getString(path + ".rightClickBehavior").toUpperCase()); + final boolean defaultEnabled = config.getBoolean(path + ".defaultEnabled", false); + final int item = config.getInt(path + ".item", 0); final QueryParams params = new QueryParams(logblock); params.prepareToolQuery = true; - params.parseArgs(new ConsoleCommandSender(logblock.getServer()), Arrays.asList(config.getString("tools." + toolName + ".params").split(" "))); - final ToolMode mode = ToolMode.valueOf(config.getString("tools." + toolName + ".mode")); - tools.add(new Tool(toolName, aliases, leftClickBehavior, rightClickBehavior, defaultEnabled, item, params, mode)); + params.parseArgs(new ConsoleCommandSender(logblock.getServer()), Arrays.asList(config.getString(path + ".params").split(" "))); + final ToolMode mode = ToolMode.valueOf(config.getString(path + ".mode").toUpperCase()); + final PermissionDefault pdef = PermissionDefault.valueOf(config.getString(path + ".permissionDefault").toUpperCase()); + tools.add(new Tool(toolName, aliases, leftClickBehavior, rightClickBehavior, defaultEnabled, item, params, mode, pdef)); } catch (final Exception ex) { ex.printStackTrace(); throw new DataFormatException("Error at parsing tool '" + toolName + "': " + ex.getMessage()); diff --git a/src/de/diddiz/LogBlock/LogBlock.java b/src/de/diddiz/LogBlock/LogBlock.java index a5e2640..1ca05ab 100644 --- a/src/de/diddiz/LogBlock/LogBlock.java +++ b/src/de/diddiz/LogBlock/LogBlock.java @@ -24,6 +24,7 @@ import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; import org.bukkit.event.Event.Priority; import org.bukkit.event.Event.Type; +import org.bukkit.permissions.Permission; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import com.nijiko.permissions.PermissionHandler; @@ -231,6 +232,11 @@ public class LogBlock extends JavaPlugin timer.scheduleAtFixedRate(consumer, config.delayBetweenRuns * 1000, config.delayBetweenRuns * 1000); log.info("[LogBlock] Scheduled consumer with timer."); } + for (final Tool tool : config.toolsByType.values()) { + final Permission perm = new Permission("logblock.tools." + tool.name, tool.permissionDefault); + pm.addPermission(perm); + // perm.addParent("logblock.*", true); + } log.info("LogBlock v" + getDescription().getVersion() + " by DiddiZ enabled."); } diff --git a/src/de/diddiz/LogBlock/Tool.java b/src/de/diddiz/LogBlock/Tool.java index 5d07dd1..16eb9c7 100644 --- a/src/de/diddiz/LogBlock/Tool.java +++ b/src/de/diddiz/LogBlock/Tool.java @@ -1,6 +1,7 @@ package de.diddiz.LogBlock; import java.util.List; +import org.bukkit.permissions.PermissionDefault; public class Tool { @@ -11,8 +12,9 @@ public class Tool public final int item; public final QueryParams params; public final ToolMode mode; + public final PermissionDefault permissionDefault; - public Tool(String name, List aliases, ToolBehavior leftClickBehavior, ToolBehavior rightClickBehavior, boolean defaultEnabled, int item, QueryParams params, ToolMode mode) { + public Tool(String name, List aliases, ToolBehavior leftClickBehavior, ToolBehavior rightClickBehavior, boolean defaultEnabled, int item, QueryParams params, ToolMode mode, PermissionDefault permissionDefault) { this.name = name; this.aliases = aliases; this.leftClickBehavior = leftClickBehavior; @@ -21,6 +23,7 @@ public class Tool this.item = item; this.params = params; this.mode = mode; + this.permissionDefault = permissionDefault; } } diff --git a/src/plugin.yml b/src/plugin.yml index 1bf8d36..04eb9e3 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -14,8 +14,6 @@ permissions: logblock.*: description: Gives access to all LogBlock commands children: - logblock.tool: true - logblock.toolblock: true logblock.lookup: true logblock.rollback: true logblock.clearlog: true @@ -23,12 +21,6 @@ permissions: logblock.tp: true logblock.me: true logblock.ignoreRestrictions: true - logblock.tool: - description: 'Allows using the tool (the woodpickaxe) with default query (toolQuery in config)' - default: true - logblock.toolblock: - description: 'Allows using the tool block (the bedrock block) with default query (toolBlockQuery in config)' - default: true logblock.lookup: description: 'Grants access to /lb lookup commands and allows defining custom tool queries' default: op