diff --git a/src/main/java/me/hsgamer/bettergui/argument/type/PlayerArgumentProcessor.java b/src/main/java/me/hsgamer/bettergui/argument/type/PlayerArgumentProcessor.java index 4c5926c8..7ada326c 100644 --- a/src/main/java/me/hsgamer/bettergui/argument/type/PlayerArgumentProcessor.java +++ b/src/main/java/me/hsgamer/bettergui/argument/type/PlayerArgumentProcessor.java @@ -1,6 +1,7 @@ package me.hsgamer.bettergui.argument.type; import me.hsgamer.bettergui.builder.ArgumentProcessorBuilder; +import me.hsgamer.bettergui.util.StringReplacerApplier; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; @@ -21,11 +22,6 @@ public PlayerArgumentProcessor(ArgumentProcessorBuilder.Input input) { .orElse(false); } - @Override - public String getValue(String query, UUID uuid) { - return getObject(uuid).map(this::getArgumentValue).orElse(""); - } - @Override protected Optional getObject(String name) { if (onlineOnly) { @@ -49,4 +45,14 @@ protected Stream getObjectStream() { protected String getArgumentValue(OfflinePlayer object) { return Optional.ofNullable(object.getName()).orElse(""); } + + @Override + protected String getValue(String query, UUID uuid, OfflinePlayer object) { + if (query.startsWith("papi_")) { + String papiQuery = query.substring("papi_".length()); + return StringReplacerApplier.replace("%" + papiQuery + "%", object.getUniqueId(), this); + } else { + return StringReplacerApplier.replace("{" + query + "}", object.getUniqueId(), this); + } + } } diff --git a/src/main/java/me/hsgamer/bettergui/argument/type/SingleArgumentProcessor.java b/src/main/java/me/hsgamer/bettergui/argument/type/SingleArgumentProcessor.java index b43d1c71..0f54e7c8 100644 --- a/src/main/java/me/hsgamer/bettergui/argument/type/SingleArgumentProcessor.java +++ b/src/main/java/me/hsgamer/bettergui/argument/type/SingleArgumentProcessor.java @@ -34,6 +34,8 @@ public SingleArgumentProcessor(ArgumentProcessorBuilder.Input input) { protected abstract String getArgumentValue(T object); + protected abstract String getValue(String query, UUID uuid, T object); + protected Optional getObject(UUID uuid) { return Optional.ofNullable(map.get(uuid)); } @@ -65,6 +67,21 @@ public Optional process(UUID uuid, String[] args) { return Optional.of(Arrays.copyOfRange(args, 1, args.length)); } + @Override + public String getValue(String query, UUID uuid) { + Optional object = getObject(uuid); + if (!object.isPresent()) { + return ""; + } + + T obj = object.get(); + if (query.isEmpty()) { + return getArgumentValue(obj); + } else { + return getValue(query, uuid, obj); + } + } + @Override public Pair>, String[]> tabComplete(UUID uuid, String[] args) { if (args.length == 1) {