From cd90cba7d5d437174bf4cc2f81540251bf339e2a Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 9 Dec 2021 16:38:58 +0100 Subject: [PATCH] Update SWCommandUtils SteamwarUser mapper --- .../de/steamwar/command/SWCommandUtils.java | 18 ++++++++++++------ .../src/de/steamwar/sql/SteamwarUser.java | 11 +++++++++++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/SpigotCore_Main/src/de/steamwar/command/SWCommandUtils.java b/SpigotCore_Main/src/de/steamwar/command/SWCommandUtils.java index 0ee8562..0d95f8c 100644 --- a/SpigotCore_Main/src/de/steamwar/command/SWCommandUtils.java +++ b/SpigotCore_Main/src/de/steamwar/command/SWCommandUtils.java @@ -72,17 +72,23 @@ public class SWCommandUtils { if (s.equals("a") || s.equals("adventure") || s.equals("2")) return GameMode.ADVENTURE; return null; }, s -> Arrays.asList("s", "survival", "0", "c", "creative", "1", "sp", "spectator", "3", "a", "adventure", "2"))); - MAPPER_FUNCTIONS.put(SteamwarUser.class.getTypeName(), createMapper(SteamwarUser::get, s -> Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList()))); - MAPPER_FUNCTIONS.put(SchematicNode.class.getTypeName(), new TypeMapper() { - @Override - public List tabCompletes(CommandSender commandSender, String[] strings, String s) { - return SchematicNode.getNodeTabcomplete(SteamwarUser.get(((Player) commandSender).getUniqueId()), s); + MAPPER_FUNCTIONS.put(SteamwarUser.class.getTypeName(), createMapper(SteamwarUser::get, s -> { + if (s.length() < 1) { + return Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList()); } - + List steamwarUsers = SteamwarUser.startsWithName(s); + return steamwarUsers.stream().map(SteamwarUser::getUserName).limit(40).collect(Collectors.toList()); + })); + MAPPER_FUNCTIONS.put(SchematicNode.class.getTypeName(), new TypeMapper() { @Override public SchematicNode map(CommandSender commandSender, String[] previousArguments, String s) { return SchematicNode.getNodeFromPath(SteamwarUser.get(((Player) commandSender).getUniqueId()), s); } + + @Override + public List tabCompletes(CommandSender commandSender, String[] strings, String s) { + return SchematicNode.getNodeTabcomplete(SteamwarUser.get(((Player) commandSender).getUniqueId()), s); + } }); } diff --git a/SpigotCore_Main/src/de/steamwar/sql/SteamwarUser.java b/SpigotCore_Main/src/de/steamwar/sql/SteamwarUser.java index 1a7ed6f..cc958cf 100644 --- a/SpigotCore_Main/src/de/steamwar/sql/SteamwarUser.java +++ b/SpigotCore_Main/src/de/steamwar/sql/SteamwarUser.java @@ -32,6 +32,7 @@ public class SteamwarUser { private static final SQL.Statement getId = new SQL.Statement("SELECT * FROM UserData WHERE id = ?"); private static final SQL.Statement getUUID = new SQL.Statement("SELECT * FROM UserData WHERE UUID = ?"); private static final SQL.Statement getName = new SQL.Statement("SELECT * FROM UserData WHERE lower(UserName) = ?"); + private static final SQL.Statement startWithName = new SQL.Statement("SELECT * FROM UserData WHERE lower(UserName) LIKE ?"); private static final Map byUUID = new HashMap<>(); private static final Map byName = new HashMap<>(); @@ -93,6 +94,16 @@ public class SteamwarUser { return bedrock; } + public static List startsWithName(String userName){ + return startWithName.select(rs -> { + List steamwarUsers = new ArrayList<>(); + while (rs.next()) { + steamwarUsers.add(new SteamwarUser(rs)); + } + return steamwarUsers; + }, userName.toLowerCase() + "%"); + } + public static SteamwarUser get(String userName){ SteamwarUser user = byName.get(userName.toLowerCase()); if(user == null)