From b179eeb5df1432f8ed87cc6d1c27d3ae6494eb90 Mon Sep 17 00:00:00 2001 From: jojo Date: Mon, 28 Dec 2020 23:26:25 +0100 Subject: [PATCH] Add Argument.tabCompletes to Supplier for dynamic use --- .../src/de/steamwar/command/Argument.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/SpigotCore_Main/src/de/steamwar/command/Argument.java b/SpigotCore_Main/src/de/steamwar/command/Argument.java index 15eb96e..d8de47b 100644 --- a/SpigotCore_Main/src/de/steamwar/command/Argument.java +++ b/SpigotCore_Main/src/de/steamwar/command/Argument.java @@ -22,10 +22,12 @@ package de.steamwar.command; import org.bukkit.Bukkit; +import org.bukkit.entity.Player; import java.util.*; import java.util.function.Function; import java.util.function.Predicate; +import java.util.function.Supplier; import java.util.stream.Collectors; public class Argument { @@ -36,18 +38,18 @@ public class Argument { public static final Argument FLOAT = new Argument<>(ArgumentType.FLOAT, f -> true); public static final Argument DOUBLE = new Argument<>(ArgumentType.DOUBLE, d -> true); public static final Argument STRING = new Argument<>(ArgumentType.STRING, string -> true); - public static final Argument PLAYER = new Argument<>(ArgumentType.STRING, string -> Bukkit.getPlayer(string) == null, Bukkit::getPlayer); + public static final Argument PLAYER = new Argument<>(ArgumentType.STRING, string -> Bukkit.getPlayer(string) == null, Bukkit::getPlayer, () -> Bukkit.getOnlinePlayers().stream().map(Player::getName).toArray(String[]::new)); private ArgumentType argumentType; private Predicate constraint; - private String[] tabCompletes; + private Supplier tabCompletes; private Function valueMapper; public Argument(ArgumentType argumentType, Predicate constraint, String... tabCompletes) { - this(argumentType, constraint, o -> o, tabCompletes); + this(argumentType, constraint, o -> o, () -> tabCompletes); } - public Argument(ArgumentType argumentType, Predicate constraint, Function valueMapper, String... tabCompletes) { + public Argument(ArgumentType argumentType, Predicate constraint, Function valueMapper, Supplier tabCompletes) { this.argumentType = argumentType; this.constraint = constraint; this.valueMapper = valueMapper; @@ -76,7 +78,7 @@ public class Argument { // Check number constraints if needed if (argumentType.number && !constraint.test(argumentMapped)) return Optional.empty(); } - List strings = Arrays.stream(tabCompletes).filter(t -> t.startsWith(s)).collect(Collectors.toList()); + List strings = Arrays.stream(tabCompletes.get()).filter(t -> t.startsWith(s)).collect(Collectors.toList()); if (strings.isEmpty()) strings.add(s); return Optional.of(strings); } catch (NumberFormatException e) { @@ -156,7 +158,7 @@ public class Argument { @Override public String toString() { return "Argument{" + - "tabCompletes=" + Arrays.toString(tabCompletes) + + "tabCompletes=" + Arrays.toString(tabCompletes.get()) + '}'; }