From 0945fe866cb1e65daa6f0849c5e392bf4155f1f7 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Mon, 20 Apr 2020 22:34:03 +1200 Subject: [PATCH] Add libsdisguises.command.valid.optionstoset --- .../utilities/parser/DisguisePermissions.java | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java b/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java index e3660a77..76dcaf7a 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java @@ -138,9 +138,10 @@ public class DisguisePermissions { String disguiseName = split[2]; - DisguisePerm dPerm = DisguiseParser.getDisguisePerm(disguiseName); HashMap options = getOptions(permission); + DisguisePerm dPerm = DisguiseParser.getDisguisePerm(disguiseName); + // If this refers to a specific disguise if (dPerm != null) { return new ParsedPermission(new DisguisePerm[]{dPerm}, options, (byte) 0, split[1].equals("*")); @@ -233,7 +234,16 @@ public class DisguisePermissions { List list = new ArrayList<>(); + ArrayList valids = new ArrayList<>(); + for (Map.Entry entry : permissions.entrySet()) { + String key = entry.getKey(); + + if (key.split("\\.").length > 2 && key.split("\\.")[2].equalsIgnoreCase("valid")) { + valids.add(key); + continue; + } + ParsedPermission temp = parsePermission(entry.getKey()); if (temp == null) { @@ -245,6 +255,20 @@ public class DisguisePermissions { list.add(temp); } + for (String valid : valids) { + HashMap options = getOptions(valid); + + String key = valid.split("\\.")[1]; + + if (!key.equals("*") && !key.equalsIgnoreCase(commandName)){ + continue; + } + + for (ParsedPermission perms : list) { + perms.options.putAll(options); + } + } + // Sorted from 5 to 0 where "*" is first and "Cow" is last // Negated permissions are last in each inheritance, so false, false, true, true @@ -384,7 +408,7 @@ public class DisguisePermissions { if (disguiseType.isMisc()) { return 3; } - } else if (permissionName.equals("custom")) { + } else if (permissionName.equals("custom")) { if (disguiseType.isMisc()) { return 3; }