123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- package me.km;
- import me.hammerle.snuviscript.code.ISnuviLogger;
- import me.hammerle.snuviscript.config.SnuviConfig;
- import me.kcm.events.Hooks;
- import me.km.blockprotections.BlockProtectionBank;
- import me.km.blockprotections.BlockProtectionEvents;
- import me.km.blockprotections.DummyBlockProtection;
- import me.km.blockprotections.IBlockProtection;
- import me.km.databank.DataBank;
- import me.km.events.CustomEventCaller;
- import me.km.overrides.ModPlayerList;
- import me.km.permissions.ModCommandManager;
- import me.km.permissions.PermissionManager;
- import me.km.playerbank.DummyPlayerBank;
- import me.km.playerbank.IPlayerBank;
- import me.km.playerbank.PlayerBank;
- import me.km.playerbank.PlayerManager;
- import me.km.plots.ProtectionEvents;
- import me.km.plots.WorldPlotMap;
- import me.km.scheduler.SnuviScheduler;
- import me.km.snuviscript.SnuviLogger;
- import me.km.utils.ReflectionUtils;
- import net.minecraft.server.dedicated.DedicatedServer;
- import net.minecraftforge.api.distmarker.Dist;
- import net.minecraftforge.api.distmarker.OnlyIn;
- import net.minecraftforge.common.MinecraftForge;
- import me.km.snuviscript.CommandGiveUp;
- import me.km.snuviscript.CommandScript;
- import me.km.snuviscript.DummyScriptBank;
- import me.km.snuviscript.IScriptBank;
- import me.km.snuviscript.MinecraftFunctions;
- import me.km.snuviscript.ScriptBank;
- import me.km.snuviscript.ScriptEvents;
- import me.km.snuviscript.Scripts;
- import me.km.world.WorldEvents;
- @OnlyIn(Dist.DEDICATED_SERVER)
- public class Server
- {
- private static SnuviLogger logger;
- private static ModCommandManager commands;
- private static DedicatedServer server;
- private static SnuviScheduler scheduler;
- private static DataBank databank;
- private static Scripts scripts;
- public static ScriptEvents scriptEvents;
-
- public static void onStart(DedicatedServer serverIn)
- {
- server = serverIn;
- logger = new SnuviLogger();
-
- SnuviConfig conf = new SnuviConfig(logger, "", "config");
- if(conf.exists())
- {
- conf.load();
- }
-
- boolean debug = conf.getBoolean("debug", false);
-
- // permissions
- PermissionManager perms = new PermissionManager(debug);
- logger.setPlayerLoggingData(server, perms);
- if(debug)
- {
- logger.print("------------------------------------------------");
- logger.print("Starting server in debug mode");
- logger.print("------------------------------------------------");
- }
-
- // scheduler
- scheduler = new SnuviScheduler(logger);
-
- // mod player list hook
- Hooks.setPlayerListFunction(ds ->
- {
- ds.setPlayerList(new ModPlayerList(ds, scheduler));
- });
-
- // scripts
- scripts = new Scripts(logger, scheduler);
- scriptEvents = new ScriptEvents(scripts, server, perms);
- MinecraftForge.EVENT_BUS.register(scriptEvents);
-
- // command manager
- commands = new ModCommandManager(true, perms, scriptEvents, scripts, scheduler);
- ReflectionUtils.setCommandManager(server, commands);
- commands.registerCommand(new CommandGiveUp(scripts));
- commands.registerCommand(new CommandScript(scripts, server));
-
- // data base connection
- databank = new DataBank(logger, conf.getString("user", "root"), conf.getString("password", ""));
- if(!databank.openDataBankConnection())
- {
- logger.print("------------------------------------------------");
- logger.print("Starting server with dummy databank");
- logger.print("------------------------------------------------");
- }
- databank.startReconnecting(scheduler);
-
- // protections / block protections / player manager
- WorldPlotMap plotMap = new WorldPlotMap();
- IBlockProtection blockProtection;
- IPlayerBank playerBank;
- if(databank.isDummyDatabank())
- {
- blockProtection = new DummyBlockProtection();
- playerBank = new DummyPlayerBank();
- }
- else
- {
- blockProtection = new BlockProtectionBank(databank);
- playerBank = new PlayerBank(databank);
- }
- MinecraftForge.EVENT_BUS.register(new ProtectionEvents(plotMap, perms));
- MinecraftForge.EVENT_BUS.register(new BlockProtectionEvents(blockProtection, perms));
-
- PlayerManager playerManager = new PlayerManager(logger, playerBank);
- MinecraftForge.EVENT_BUS.register(playerManager);
- CustomEventCaller customEventCaller = new CustomEventCaller(server, scheduler);
- scripts.setCustomEventCaller(customEventCaller);
- MinecraftForge.EVENT_BUS.register(customEventCaller);
-
- // scripts
- IScriptBank scriptBank;
- if(databank.isDummyDatabank())
- {
- scriptBank = new DummyScriptBank();
- }
- else
- {
- scriptBank = new ScriptBank(databank, playerManager);
- }
- MinecraftFunctions.registerFunctions(
- scripts.getScriptManager(), scripts, perms, scheduler, server, playerBank,
- customEventCaller, scriptBank, databank, blockProtection, plotMap);
-
- MinecraftForge.EVENT_BUS.register(new WorldEvents());
- scripts.startScript("startscript");
- }
-
- public static void onStop()
- {
- scripts.startScript("endscript");
- scheduler.stop();
- databank.closeDataBankConnection();
- scheduler.getWorker().stop();
- }
-
- public static void executeCommand(String s)
- {
- commands.handleCommand(server.getCommandSource(), s);
- }
-
- public static ISnuviLogger getLogger()
- {
- return logger;
- }
- }
|