Implemented passing of commands as arguments

This commit is contained in:
Anuken 2018-04-16 20:28:47 -04:00
parent e21d92cf4d
commit d396149521
3 changed files with 26 additions and 5 deletions

View File

@ -11,6 +11,11 @@ import io.anuke.ucore.modules.ModuleCore;
import static io.anuke.mindustry.Vars.*;
public class MindustryServer extends ModuleCore {
private String[] args;
public MindustryServer(String[] args){
this.args = args;
}
@Override
public void init(){
@ -23,6 +28,6 @@ public class MindustryServer extends ModuleCore {
module(world = new World());
module(netServer = new NetServer());
module(netCommon = new NetCommon());
module(new ServerControl());
module(new ServerControl(args));
}
}

View File

@ -41,7 +41,7 @@ public class ServerControl extends Module {
private final CommandHandler handler = new CommandHandler("");
private ShuffleMode mode;
public ServerControl(){
public ServerControl(String[] args){
Settings.defaultList(
"shufflemode", "normal",
"bans", "",
@ -69,7 +69,24 @@ public class ServerControl extends Module {
@Override public void debug(String tag, String message, Throwable exception) { }
});
String[] commands = {};
if(args.length > 0){
commands = String.join(" ", args).split(",");
Log.info("&lmFound {0} command-line arguments to parse. {1}", commands.length);
}
registerCommands();
for(String s : commands){
Response response = handler.handleMessage(s);
if(response.type != ResponseType.valid){
Log.err("Invalid command argument sent: '{0}': {1}", s, response.type.name());
Log.err("Argument usage: &lc<command-1> <command1-args...>,<command-2> <command-2-args2...>");
System.exit(1);
}
}
Thread thread = new Thread(this::readCommands, "Server Controls");
thread.setDaemon(true);
thread.start();

View File

@ -7,12 +7,12 @@ import io.anuke.mindustry.net.Net;
public class ServerLauncher{
public static void main(String[] args) throws Exception{
public static void main(String[] args){
Net.setClientProvider(new KryoClient());
Net.setServerProvider(new KryoServer());
new HeadlessApplication(new MindustryServer());
new HeadlessApplication(new MindustryServer(args));
//find and handle uncaught exceptions in libGDX thread
for(Thread thread : Thread.getAllStackTraces().keySet()){
@ -24,6 +24,5 @@ public class ServerLauncher{
break;
}
}
}
}