package me.km; import me.kcm.command.ModServerCommandManager; import me.km.blockprotections.BlockProtection; import me.km.module.Module; import me.km.module.SimpleConfig; import me.km.databank.DataBank; import me.km.world.ModWorldGeneration; import me.km.networking.ModPacketHandler; import me.km.playerbank.PlayerManager; import me.km.plots.ProtectionBank; import me.km.scheduler.SnuviScheduler; import me.km.snuviscript.ScriptModule; import me.km.world.ChangeWorldEvent; import net.minecraft.server.MinecraftServer; import net.minecraft.util.text.TextFormatting; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLServerStartingEvent; import net.minecraftforge.fml.common.event.FMLServerAboutToStartEvent; import net.minecraftforge.fml.common.event.FMLServerStoppingEvent; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @Mod(modid = KajetansMod.MODID, version = KajetansMod.VERSION, name = KajetansMod.NAME) public class KajetansMod { @SideOnly(Side.SERVER) public static SimpleConfig conf; public static Module error; public static DataBank databank; @SideOnly(Side.SERVER) public static SnuviScheduler scheduler; public static PlayerManager playerbank; public static ProtectionBank plots; public static BlockProtection blocks; public static ScriptModule scripts; @SideOnly(Side.SERVER) public static PermissionManager perms; @SidedProxy(serverSide = "me.km.CommonProxy", clientSide = "me.km.ClientProxy") public static CommonProxy proxy; public static final String MODID = "km"; public static final String NAME = "Kajetans Mod"; public static final String VERSION = "0.0.35"; @Mod.Instance(MODID) public static KajetansMod instance; public static MinecraftServer server; public static boolean debugMode; public static boolean singlePlayer; static { FluidRegistry.enableUniversalBucket(); } @Mod.EventHandler public void preInit(FMLPreInitializationEvent e) { System.out.println(NAME + " is loading!"); ModPacketHandler.init(); GameRegistry.registerWorldGenerator(new ModWorldGeneration(), 3); DamageUtils.init(); /*net.minecraftforge.common.MinecraftForge.EVENT_BUS.register(new Object() { @net.minecraftforge.fml.common.eventhandler.SubscribeEvent public void wusi2(net.minecraftforge.event.ServerChatEvent e) { BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(0, 0, 0); = Utils.getTargetBlock(e.getPlayer()); e.getPlayer().sendMessage(new TextComponentString(pos.toString())); } });*/ } @Mod.EventHandler public void init(FMLInitializationEvent e) { proxy.init(); } @Mod.EventHandler public void beforeStart(FMLServerAboutToStartEvent e) { // takes place after setting of playerlist but before world load server = e.getServer(); } @Mod.EventHandler public void serverStarting(FMLServerStartingEvent e) { singlePlayer = e.getServer().isSinglePlayer(); if(singlePlayer) { return; } // configuration and error-dummy error = new Module("ERROR", TextFormatting.RED); conf = new SimpleConfig(error, "", "config", true); debugMode = conf.getBoolean("debug", false); if(debugMode) { System.out.println("------------------------------------------------"); System.out.println("Starting server in debug mode"); System.out.println("------------------------------------------------"); } else { System.out.println("------------------------------------------------"); System.out.println("Starting server without debug mode"); System.out.println("------------------------------------------------"); } // Datenbankverbindung databank = new DataBank("DataBank", TextFormatting.RED, conf.getString("user", "root"), conf.getString("password", "")); if(!databank.openDataBankConnection()) { System.out.println("------------------------------------------------"); System.out.println("Starting server with dummy databank"); System.out.println("------------------------------------------------"); } // Scheduler scheduler = new SnuviScheduler("Scheduler", TextFormatting.GREEN); scheduler.registerEvents("me.km.scheduler"); databank.startReconnecting(scheduler); // Spielerdatenbank playerbank = new PlayerManager("PlayerBank", TextFormatting.RED, databank); // Plot-System plots = new ProtectionBank(); // block protections blocks = new BlockProtection(); // Worldmanager Module.registerEvent(new ChangeWorldEvent()); // Scriptsystem scripts = new ScriptModule("Scripts", TextFormatting.LIGHT_PURPLE); scripts.registerCommands(e, "me.km.snuviscript"); // Permissions perms = new PermissionManager("Perms", TextFormatting.DARK_PURPLE); setPermissionManager(); scripts.startScript("startscript"); } @SideOnly(Side.SERVER) private void setPermissionManager() // dependency workaround { if(server.commandManager instanceof ModServerCommandManager) { ((ModServerCommandManager) server.commandManager).setPermissionManager(perms); ((ModServerCommandManager) server.commandManager).registerRegistryEvent("com.sk89q"); } } @Mod.EventHandler public void onServerStop(FMLServerStoppingEvent e) { if(singlePlayer) { return; } scripts.startScript("endscript"); scheduler.stop(); databank.closeDataBankConnection(); scheduler.getWorker().stop(); } }