From 221f7be21bffbce59c99de1c6b6be7fbdd8bfa8f Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 11 Apr 2018 13:05:08 -0400 Subject: [PATCH] Added utility griefer scan command --- core/assets/version.properties | 4 +-- .../anuke/mindustry/server/ServerControl.java | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index f1f1e8f674..7ae9f523a8 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Sun Apr 08 12:37:55 EDT 2018 +#Wed Apr 11 13:05:01 EDT 2018 version=release -androidBuildCode=505 +androidBuildCode=506 name=Mindustry code=3.5 build=custom build diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index 3a6e2a61d8..1ba8f40429 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -502,6 +502,37 @@ public class ServerControl extends Module { info("Saved to slot {0}.", slot); }); + handler.register("griefers", "[min-break:place-ratio] [min-breakage]", "Find possible griefers currently online.", arg -> { + if(!state.is(State.playing)) { + err("Open the server first."); + return; + } + + try { + + float ratio = arg.length > 0 ? Float.parseFloat(arg[0]) : 0.9f; + int minbreak = arg.length > 1 ? Integer.parseInt(arg[1]) : 100; + + boolean found = false; + + for (Player player : playerGroup.all()) { + TraceInfo info = netServer.admins.getTrace(Net.getConnection(player.clientid).address); + if(info.totalBlocksBroken >= minbreak && info.totalBlocksBroken / Math.max(info.totalBlocksPlaced, 1f) >= ratio){ + info("&ly - Player '{0}' / UUID &lm{1}&ly found: &lc{2}&ly broken and &lc{3}&ly placed.", + player.name, info.uuid, info.totalBlocksBroken, info.totalBlocksPlaced); + found = true; + } + } + + if (!found) { + info("No griefers matching the criteria have been found."); + } + + }catch (NumberFormatException e){ + err("Invalid number format."); + } + }); + handler.register("gameover", "Force a game over.", arg -> { if(state.is(State.menu)){ info("Not playing a map.");