From 4c0302bcb1400aa912346a96d9ff6a9e913fa2f7 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 15 Jan 2020 09:31:25 -0500 Subject: [PATCH] Added search command --- core/src/mindustry/net/Administration.java | 16 +++++++++++++++- server/src/mindustry/server/ServerControl.java | 16 ++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/net/Administration.java b/core/src/mindustry/net/Administration.java index 8a5a438e14..65f28f7497 100644 --- a/core/src/mindustry/net/Administration.java +++ b/core/src/mindustry/net/Administration.java @@ -325,7 +325,8 @@ public class Administration{ ObjectSet result = new ObjectSet<>(); for(PlayerInfo info : playerInfo.values()){ - if(info.lastName.toLowerCase().equals(name.toLowerCase()) || (info.names.contains(name, false)) + if(info.lastName.equalsIgnoreCase(name) || (info.names.contains(name, false)) + || Strings.stripColors(Strings.stripColors(info.lastName)).equals(name) || info.ips.contains(name, false) || info.id.equals(name)){ result.add(info); } @@ -334,6 +335,19 @@ public class Administration{ return result; } + /** Finds by name, using contains(). */ + public ObjectSet searchNames(String name){ + ObjectSet result = new ObjectSet<>(); + + for(PlayerInfo info : playerInfo.values()){ + if(info.names.contains(n -> n.toLowerCase().contains(name.toLowerCase()) || Strings.stripColors(n).trim().toLowerCase().contains(name))){ + result.add(info); + } + } + + return result; + } + public Array findByIPs(String ip){ Array result = new Array<>(); diff --git a/server/src/mindustry/server/ServerControl.java b/server/src/mindustry/server/ServerControl.java index e32a5b302d..566656b4a5 100644 --- a/server/src/mindustry/server/ServerControl.java +++ b/server/src/mindustry/server/ServerControl.java @@ -805,6 +805,22 @@ public class ServerControl implements ApplicationListener{ } }); + handler.register("search", "", "Search players who have used part of a name.", arg -> { + + ObjectSet infos = netServer.admins.searchNames(arg[0]); + + if(infos.size > 0){ + info("&lgPlayers found: {0}", infos.size); + + int i = 0; + for(PlayerInfo info : infos){ + info("- &lc[{0}] &ly'{1}'&lc / &lm{2}", i++, info.lastName, info.id); + } + }else{ + info("Nobody with that name could be found."); + } + }); + handler.register("gc", "Trigger a grabage struct. Testing only.", arg -> { int pre = (int)(Core.app.getJavaHeap() / 1024 / 1024); System.gc();