mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-12-02 22:10:41 +00:00
128 lines
3.0 KiB
Java
128 lines
3.0 KiB
Java
|
package emu.grasscutter;
|
||
|
|
||
|
import java.io.BufferedReader;
|
||
|
import java.io.File;
|
||
|
import java.io.FileReader;
|
||
|
import java.io.FileWriter;
|
||
|
import java.io.InputStreamReader;
|
||
|
import java.net.InetSocketAddress;
|
||
|
import java.util.Arrays;
|
||
|
|
||
|
import org.slf4j.LoggerFactory;
|
||
|
|
||
|
import com.google.gson.Gson;
|
||
|
import com.google.gson.GsonBuilder;
|
||
|
|
||
|
import ch.qos.logback.classic.Logger;
|
||
|
import emu.grasscutter.commands.ServerCommands;
|
||
|
import emu.grasscutter.data.ResourceLoader;
|
||
|
import emu.grasscutter.database.DatabaseManager;
|
||
|
import emu.grasscutter.server.dispatch.DispatchServer;
|
||
|
import emu.grasscutter.server.game.GameServer;
|
||
|
import emu.grasscutter.tools.Tools;
|
||
|
import emu.grasscutter.utils.Crypto;
|
||
|
|
||
|
public class Grasscutter {
|
||
|
private static Logger log = (Logger) LoggerFactory.getLogger(Grasscutter.class);
|
||
|
private static Config config;
|
||
|
|
||
|
private static Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||
|
private static File configFile = new File("./config.json");
|
||
|
|
||
|
public static RunMode MODE = RunMode.BOTH;
|
||
|
private static DispatchServer dispatchServer;
|
||
|
private static GameServer gameServer;
|
||
|
|
||
|
public static void main(String[] args) throws Exception {
|
||
|
Grasscutter.loadConfig();
|
||
|
Crypto.loadKeys();
|
||
|
|
||
|
for (String arg : args) {
|
||
|
switch (arg.toLowerCase()) {
|
||
|
case "-auth":
|
||
|
MODE = RunMode.AUTH;
|
||
|
break;
|
||
|
case "-game":
|
||
|
MODE = RunMode.GAME;
|
||
|
break;
|
||
|
case "-handbook":
|
||
|
Tools.createGmHandbook();
|
||
|
return;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Startup
|
||
|
Grasscutter.getLogger().info("Grasscutter Emu");
|
||
|
|
||
|
// Load resource files
|
||
|
ResourceLoader.loadAll();
|
||
|
|
||
|
// Database
|
||
|
DatabaseManager.initialize();
|
||
|
|
||
|
// Run servers
|
||
|
dispatchServer = new DispatchServer();
|
||
|
dispatchServer.start();
|
||
|
|
||
|
gameServer = new GameServer(new InetSocketAddress(getConfig().GameServerIp, getConfig().GameServerPort));
|
||
|
gameServer.start();
|
||
|
|
||
|
startConsole();
|
||
|
}
|
||
|
|
||
|
public static Config getConfig() {
|
||
|
return config;
|
||
|
}
|
||
|
|
||
|
public static Logger getLogger() {
|
||
|
return log;
|
||
|
}
|
||
|
|
||
|
public static Gson getGsonFactory() {
|
||
|
return gson;
|
||
|
}
|
||
|
|
||
|
public static DispatchServer getDispatchServer() {
|
||
|
return dispatchServer;
|
||
|
}
|
||
|
|
||
|
public static GameServer getGameServer() {
|
||
|
return gameServer;
|
||
|
}
|
||
|
|
||
|
public static void loadConfig() {
|
||
|
try (FileReader file = new FileReader(configFile)) {
|
||
|
config = gson.fromJson(file, Config.class);
|
||
|
} catch (Exception e) {
|
||
|
Grasscutter.config = new Config();
|
||
|
}
|
||
|
saveConfig();
|
||
|
}
|
||
|
|
||
|
public static void saveConfig() {
|
||
|
try (FileWriter file = new FileWriter(configFile)) {
|
||
|
file.write(gson.toJson(config));
|
||
|
} catch (Exception e) {
|
||
|
Grasscutter.getLogger().error("Config save error");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static void startConsole() {
|
||
|
String input;
|
||
|
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
|
||
|
while ((input = br.readLine()) != null) {
|
||
|
ServerCommands.handle(input);
|
||
|
}
|
||
|
} catch (Exception e) {
|
||
|
Grasscutter.getLogger().error("Console error:", e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public enum RunMode {
|
||
|
BOTH,
|
||
|
AUTH,
|
||
|
GAME
|
||
|
}
|
||
|
}
|