forked from LogBlock/LogBlock
Made tool permissions dynamic
This commit is contained in:
@@ -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());
|
||||
|
@@ -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.");
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user