Made tool permissions dynamic

This commit is contained in:
Robin Kupper
2011-09-22 13:38:00 +02:00
parent a8559b28e7
commit 263b5a40d5
4 changed files with 24 additions and 18 deletions

View File

@@ -15,6 +15,7 @@ import java.util.Set;
import java.util.zip.DataFormatException; import java.util.zip.DataFormatException;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.command.ConsoleCommandSender; import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.util.config.Configuration; import org.bukkit.util.config.Configuration;
public class Config public class Config
@@ -85,6 +86,7 @@ public class Config
tdef.put("item", 270); tdef.put("item", 270);
tdef.put("params", "area 0 all sum none limit 15 desc silent"); tdef.put("params", "area 0 all sum none limit 15 desc silent");
tdef.put("mode", "LOOKUP"); tdef.put("mode", "LOOKUP");
tdef.put("permissionDefault", "TRUE");
tbdef.put("aliases", Arrays.asList("tb")); tbdef.put("aliases", Arrays.asList("tb"));
tbdef.put("leftClickBehavior", "TOOL"); tbdef.put("leftClickBehavior", "TOOL");
tbdef.put("rightClickBehavior", "BLOCK"); tbdef.put("rightClickBehavior", "BLOCK");
@@ -92,6 +94,7 @@ public class Config
tbdef.put("item", 7); tbdef.put("item", 7);
tbdef.put("params", "area 0 all sum none limit 15 desc silent"); tbdef.put("params", "area 0 all sum none limit 15 desc silent");
tbdef.put("mode", "LOOKUP"); tbdef.put("mode", "LOOKUP");
tbdef.put("permissionDefault", "TRUE");
tooldef.put("tool", tdef); tooldef.put("tool", tdef);
tooldef.put("toolblock", tbdef); tooldef.put("toolblock", tbdef);
def.put("tools", tooldef); def.put("tools", tooldef);
@@ -115,7 +118,7 @@ public class Config
dumpDeletedLog = config.getBoolean("clearlog.dumpDeletedLog", false); dumpDeletedLog = config.getBoolean("clearlog.dumpDeletedLog", false);
logCreeperExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false); logCreeperExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false);
try { try {
logKillsLevel = LogKillsLevel.valueOf(config.getString("logging.logKillsLevel")); logKillsLevel = LogKillsLevel.valueOf(config.getString("logging.logKillsLevel").toUpperCase());
} catch (final IllegalArgumentException ex) { } catch (final IllegalArgumentException ex) {
throw new DataFormatException("lookup.toolblockID doesn't appear to be a valid log level. Allowed are 'PLAYERS', 'MONSTERS' and 'ANIMALS'"); 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<Tool> tools = new ArrayList<Tool>(); final List<Tool> tools = new ArrayList<Tool>();
for (final String toolName : toolNames) for (final String toolName : toolNames)
try { try {
final List<String> aliases = config.getStringList("tools." + toolName + ".aliases", null); final String path = "tools." + toolName;
final ToolBehavior leftClickBehavior = ToolBehavior.valueOf(config.getString("tools." + toolName + ".leftClickBehavior")); final List<String> aliases = config.getStringList(path + ".aliases", null);
final ToolBehavior rightClickBehavior = ToolBehavior.valueOf(config.getString("tools." + toolName + ".rightClickBehavior")); final ToolBehavior leftClickBehavior = ToolBehavior.valueOf(config.getString(path + ".leftClickBehavior").toUpperCase());
final boolean defaultEnabled = config.getBoolean("tools." + toolName + ".defaultEnabled", false); final ToolBehavior rightClickBehavior = ToolBehavior.valueOf(config.getString(path + ".rightClickBehavior").toUpperCase());
final int item = config.getInt("tools." + toolName + ".item", 0); final boolean defaultEnabled = config.getBoolean(path + ".defaultEnabled", false);
final int item = config.getInt(path + ".item", 0);
final QueryParams params = new QueryParams(logblock); final QueryParams params = new QueryParams(logblock);
params.prepareToolQuery = true; params.prepareToolQuery = true;
params.parseArgs(new ConsoleCommandSender(logblock.getServer()), Arrays.asList(config.getString("tools." + toolName + ".params").split(" "))); params.parseArgs(new ConsoleCommandSender(logblock.getServer()), Arrays.asList(config.getString(path + ".params").split(" ")));
final ToolMode mode = ToolMode.valueOf(config.getString("tools." + toolName + ".mode")); final ToolMode mode = ToolMode.valueOf(config.getString(path + ".mode").toUpperCase());
tools.add(new Tool(toolName, aliases, leftClickBehavior, rightClickBehavior, defaultEnabled, item, params, mode)); 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) { } catch (final Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
throw new DataFormatException("Error at parsing tool '" + toolName + "': " + ex.getMessage()); throw new DataFormatException("Error at parsing tool '" + toolName + "': " + ex.getMessage());

View File

@@ -24,6 +24,7 @@ import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Event.Priority; import org.bukkit.event.Event.Priority;
import org.bukkit.event.Event.Type; import org.bukkit.event.Event.Type;
import org.bukkit.permissions.Permission;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import com.nijiko.permissions.PermissionHandler; import com.nijiko.permissions.PermissionHandler;
@@ -231,6 +232,11 @@ public class LogBlock extends JavaPlugin
timer.scheduleAtFixedRate(consumer, config.delayBetweenRuns * 1000, config.delayBetweenRuns * 1000); timer.scheduleAtFixedRate(consumer, config.delayBetweenRuns * 1000, config.delayBetweenRuns * 1000);
log.info("[LogBlock] Scheduled consumer with timer."); 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."); log.info("LogBlock v" + getDescription().getVersion() + " by DiddiZ enabled.");
} }

View File

@@ -1,6 +1,7 @@
package de.diddiz.LogBlock; package de.diddiz.LogBlock;
import java.util.List; import java.util.List;
import org.bukkit.permissions.PermissionDefault;
public class Tool public class Tool
{ {
@@ -11,8 +12,9 @@ public class Tool
public final int item; public final int item;
public final QueryParams params; public final QueryParams params;
public final ToolMode mode; public final ToolMode mode;
public final PermissionDefault permissionDefault;
public Tool(String name, List<String> aliases, ToolBehavior leftClickBehavior, ToolBehavior rightClickBehavior, boolean defaultEnabled, int item, QueryParams params, ToolMode mode) { public Tool(String name, List<String> aliases, ToolBehavior leftClickBehavior, ToolBehavior rightClickBehavior, boolean defaultEnabled, int item, QueryParams params, ToolMode mode, PermissionDefault permissionDefault) {
this.name = name; this.name = name;
this.aliases = aliases; this.aliases = aliases;
this.leftClickBehavior = leftClickBehavior; this.leftClickBehavior = leftClickBehavior;
@@ -21,6 +23,7 @@ public class Tool
this.item = item; this.item = item;
this.params = params; this.params = params;
this.mode = mode; this.mode = mode;
this.permissionDefault = permissionDefault;
} }
} }

View File

@@ -14,8 +14,6 @@ permissions:
logblock.*: logblock.*:
description: Gives access to all LogBlock commands description: Gives access to all LogBlock commands
children: children:
logblock.tool: true
logblock.toolblock: true
logblock.lookup: true logblock.lookup: true
logblock.rollback: true logblock.rollback: true
logblock.clearlog: true logblock.clearlog: true
@@ -23,12 +21,6 @@ permissions:
logblock.tp: true logblock.tp: true
logblock.me: true logblock.me: true
logblock.ignoreRestrictions: 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: logblock.lookup:
description: 'Grants access to /lb lookup commands and allows defining custom tool queries' description: 'Grants access to /lb lookup commands and allows defining custom tool queries'
default: op default: op