Commands now have the ability to set a permission required before execution

By: Dinnerbone <dinnerbone@dinnerbone.com>
This commit is contained in:
Bukkit/Spigot
2011-09-02 19:20:54 +01:00
parent 8c73a0ec1b
commit e60edf31eb
9 changed files with 407 additions and 144 deletions

View File

@@ -0,0 +1,111 @@
package org.bukkit.util.permissions;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
public class CommandPermissions {
private static final String ROOT = "bukkit.command";
private static final String PREFIX = ROOT + ".";
private CommandPermissions() {}
private static Permission registerWhitelist(Permission parent) {
Permission whitelist = DefaultPermissions.registerPermission(PREFIX + "whitelist", "Allows the user to modify the server whitelist", PermissionDefault.OP, parent);
DefaultPermissions.registerPermission(PREFIX + "whitelist.add", "Allows the user to add a player to the server whitelist", whitelist);
DefaultPermissions.registerPermission(PREFIX + "whitelist.remove", "Allows the user to remove a player from the server whitelist", whitelist);
DefaultPermissions.registerPermission(PREFIX + "whitelist.reload", "Allows the user to reload the server whitelist", whitelist);
DefaultPermissions.registerPermission(PREFIX + "whitelist.enable", "Allows the user to enable the server whitelist", whitelist);
DefaultPermissions.registerPermission(PREFIX + "whitelist.disable", "Allows the user to disable the server whitelist", whitelist);
DefaultPermissions.registerPermission(PREFIX + "whitelist.list", "Allows the user to list all the users on the server whitelist", whitelist);
whitelist.recalculatePermissibles();
return whitelist;
}
private static Permission registerBan(Permission parent) {
Permission ban = DefaultPermissions.registerPermission(PREFIX + "ban", "Allows the user to ban people", PermissionDefault.OP, parent);
DefaultPermissions.registerPermission(PREFIX + "ban.player", "Allows the user to ban players", ban);
DefaultPermissions.registerPermission(PREFIX + "ban.ip", "Allows the user to ban IP addresses", ban);
ban.recalculatePermissibles();
return ban;
}
private static Permission registerUnban(Permission parent) {
Permission unban = DefaultPermissions.registerPermission(PREFIX + "unban", "Allows the user to unban people", PermissionDefault.OP, parent);
DefaultPermissions.registerPermission(PREFIX + "unban.player", "Allows the user to unban players", unban);
DefaultPermissions.registerPermission(PREFIX + "unban.ip", "Allows the user to unban IP addresses", unban);
unban.recalculatePermissibles();
return unban;
}
private static Permission registerOp(Permission parent) {
Permission op = DefaultPermissions.registerPermission(PREFIX + "op", "Allows the user to change operators", PermissionDefault.OP, parent);
DefaultPermissions.registerPermission(PREFIX + "op.give", "Allows the user to give a player operator status", op);
DefaultPermissions.registerPermission(PREFIX + "op.take", "Allows the user to take a players operator status", op);
op.recalculatePermissibles();
return op;
}
private static Permission registerSave(Permission parent) {
Permission save = DefaultPermissions.registerPermission(PREFIX + "save", "Allows the user to save the worlds", PermissionDefault.OP, parent);
DefaultPermissions.registerPermission(PREFIX + "save.enable", "Allows the user to enable automatic saving", save);
DefaultPermissions.registerPermission(PREFIX + "save.disable", "Allows the user to disable automatic saving", save);
DefaultPermissions.registerPermission(PREFIX + "save.perform", "Allows the user to perform a manual save", save);
save.recalculatePermissibles();
return save;
}
private static Permission registerTime(Permission parent) {
Permission time = DefaultPermissions.registerPermission(PREFIX + "time", "Allows the user to alter the time", PermissionDefault.OP, parent);
DefaultPermissions.registerPermission(PREFIX + "time.add", "Allows the user to fast-forward time", time);
DefaultPermissions.registerPermission(PREFIX + "time.set", "Allows the user to change the time", time);
time.recalculatePermissibles();
return time;
}
public static Permission registerPermissions(Permission parent) {
Permission commands = DefaultPermissions.registerPermission(ROOT, "Gives the user the ability to use all Craftbukkit commands", parent);
registerWhitelist(commands);
registerBan(commands);
registerUnban(commands);
registerOp(commands);
registerSave(commands);
registerTime(commands);
DefaultPermissions.registerPermission(PREFIX + "kill", "Allows the user to commit suicide", PermissionDefault.TRUE, commands);
DefaultPermissions.registerPermission(PREFIX + "me", "Allows the user to perform a chat action", PermissionDefault.TRUE, commands);
DefaultPermissions.registerPermission(PREFIX + "tell", "Allows the user to privately message another player", PermissionDefault.TRUE, commands);
DefaultPermissions.registerPermission(PREFIX + "say", "Allows the user to talk as the console", PermissionDefault.OP, commands);
DefaultPermissions.registerPermission(PREFIX + "give", "Allows the user to give items to players", PermissionDefault.OP, commands);
DefaultPermissions.registerPermission(PREFIX + "teleport", "Allows the user to teleport players", PermissionDefault.OP, commands);
DefaultPermissions.registerPermission(PREFIX + "kick", "Allows the user to kick players", PermissionDefault.OP, commands);
DefaultPermissions.registerPermission(PREFIX + "stop", "Allows the user to stop the server", PermissionDefault.OP, commands);
DefaultPermissions.registerPermission(PREFIX + "list", "Allows the user to list all online players", PermissionDefault.OP, commands);
DefaultPermissions.registerPermission(PREFIX + "help", "Allows the user to view the vanilla help menu", PermissionDefault.OP, commands);
DefaultPermissions.registerPermission(PREFIX + "plugins", "Allows the user to view the list of plugins running on this server", PermissionDefault.TRUE, commands);
DefaultPermissions.registerPermission(PREFIX + "reload", "Allows the user to reload the server settings", PermissionDefault.OP, commands);
DefaultPermissions.registerPermission(PREFIX + "version", "Allows the user to view the version of the server", PermissionDefault.TRUE, commands);
commands.recalculatePermissibles();
return commands;
}
}

View File

@@ -0,0 +1,83 @@
package org.bukkit.util.permissions;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
public final class DefaultPermissions {
private static final String ROOT = "craftbukkit";
private static final String PREFIX = ROOT + ".";
private static final String LEGACY_PREFIX = "craft";
private DefaultPermissions() {}
public static Permission registerPermission(Permission perm) {
return registerPermission(perm, true);
}
public static Permission registerPermission(Permission perm, boolean withLegacy) {
Permission result = perm;
try {
Bukkit.getPluginManager().addPermission(perm);
} catch (IllegalArgumentException ex) {
result = Bukkit.getPluginManager().getPermission(perm.getName());
}
if (withLegacy) {
Permission legacy = new Permission(LEGACY_PREFIX + result.getName(), result.getDescription(), PermissionDefault.FALSE);
legacy.getChildren().put(result.getName(), true);
registerPermission(perm, false);
}
return result;
}
public static Permission registerPermission(Permission perm, Permission parent) {
parent.getChildren().put(perm.getName(), true);
return registerPermission(perm);
}
public static Permission registerPermission(String name, String desc) {
Permission perm = registerPermission(new Permission(name, desc));
return perm;
}
public static Permission registerPermission(String name, String desc, Permission parent) {
Permission perm = registerPermission(name, desc);
parent.getChildren().put(perm.getName(), true);
return perm;
}
public static Permission registerPermission(String name, String desc, PermissionDefault def) {
Permission perm = registerPermission(new Permission(name, desc, def));
return perm;
}
public static Permission registerPermission(String name, String desc, PermissionDefault def, Permission parent) {
Permission perm = registerPermission(name, desc, def);
parent.getChildren().put(perm.getName(), true);
return perm;
}
public static Permission registerPermission(String name, String desc, PermissionDefault def, Map<String, Boolean> children) {
Permission perm = registerPermission(new Permission(name, desc, def, children));
return perm;
}
public static Permission registerPermission(String name, String desc, PermissionDefault def, Map<String, Boolean> children, Permission parent) {
Permission perm = registerPermission(name, desc, def, children);
parent.getChildren().put(perm.getName(), true);
return perm;
}
public static void registerCorePermissions() {
Permission parent = registerPermission(ROOT, "Gives the user the ability to use all Craftbukkit utilities and commands");
CommandPermissions.registerPermissions(parent);
parent.recalculatePermissibles();
}
}