Search in sources :

Example 21 with Group

use of me.lucko.luckperms.common.model.Group in project LuckPerms by lucko.

the class GroupSetDisplayName method execute.

@Override
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Group group, List<String> args, String label) {
    if (ArgumentPermissions.checkModifyPerms(plugin, sender, getPermission().get(), group)) {
        Message.COMMAND_NO_PERMISSION.send(sender);
        return CommandResult.NO_PERMISSION;
    }
    String name = ArgumentParser.parseString(0, args);
    String previousName = group.getDisplayName().orElse(null);
    if (previousName == null && name.equals(group.getName())) {
        Message.GROUP_SET_DISPLAY_NAME_DOESNT_HAVE.send(sender, group.getName());
        return CommandResult.STATE_ERROR;
    }
    if (name.equals(previousName)) {
        Message.GROUP_SET_DISPLAY_NAME_ALREADY_HAS.send(sender, group.getName(), name);
        return CommandResult.STATE_ERROR;
    }
    Group existing = plugin.getGroupManager().getByDisplayName(name);
    if (existing != null && !group.equals(existing)) {
        Message.GROUP_SET_DISPLAY_NAME_ALREADY_IN_USE.send(sender, name, existing.getName());
        return CommandResult.STATE_ERROR;
    }
    group.removeIf(n -> n.getPermission().startsWith("displayname."));
    if (name.equals(group.getName())) {
        Message.GROUP_SET_DISPLAY_NAME_REMOVED.send(sender, group.getName());
        ExtendedLogEntry.build().actor(sender).acted(group).action("setdisplayname", name).build().submit(plugin, sender);
        StorageAssistant.save(group, sender, plugin);
        return CommandResult.SUCCESS;
    }
    group.setPermission(NodeFactory.builder("displayname." + name).build());
    Message.GROUP_SET_DISPLAY_NAME.send(sender, name, group.getName());
    ExtendedLogEntry.build().actor(sender).acted(group).action("setdisplayname", name).build().submit(plugin, sender);
    StorageAssistant.save(group, sender, plugin);
    return CommandResult.SUCCESS;
}
Also used : Group(me.lucko.luckperms.common.model.Group)

Example 22 with Group

use of me.lucko.luckperms.common.model.Group in project LuckPerms by lucko.

the class StorageAssistant method save.

public static void save(PermissionHolder holder, Sender sender, LuckPermsPlugin plugin) {
    if (holder.getType().isUser()) {
        User user = ((User) holder);
        save(user, sender, plugin);
    } else if (holder.getType().isGroup()) {
        Group group = ((Group) holder);
        save(group, sender, plugin);
    } else {
        throw new IllegalArgumentException();
    }
}
Also used : Group(me.lucko.luckperms.common.model.Group) User(me.lucko.luckperms.common.model.User)

Example 23 with Group

use of me.lucko.luckperms.common.model.Group in project LuckPerms by lucko.

the class MetaInfo method makeFancy.

private static Consumer<BuildableComponent.Builder<?, ?>> makeFancy(ChatMetaType type, PermissionHolder holder, String label, LocalizedNode node) {
    if (!node.getLocation().equals(holder.getObjectName())) {
        // inherited.
        Group group = holder.getPlugin().getGroupManager().getIfLoaded(node.getLocation());
        if (group != null) {
            holder = group;
        }
    }
    HoverEvent hoverEvent = new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextUtils.fromLegacy(TextUtils.joinNewline("¥3> ¥a" + type.getEntry(node).getKey() + " ¥7- ¥r" + type.getEntry(node).getValue(), " ", "¥7Click to remove this " + type.name().toLowerCase() + " from " + holder.getFriendlyName()), '¥'));
    String command = "/" + label + " " + NodeFactory.nodeAsCommand(node, holder.getType().isGroup() ? holder.getObjectName() : holder.getFriendlyName(), holder.getType(), false);
    ClickEvent clickEvent = new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, command);
    return component -> {
        component.hoverEvent(hoverEvent);
        component.clickEvent(clickEvent);
    };
}
Also used : SortedSet(java.util.SortedSet) NodeWithContextComparator(me.lucko.luckperms.common.node.NodeWithContextComparator) TextUtils(me.lucko.luckperms.common.utils.TextUtils) LocaleManager(me.lucko.luckperms.common.locale.LocaleManager) HoverEvent(net.kyori.text.event.HoverEvent) TreeSet(java.util.TreeSet) HashSet(java.util.HashSet) CommandSpec(me.lucko.luckperms.common.locale.command.CommandSpec) ClickEvent(net.kyori.text.event.ClickEvent) Map(java.util.Map) Message(me.lucko.luckperms.common.locale.message.Message) LuckPermsPlugin(me.lucko.luckperms.common.plugin.LuckPermsPlugin) SharedSubCommand(me.lucko.luckperms.common.command.abstraction.SharedSubCommand) LocalizedNode(me.lucko.luckperms.api.LocalizedNode) CommandManager(me.lucko.luckperms.common.command.CommandManager) PermissionHolder(me.lucko.luckperms.common.model.PermissionHolder) MessageUtils(me.lucko.luckperms.common.command.utils.MessageUtils) Set(java.util.Set) NodeFactory(me.lucko.luckperms.common.node.NodeFactory) Sender(me.lucko.luckperms.common.sender.Sender) TextComponent(net.kyori.text.TextComponent) Maps(com.google.common.collect.Maps) CommandResult(me.lucko.luckperms.common.command.CommandResult) Consumer(java.util.function.Consumer) CommandPermission(me.lucko.luckperms.common.command.access.CommandPermission) List(java.util.List) BuildableComponent(net.kyori.text.BuildableComponent) ChatMetaType(me.lucko.luckperms.api.ChatMetaType) Group(me.lucko.luckperms.common.model.Group) ArgumentPermissions(me.lucko.luckperms.common.command.access.ArgumentPermissions) Comparator(java.util.Comparator) Predicates(me.lucko.luckperms.common.utils.Predicates) Group(me.lucko.luckperms.common.model.Group) HoverEvent(net.kyori.text.event.HoverEvent) ClickEvent(net.kyori.text.event.ClickEvent)

Example 24 with Group

use of me.lucko.luckperms.common.model.Group in project LuckPerms by lucko.

the class ParentAddTemp method execute.

@Override
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, PermissionHolder holder, List<String> args, String label, CommandPermission permission) throws CommandException {
    if (ArgumentPermissions.checkModifyPerms(plugin, sender, permission, holder)) {
        Message.COMMAND_NO_PERMISSION.send(sender);
        return CommandResult.NO_PERMISSION;
    }
    String groupName = ArgumentParser.parseName(0, args);
    long duration = ArgumentParser.parseDuration(1, args);
    TemporaryModifier modifier = ArgumentParser.parseTemporaryModifier(2, args).orElseGet(() -> plugin.getConfiguration().get(ConfigKeys.TEMPORARY_ADD_BEHAVIOUR));
    MutableContextSet context = ArgumentParser.parseContext(2, args, plugin);
    Group group = StorageAssistant.loadGroup(groupName, sender, plugin, false);
    if (group == null) {
        return CommandResult.INVALID_ARGS;
    }
    if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
        Message.COMMAND_NO_PERMISSION.send(sender);
        return CommandResult.NO_PERMISSION;
    }
    if (ArgumentPermissions.checkArguments(plugin, sender, permission, group.getName())) {
        Message.COMMAND_NO_PERMISSION.send(sender);
        return CommandResult.NO_PERMISSION;
    }
    if (group.getName().equalsIgnoreCase(holder.getObjectName())) {
        Message.ALREADY_TEMP_INHERITS.send(sender, holder.getFriendlyName(), group.getFriendlyName(), MessageUtils.contextSetToString(context));
        return CommandResult.STATE_ERROR;
    }
    Map.Entry<DataMutateResult, Node> ret = holder.setPermission(NodeFactory.buildGroupNode(group.getName()).setExpiry(duration).withExtraContext(context).build(), modifier);
    if (ret.getKey().asBoolean()) {
        duration = ret.getValue().getExpiryUnixTime();
        Message.SET_TEMP_INHERIT_SUCCESS.send(sender, holder.getFriendlyName(), group.getFriendlyName(), DateUtil.formatDateDiff(duration), MessageUtils.contextSetToString(context));
        ExtendedLogEntry.build().actor(sender).acted(holder).action("parent", "addtemp", group.getName(), duration, context).build().submit(plugin, sender);
        StorageAssistant.save(holder, sender, plugin);
        return CommandResult.SUCCESS;
    } else {
        Message.ALREADY_TEMP_INHERITS.send(sender, holder.getFriendlyName(), group.getFriendlyName(), MessageUtils.contextSetToString(context));
        return CommandResult.STATE_ERROR;
    }
}
Also used : TemporaryModifier(me.lucko.luckperms.common.model.TemporaryModifier) Group(me.lucko.luckperms.common.model.Group) MutableContextSet(me.lucko.luckperms.api.context.MutableContextSet) Node(me.lucko.luckperms.api.Node) DataMutateResult(me.lucko.luckperms.api.DataMutateResult) Map(java.util.Map)

Example 25 with Group

use of me.lucko.luckperms.common.model.Group in project LuckPerms by lucko.

the class UserSwitchPrimaryGroup method execute.

@Override
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, PermissionHolder holder, List<String> args, String label, CommandPermission permission) {
    // cast to user
    // although this command is build as a sharedsubcommand,
    // it is only added to the listings for users.
    User user = ((User) holder);
    if (ArgumentPermissions.checkModifyPerms(plugin, sender, permission, user)) {
        Message.COMMAND_NO_PERMISSION.send(sender);
        return CommandResult.NO_PERMISSION;
    }
    String opt = plugin.getConfiguration().get(ConfigKeys.PRIMARY_GROUP_CALCULATION_METHOD);
    if (!opt.equals("stored")) {
        Message.USER_PRIMARYGROUP_WARN_OPTION.send(sender, opt);
    }
    Group group = plugin.getGroupManager().getIfLoaded(args.get(0).toLowerCase());
    if (group == null) {
        Message.DOES_NOT_EXIST.send(sender, args.get(0).toLowerCase());
        return CommandResult.INVALID_ARGS;
    }
    if (user.getPrimaryGroup().getStoredValue().orElse(NodeFactory.DEFAULT_GROUP_NAME).equalsIgnoreCase(group.getName())) {
        Message.USER_PRIMARYGROUP_ERROR_ALREADYHAS.send(sender, user.getFriendlyName(), group.getFriendlyName());
        return CommandResult.STATE_ERROR;
    }
    if (!user.inheritsGroup(group)) {
        Message.USER_PRIMARYGROUP_ERROR_NOTMEMBER.send(sender, user.getFriendlyName(), group.getName());
        user.setPermission(NodeFactory.buildGroupNode(group.getName()).build());
    }
    user.getPrimaryGroup().setStoredValue(group.getName());
    Message.USER_PRIMARYGROUP_SUCCESS.send(sender, user.getFriendlyName(), group.getFriendlyName());
    ExtendedLogEntry.build().actor(sender).acted(user).action("parent", "switchprimarygroup", group.getName()).build().submit(plugin, sender);
    StorageAssistant.save(user, sender, plugin);
    return CommandResult.SUCCESS;
}
Also used : Group(me.lucko.luckperms.common.model.Group) User(me.lucko.luckperms.common.model.User)

Aggregations

Group (me.lucko.luckperms.common.model.Group)52 User (me.lucko.luckperms.common.model.User)20 Node (me.lucko.luckperms.api.Node)16 Set (java.util.Set)10 UUID (java.util.UUID)10 Track (me.lucko.luckperms.common.model.Track)10 NodeFactory (me.lucko.luckperms.common.node.NodeFactory)10 List (java.util.List)9 LuckPermsPlugin (me.lucko.luckperms.common.plugin.LuckPermsPlugin)9 Contexts (me.lucko.luckperms.api.Contexts)8 PermissionHolder (me.lucko.luckperms.common.model.PermissionHolder)8 Sender (me.lucko.luckperms.common.sender.Sender)8 HashSet (java.util.HashSet)7 Map (java.util.Map)7 Collectors (java.util.stream.Collectors)7 MutableContextSet (me.lucko.luckperms.api.context.MutableContextSet)7 CommandResult (me.lucko.luckperms.common.command.CommandResult)7 CommandPermission (me.lucko.luckperms.common.command.access.CommandPermission)7 LocaleManager (me.lucko.luckperms.common.locale.LocaleManager)7 CommandSpec (me.lucko.luckperms.common.locale.command.CommandSpec)7