From 6e801a60c9a398ea31e0aa94fad5940e09bd9a5e Mon Sep 17 00:00:00 2001 From: xiaoshen Date: Sun, 17 May 2020 05:23:05 -0700 Subject: [PATCH] Add Console Command --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 1 + .../moecraft/icq/pluginmanager/Launcher.java | 25 ++++--- .../pluginmanager/console/ConsoleCommand.java | 5 ++ .../console/ConsoleCommandListener.java | 65 ++++++++++++++++++ .../console/command/CommandStop.java | 12 ++++ 6 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 .DS_Store create mode 100644 src/main/java/cc/moecraft/icq/pluginmanager/console/ConsoleCommand.java create mode 100644 src/main/java/cc/moecraft/icq/pluginmanager/console/ConsoleCommandListener.java create mode 100644 src/main/java/cc/moecraft/icq/pluginmanager/console/command/CommandStop.java diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f4a77b1031114cc0091ddb143895876dc639262b GIT binary patch literal 6148 zcmeHK%}T>S5Z-O8CKa&%p54(SwR6rr1E5t!--2TFFc3LwNET z1fRjT@EM%lomQplQHspK>^D0*v)O!Eb~B7IUg-p7#tMuv3shmohUObl<4Q*)gPuu1 zuI6Yr{Yd)Id-0ni(c~CM2GqC9vKH&G*zbP+eo@#?N~Kqx$>t^|rz|U<&(Gvf+`8<# ziI;TR6|Z%qdV5|{_tD;$G8)>Re-PHXr-iv~87E#C*IGI`3~CT^d>F=o>{eta4%&Ji z*9=&eZQGF4>unUpdcP=oYip&VSXo}}_ibx_sl2&+*0{du-S+S94WAsgo|aj}0X%?# zuNGaD-E-OayeV;{A*)r~wAS0@;?v{$^VUaRLk7Q$HtRpldgZp_NX8d1(_nRjRS^;c z!~iic1`OcQWKEC3T4)Kx05LFL45;%#fGTtlQ-k{GfJT=9fH`n$0bA7)Dn}qXh^avs z0pTVU(4=xKF}O(wzrZ*LF*Rt?8OP#- answers = new HashMap<>(); + Scanner scanner; + + + public void addCommand(String cmd, ConsoleCommand command) { + answers.put(cmd.toLowerCase(), command); + } + + + public ConsoleCommandListener(Scanner scanner) { + this.scanner = scanner; + + if (scanner == null) { + throw new NullPointerException("Null"); + } + } + + public void removeCommand(String cmd, ConsoleCommand command) { + answers.remove(cmd, command); + } + + public ConsoleCommand replaceCommand(String cmd, ConsoleCommand command) { + return answers.replace(cmd, command); + } + + public void listenInNewThread() { + Thread t = new Thread() { + public void run() { + listen(); + } + }; + t.start(); + } + + + public void listen() { + while (true) { + String line; + try { + line = scanner.nextLine(); + } catch (NoSuchElementException ignored) { + line = ""; + } + + String input = line.replaceAll("[\\s]+", " "); + + String[] args = input.split(" "); + String cmd = args[0]; + + ConsoleCommand command = answers.get(cmd.toLowerCase()); + if (command != null) { + command.onCommand(input.replaceFirst(cmd + " ", "").split(" ")); + } + + } + } + +} \ No newline at end of file diff --git a/src/main/java/cc/moecraft/icq/pluginmanager/console/command/CommandStop.java b/src/main/java/cc/moecraft/icq/pluginmanager/console/command/CommandStop.java new file mode 100644 index 0000000..5b612f5 --- /dev/null +++ b/src/main/java/cc/moecraft/icq/pluginmanager/console/command/CommandStop.java @@ -0,0 +1,12 @@ +package cc.moecraft.icq.pluginmanager.console.command; + +import cc.moecraft.icq.pluginmanager.Launcher; +import cc.moecraft.icq.pluginmanager.console.ConsoleCommand; + +public class CommandStop implements ConsoleCommand { + @Override + public void onCommand(String[] args) { + Launcher.logger.warning("退出 PicqBotX 中。。。。。"); + System.exit(0); + } +}