diff --git a/api/src/main/java/me/lucko/luckperms/api/FullySatisfiedContexts.java b/api/src/main/java/me/lucko/luckperms/api/FullySatisfiedContexts.java index 55675744c..9c05eba73 100644 --- a/api/src/main/java/me/lucko/luckperms/api/FullySatisfiedContexts.java +++ b/api/src/main/java/me/lucko/luckperms/api/FullySatisfiedContexts.java @@ -9,13 +9,14 @@ import javax.annotation.Nonnull; /** * A special instance of {@link Contexts}, which when passed to: * - *

+ *

+ * * - *

will always satisfy all contextual requirements.

+ *

... will always satisfy all contextual requirements.

* *

This effectively allows you to do lookups which ignore context.

* diff --git a/common/src/main/java/me/lucko/luckperms/common/node/NodeFactory.java b/common/src/main/java/me/lucko/luckperms/common/node/NodeFactory.java index 9059b931a..6d75804d2 100644 --- a/common/src/main/java/me/lucko/luckperms/common/node/NodeFactory.java +++ b/common/src/main/java/me/lucko/luckperms/common/node/NodeFactory.java @@ -151,6 +151,50 @@ public class NodeFactory { return appendContextToCommand(sb, node).toString(); } + if (node.getValue() && (node.isPrefix() || node.isSuffix())) { + ChatMetaType type = node.isPrefix() ? ChatMetaType.PREFIX : ChatMetaType.SUFFIX; + String typeName = type.name().toLowerCase(); + + + sb.append(node.isTemporary() ? (set ? "meta addtemp" + typeName + " " : "meta removetemp" + typeName + " ") : (set ? "meta add" + typeName + " " : "meta remove" + typeName + " ")); + sb.append(type.getEntry(node).getKey()).append(" "); + + if (type.getEntry(node).getValue().contains(" ")) { + sb.append("\"").append(type.getEntry(node).getValue()).append("\""); + } else { + sb.append(type.getEntry(node).getValue()); + } + if (node.isTemporary()) { + sb.append(" ").append(node.getExpiryUnixTime()); + } + + return appendContextToCommand(sb, node).toString(); + } + + if (node.getValue() && node.isMeta()) { + sb.append(node.isTemporary() ? (set ? "meta settemp " : "meta unsettemp ") : (set ? "meta set " : "meta unset ")); + + if (node.getMeta().getKey().contains(" ")) { + sb.append("\"").append(node.getMeta().getKey()).append("\""); + } else { + sb.append(node.getMeta().getKey()); + } + + sb.append(" "); + + if (node.getMeta().getValue().contains(" ")) { + sb.append("\"").append(node.getMeta().getValue()).append("\""); + } else { + sb.append(node.getMeta().getValue()); + } + + if (node.isTemporary()) { + sb.append(" ").append(node.getExpiryUnixTime()); + } + + return appendContextToCommand(sb, node).toString(); + } + sb.append(node.isTemporary() ? (set ? "permission settemp " : "permission unsettemp ") : (set ? "permission set " : "permission unset ")); if (node.getPermission().contains(" ")) { sb.append("\"").append(node.getPermission()).append("\"");