public Set<PermissionAttachmentInfo> getEffectivePermissions() { return sender.getEffectivePermissions(); }
@Override public List<String> getGroups() { // As in https://github.com/sk89q/WorldEdit/blob/master/ // worldedit-bukkit/src/main/java/com/sk89q/wepif/DinnerPermsResolver.java#L112-L126 List<String> groupNames = new ArrayList<>(); for(PermissionAttachmentInfo permAttach : c.getEffectivePermissions()) { String perm = permAttach.getPermission(); if(!(perm.startsWith(Static.GROUP_PREFIX) && permAttach.getValue())) { continue; } groupNames.add(perm.substring(Static.GROUP_PREFIX.length(), perm.length())); } return groupNames; }
private static HashMap<String, Boolean> getDisguiseOptions(CommandSender sender, String permNode, DisguisePerm type) { switch (type.getType()) { case PLAYER: case FALLING_BLOCK: case PAINTING: case SPLASH_POTION: case FISHING_HOOK: case DROPPED_ITEM: HashMap<String, Boolean> returns = new HashMap<>(); String beginning = "libsdisguises.options." + permNode + "."; for (PermissionAttachmentInfo permission : sender.getEffectivePermissions()) { String lowerPerm = permission.getPermission().toLowerCase(); if (lowerPerm.startsWith(beginning)) { String[] split = lowerPerm.substring(beginning.length()).split("\\."); if (split.length > 1) { if (split[0].replace("_", "").equals(type.toReadable().toLowerCase().replace(" ", ""))) { for (int i = 1; i < split.length; i++) { returns.put(split[i], permission.getValue()); } } } } } return returns; default: return new HashMap<>(); } }
@Override public String getHelpMessage(CommandSender sender) { boolean receiveCreateMessage = sender.hasPermission(Permissions.CREATE); if (!receiveCreateMessage) { for (PermissionAttachmentInfo permInfo : sender.getEffectivePermissions()) { String perm = permInfo.getPermission(); if (perm.startsWith(Permissions.CREATE) && sender.hasPermission(perm)) { receiveCreateMessage = true; break; } } } if (sender.hasPermission(Permissions.CREATE_ADMIN)) { return LanguageUtils.getMessage(Message.COMMAND_DESC_CREATE_ADMIN, cmdReplacement); } else if (receiveCreateMessage) { return LanguageUtils.getMessage(Message.COMMAND_DESC_CREATE, cmdReplacement); } return ""; } });