/*
* PermissionsEx - Permissions plugin for Bukkit
* Copyright (C) 2011 t3hk0d3 http://www.tehkode.ru
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package pex.permissions.bukkit.commands;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import net.minecraft.command.ICommandSender;
import net.minecraft.util.EnumChatFormatting;
import pex.permissions.PermissionGroup;
import pex.permissions.PermissionUser;
import pex.permissions.bukkit.PermissionsEx;
import pex.permissions.commands.Command;
import pex.utils.DateUtils;
import pex.utils.StringUtils;
public class GroupCommands extends PermissionsCommand {
@Command(name = "pex", syntax = "groups list [world]", permission = "permissions.manage.groups.list", description = "List all registered groups")
public void groupsList(Object plugin, ICommandSender sender, Map<String, String> args) {
PermissionGroup[] groups = PermissionsEx.getPermissionManager().getGroups();
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Registered groups: ");
for (PermissionGroup group : groups) {
String rank = "";
if (group.isRanked()) {
rank = " (rank: " + group.getRank() + "@" + group.getRankLadder() + ") ";
}
PermissionsEx.sendChatToPlayer(sender, String.format(" %s %s %s %s[%s]", group.getName(), " #" + group.getWeight(), rank, EnumChatFormatting.DARK_GREEN, StringUtils.implode(group.getParentGroupsNames(worldName), ", ")));
}
}
@Command(name = "pex", syntax = "groups", permission = "permissions.manage.groups.list", description = "List all registered groups (alias)")
public void groupsListAlias(Object plugin, ICommandSender sender, Map<String, String> args) {
groupsList(plugin, sender, args);
}
@Command(name = "pex", syntax = "group", permission = "permissions.manage.groups.list", description = "List all registered groups (alias)")
public void groupsListAnotherAlias(Object plugin, ICommandSender sender, Map<String, String> args) {
groupsList(plugin, sender, args);
}
@Command(name = "pex", syntax = "group <group> weight [weight]", permission = "permissions.manage.groups.weight.<group>", description = "Print or set group weight")
public void groupPrintSetWeight(Object plugin, ICommandSender sender, Map<String, String> args) {
// String groupName = this.autoCompleteGroupName(args.get("group"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(args.get("group"));
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
if (args.containsKey("weight")) {
try {
group.setWeight(Integer.parseInt(args.get("weight")));
} catch (NumberFormatException e) {
PermissionsEx.sendChatToPlayer(sender, "Error! Weight should be integer value.");
return;
}
}
PermissionsEx.sendChatToPlayer(sender, "Group " + group.getName() + " have " + group.getWeight() + " calories.");
}
@Command(name = "pex", syntax = "group <group> toggle debug", permission = "permissions.manage.groups.debug.<group>", description = "Toggle debug mode for group")
public void groupToggleDebug(Object plugin, ICommandSender sender, Map<String, String> args) {
// String groupName = this.autoCompleteGroupName(args.get("group"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(args.get("group"));
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
group.setDebug(!group.isDebug());
PermissionsEx.sendChatToPlayer(sender, "Debug mode for group " + group.getName() + " have been " + (group.isDebug() ? "enabled" : "disabled") + "!");
}
@Command(name = "pex", syntax = "group <group> prefix [newprefix] [world]", permission = "permissions.manage.groups.prefix.<group>", description = "Get or set <group> prefix.")
public void groupPrefix(Object plugin, ICommandSender sender, Map<String, String> args) {
// String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(args.get("group"));
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
if (args.containsKey("newprefix")) {
group.setPrefix(args.get("newprefix"), worldName);
}
PermissionsEx.sendChatToPlayer(sender, group.getName() + "'s prefix = \"" + group.getPrefix(worldName) + "\"");
}
@Command(name = "pex", syntax = "group <group> suffix [newsuffix] [world]", permission = "permissions.manage.groups.suffix.<group>", description = "Get or set <group> suffix")
public void groupSuffix(Object plugin, ICommandSender sender, Map<String, String> args) {
// String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(args.get("group"));
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
if (args.containsKey("newsuffix")) {
group.setSuffix(args.get("newsuffix"), worldName);
}
PermissionsEx.sendChatToPlayer(sender, group.getName() + "'s suffix is = \"" + group.getSuffix(worldName) + "\"");
}
@Command(name = "pex", syntax = "group <group> create [parents]", permission = "permissions.manage.groups.create.<group>", description = "Create <group> and/or set [parents]")
public void groupCreate(Object plugin, ICommandSender sender, Map<String, String> args) {
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(args.get("group"));
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
if (!group.isVirtual()) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group " + args.get("group") + " already exists");
return;
}
if (args.get("parents") != null) {
String[] parents = args.get("parents").split(",");
List<PermissionGroup> groups = new LinkedList<PermissionGroup>();
for (String parent : parents) {
groups.add(PermissionsEx.getPermissionManager().getGroup(parent));
}
group.setParentGroups(groups.toArray(new PermissionGroup[0]), null);
}
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Group " + group.getName() + " created!");
group.save();
}
@Command(name = "pex", syntax = "group <group> delete", permission = "permissions.manage.groups.remove.<group>", description = "Remove <group>")
public void groupDelete(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Group " + group.getName() + " removed!");
group.remove();
PermissionsEx.getPermissionManager().resetGroup(group.getName());
group = null;
}
/**
* Group inheritance
*/
@Command(name = "pex", syntax = "group <group> parents [world]", permission = "permissions.manage.groups.inheritance.<group>", description = "List parents for <group> (alias)")
public void groupListParentsAlias(Object plugin, ICommandSender sender, Map<String, String> args) {
groupListParents(plugin, sender, args);
}
@Command(name = "pex", syntax = "group <group> parents list [world]", permission = "permissions.manage.groups.inheritance.<group>", description = "List parents for <group>")
public void groupListParents(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
if (group.getParentGroups(worldName).length == 0) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group " + group.getName() + " doesn't have parents");
return;
}
PermissionsEx.sendChatToPlayer(sender, "Group " + group.getName() + " parents:");
for (PermissionGroup parent : group.getParentGroups(worldName)) {
PermissionsEx.sendChatToPlayer(sender, " " + parent.getName());
}
}
@Command(name = "pex", syntax = "group <group> parents set <parents> [world]", permission = "permissions.manage.groups.inheritance.<group>", description = "Set parent(s) for <group> (single or comma-separated list)")
public void groupSetParents(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
if (args.get("parents") != null) {
String[] parents = args.get("parents").split(",");
List<PermissionGroup> groups = new LinkedList<PermissionGroup>();
for (String parent : parents) {
PermissionGroup parentGroup = PermissionsEx.getPermissionManager().getGroup(this.autoCompleteGroupName(parent));
if (parentGroup != null && !groups.contains(parentGroup)) {
groups.add(parentGroup);
}
}
group.setParentGroups(groups.toArray(new PermissionGroup[0]), worldName);
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Group " + group.getName() + " inheritance updated!");
group.save();
}
}
@Command(name = "pex", syntax = "group <group> parents add <parents> [world]", permission = "permissions.manage.groups.inheritance.<group>", description = "Set parent(s) for <group> (single or comma-separated list)")
public void groupAddParents(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
if (args.get("parents") != null) {
String[] parents = args.get("parents").split(",");
List<PermissionGroup> groups = new LinkedList<PermissionGroup>(Arrays.asList(group.getParentGroups(worldName)));
for (String parent : parents) {
PermissionGroup parentGroup = PermissionsEx.getPermissionManager().getGroup(this.autoCompleteGroupName(parent));
if (parentGroup != null && !groups.contains(parentGroup)) {
groups.add(parentGroup);
}
}
group.setParentGroups(groups.toArray(new PermissionGroup[0]), worldName);
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Group " + group.getName() + " inheritance updated!");
group.save();
}
}
@Command(name = "pex", syntax = "group <group> parents remove <parents> [world]", permission = "permissions.manage.groups.inheritance.<group>", description = "Set parent(s) for <group> (single or comma-separated list)")
public void groupRemoveParents(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
if (args.get("parents") != null) {
String[] parents = args.get("parents").split(",");
List<PermissionGroup> groups = new LinkedList<PermissionGroup>(Arrays.asList(group.getParentGroups(worldName)));
for (String parent : parents) {
PermissionGroup parentGroup = PermissionsEx.getPermissionManager().getGroup(this.autoCompleteGroupName(parent));
groups.remove(parentGroup);
}
group.setParentGroups(groups.toArray(new PermissionGroup[0]), worldName);
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Group " + group.getName() + " inheritance updated!");
group.save();
}
}
/**
* Group permissions
*/
@Command(name = "pex", syntax = "group <group>", permission = "permissions.manage.groups.permissions.<group>", description = "List all <group> permissions (alias)")
public void groupListAliasPermissions(Object plugin, ICommandSender sender, Map<String, String> args) {
groupListPermissions(plugin, sender, args);
}
@Command(name = "pex", syntax = "group <group> list [world]", permission = "permissions.manage.groups.permissions.<group>", description = "List all <group> permissions in [world]")
public void groupListPermissions(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
PermissionsEx.sendChatToPlayer(sender, groupName + " are member of:");
printEntityInheritance(sender, group.getParentGroups());
for (String world : group.getAllParentGroups().keySet()) {
if (world == null) {
continue;
}
PermissionsEx.sendChatToPlayer(sender, " @" + world + ":");
printEntityInheritance(sender, group.getAllParentGroups().get(world));
}
PermissionsEx.sendChatToPlayer(sender, "Group " + group.getName() + "'s permissions:");
sendMessage(sender, mapPermissions(worldName, group, 0));
PermissionsEx.sendChatToPlayer(sender, "Group " + group.getName() + "'s Options: ");
for (Map.Entry<String, String> option : group.getOptions(worldName).entrySet()) {
PermissionsEx.sendChatToPlayer(sender, " " + option.getKey() + " = \"" + option.getValue() + "\"");
}
}
@Command(name = "pex", syntax = "group <group> add <permission> [world]", permission = "permissions.manage.groups.permissions.<group>", description = "Add <permission> to <group> in [world]")
public void groupAddPermission(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
group.addPermission(args.get("permission"), worldName);
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Permission \"" + args.get("permission") + "\" added to " + group.getName() + " !");
informGroup(plugin, group, "Your permissions have been changed");
}
@Command(name = "pex", syntax = "group <group> set <option> <value> [world]", permission = "permissions.manage.groups.permissions.<group>", description = "Set <option> <value> for <group> in [world]")
public void groupSetOption(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
group.setOption(args.get("option"), args.get("value"), worldName);
if (args.containsKey("value") && args.get("value").isEmpty()) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Option \"" + args.get("option") + "\" cleared!");
} else {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Option \"" + args.get("option") + "\" set!");
}
informGroup(plugin, group, "Your permissions has been changed");
}
@Command(name = "pex", syntax = "group <group> remove <permission> [world]", permission = "permissions.manage.groups.permissions.<group>", description = "Remove <permission> from <group> in [world]")
public void groupRemovePermission(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
String permission = this.autoCompletePermission(group, args.get("permission"), worldName);
group.removePermission(permission, worldName);
group.removeTimedPermission(permission, worldName);
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Permission \"" + permission + "\" removed from " + group.getName() + " !");
informGroup(plugin, group, "Your permissions have been changed");
}
@Command(name = "pex", syntax = "group <group> swap <permission> <targetPermission> [world]", permission = "permissions.manage.groups.permissions.<group>", description = "Swap <permission> and <targetPermission> in permission list. Could be number or permission itself")
public void userSwapPermission(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist");
return;
}
String[] permissions = group.getOwnPermissions(worldName);
try {
int sourceIndex = getPosition(this.autoCompletePermission(group, args.get("permission"), worldName, "permission"), permissions);
int targetIndex = getPosition(this.autoCompletePermission(group, args.get("targetPermission"), worldName, "targetPermission"), permissions);
String targetPermission = permissions[targetIndex];
permissions[targetIndex] = permissions[sourceIndex];
permissions[sourceIndex] = targetPermission;
group.setPermissions(permissions, worldName);
PermissionsEx.sendChatToPlayer(sender, "Permissions swapped!");
} catch (Throwable e) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Error: " + e.getMessage());
}
}
@Command(name = "pex", syntax = "group <group> timed add <permission> [lifetime] [world]", permission = "permissions.manage.groups.permissions.timed.<group>", description = "Add timed <permission> to <group> with [lifetime] in [world]")
public void groupAddTimedPermission(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
int lifetime = 0;
if (args.containsKey("lifetime")) {
lifetime = DateUtils.parseInterval(args.get("lifetime"));
}
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group does not exist");
return;
}
group.addTimedPermission(args.get("permission"), worldName, lifetime);
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Timed permission added!");
informGroup(plugin, group, "Your permissions have been changed!");
logger.info("Group " + groupName + " get timed permission \"" + args.get("permission") + "\" " + (lifetime > 0 ? "for " + lifetime + " seconds " : " ") + "from " + getSenderName(sender));
}
@Command(name = "pex", syntax = "group <group> timed remove <permission> [world]", permission = "permissions.manage.groups.permissions.timed.<group>", description = "Remove timed <permissions> for <group> in [world]")
public void groupRemoveTimedPermission(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group does not exist");
return;
}
group.removeTimedPermission(args.get("permission"), worldName);
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "Timed permission \"" + args.get("permission") + "\" removed!");
informGroup(plugin, group, "Your permissions have been changed!");
}
/**
* Group users management
*/
@Command(name = "pex", syntax = "group <group> users", permission = "permissions.manage.membership.<group>", description = "List all users in <group>")
public void groupUsersList(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
PermissionUser[] users = PermissionsEx.getPermissionManager().getUsers(groupName);
if (users == null || users.length == 0) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Group doesn't exist or empty");
}
PermissionsEx.sendChatToPlayer(sender, "Group " + groupName + " users:");
for (PermissionUser user : users) {
PermissionsEx.sendChatToPlayer(sender, " " + user.getName());
}
}
@Command(name = "pex", syntax = "group <group> user add <user> [world]", permission = "permissions.manage.membership.<group>", description = "Add <user> (single or comma-separated list) to <group>")
public void groupUsersAdd(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
String users[];
if (!args.get("user").contains(",")) {
users = new String[] { args.get("user") };
} else {
users = args.get("user").split(",");
}
for (String userName : users) {
userName = this.autoCompletePlayerName(userName);
PermissionUser user = PermissionsEx.getPermissionManager().getUser(userName);
if (user == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "User does not exist");
return;
}
user.addGroup(groupName, worldName);
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "User " + user.getName() + " added to " + groupName + " !");
informPlayer(plugin, userName, "You are assigned to \"" + groupName + "\" group");
}
}
@Command(name = "pex", syntax = "group <group> user remove <user> [world]", permission = "permissions.manage.membership.<group>", description = "Add <user> (single or comma-separated list) to <group>")
public void groupUsersRemove(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
String users[];
if (!args.get("user").contains(",")) {
users = new String[] { args.get("user") };
} else {
users = args.get("user").split(",");
}
for (String userName : users) {
userName = this.autoCompletePlayerName(userName);
PermissionUser user = PermissionsEx.getPermissionManager().getUser(userName);
if (user == null) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "User does not exist");
return;
}
user.removeGroup(groupName, worldName);
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.WHITE + "User " + user.getName() + " removed from " + args.get("group") + " !");
informPlayer(plugin, userName, "You were removed from \"" + groupName + "\" group");
}
}
@Command(name = "pex", syntax = "default group [world]", permission = "permissions.manage.groups.inheritance", description = "Print default group for specified world")
public void groupDefaultCheck(Object plugin, ICommandSender sender, Map<String, String> args) {
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup defaultGroup = PermissionsEx.getPermissionManager().getDefaultGroup(worldName);
PermissionsEx.sendChatToPlayer(sender, "Default group in " + worldName + " world is " + defaultGroup.getName() + " group");
}
@Command(name = "pex", syntax = "set default group <group> [world]", permission = "permissions.manage.groups.inheritance", description = "Set default group for specified world")
public void groupDefaultSet(Object plugin, ICommandSender sender, Map<String, String> args) {
String groupName = this.autoCompleteGroupName(args.get("group"));
String worldName = this.autoCompleteWorldName(args.get("world"));
PermissionGroup group = PermissionsEx.getPermissionManager().getGroup(groupName);
if (group == null || group.isVirtual()) {
PermissionsEx.sendChatToPlayer(sender, EnumChatFormatting.RED + "Specified group doesn't exist");
return;
}
PermissionsEx.getPermissionManager().setDefaultGroup(group, worldName);
PermissionsEx.sendChatToPlayer(sender, "New default group in " + worldName + " world is " + group.getName() + " group");
}
}