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 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<Tool> tools = new ArrayList<Tool>();
for (final String toolName : toolNames)
try {
final List<String> 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<String> 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());

View File

@@ -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.");
}

View File

@@ -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<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.aliases = aliases;
this.leftClickBehavior = leftClickBehavior;
@@ -21,6 +23,7 @@ public class Tool
this.item = item;
this.params = params;
this.mode = mode;
this.permissionDefault = permissionDefault;
}
}

View File

@@ -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