package me.km; import me.km.capabilities.CapabilitiesEvents; import me.km.api.Module; import me.km.api.SimpleConfig; import me.km.api.CommandOverloader; import me.km.blockprotections.BlockProtectionBank; import me.km.blocks.BlockEvents; import me.km.capabilities.DamageUtils; import me.km.chatmanager.ChatManager; import me.km.databank.DataBank; import me.km.dimensions.ModWorldGeneration; import me.km.dimensions.WorldData; import me.km.effects.EffectUtils; import me.km.events.CustomEventCaller; import me.km.fluids.ModFluids; import me.km.jobsystem.JobAPI; import me.km.permissions.PermissionManager; import me.km.playerbank.PlayerBank; import me.km.playerbank.PlayerManager; import me.km.plots.ProtectionBank; import me.km.scheduler.SnuviScheduler; import me.km.scoreboard.ScoreboardAPI; import me.km.skills.SkillManager; import me.km.snuviscript.ScriptModule; import me.km.snuviscript.ScriptBank; import net.minecraft.server.MinecraftServer; import net.minecraft.util.text.TextFormatting; import net.minecraftforge.common.MinecraftForge; 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.event.FMLServerStartedEvent; 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 Module generalCommands; public static ChatManager chatManager; public static Module afkManager; public static Module plots; public static Module blocks; public static Module datatools; public static WorldData worldManager; public static Module environment; public static ScriptModule scripts; public static JobAPI jobs; public static EffectUtils effects; public static SkillManager skills; public static Module scrolls; public static ScoreboardAPI scoreboard; 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.10"; @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!"); ModFluids.init(); GameRegistry.registerWorldGenerator(new ModWorldGeneration(), 3); DamageUtils.init(); CapabilitiesEvents.init(); MinecraftForge.EVENT_BUS.register(new CapabilitiesEvents()); } @Mod.EventHandler public void init(FMLInitializationEvent e) { proxy.initEntities(); MinecraftForge.EVENT_BUS.register(new ClientEvents()); MinecraftForge.EVENT_BUS.register(new BlockEvents()); MinecraftForge.EVENT_BUS.register(new CustomEventCaller()); } @Mod.EventHandler public void beforeStart(FMLServerAboutToStartEvent e) { // takes place after setting of playerlist but before world load server = e.getServer(); proxy.overloadPlayerList(server); } private FMLServerStartingEvent event; @Mod.EventHandler public void serverStarting(FMLServerStartingEvent e) { singlePlayer = e.getServer().isSinglePlayer(); // Workaround event = e; if(singlePlayer) { /*perms = new PermissionManager("Permissions", "Perms", TextFormatting.DARK_PURPLE); perms.registerEvents("me.km.permissions"); scheduler = new SnuviScheduler("Scheduler", "Scheduler", TextFormatting.GREEN); scheduler.registerEvents("me.km.scheduler"); generalCommands = new Module("GeneralCommands", "Commands", TextFormatting.GOLD); generalCommands.registerCommands(e, "me.km.commands"); debugMode = true;*/ return; } // Konfiguration und Error-Dummy error = new Module("ERROR", "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", "DataBank", TextFormatting.RED, conf.getString("user", "root"), conf.getString("password", "")); if(!databank.openDataBankConnection()) { return; } // Scheduler scheduler = new SnuviScheduler("Scheduler", "Scheduler", TextFormatting.GREEN); scheduler.registerEvents("me.km.scheduler"); // Spielerdatenbank playerbank = new PlayerManager("PlayerBank", "PlayerBank", TextFormatting.RED); playerbank.setDataBank(new PlayerBank(playerbank, databank.getConnection())); playerbank.registerEvents("me.km.playerbank"); // Grundlegende Commands generalCommands = new Module("GeneralCommands", "Commands", TextFormatting.GOLD); generalCommands.registerCommands(e, "me.km.commands"); // Chatmanager chatManager = new ChatManager("ChatManager", "Chat", TextFormatting.BLUE); chatManager.registerCommands(e, "me.km.chatmanager"); chatManager.registerEvents("me.km.chatmanager"); // AFK-Manager afkManager = new Module("AfkManager", "AFK", TextFormatting.GRAY); afkManager.registerCommands(e, "me.km.afk"); afkManager.registerEvents("me.km.afk"); // Plot-System plots = new Module("Plots", "Plots", TextFormatting.GOLD); plots.setDataBank(new ProtectionBank(plots, databank.getConnection())); plots.registerCommands(e, "me.km.plots"); plots.registerEvents("me.km.plots"); // Chests- und Co-Protections blocks = new Module("BlockProtections", "Blocks", TextFormatting.BLUE); blocks.setDataBank(new BlockProtectionBank(blocks, databank.getConnection())); blocks.registerCommands(e, "me.km.blockprotections"); blocks.registerEvents("me.km.blockprotections"); // DataTools datatools = new Module("DataTools", "DataTools", TextFormatting.GRAY); datatools.registerCommands(e, "me.km.datatools"); datatools.registerEvents("me.km.datatools"); // Worldmanager worldManager = new WorldData("WorldManager", "Worlds", TextFormatting.RED); worldManager.registerCommands(e, "me.km.dimensions"); worldManager.registerEvents("me.km.dimensions"); // Scriptsystem scripts = new ScriptModule("Scripts", "Scripts", TextFormatting.LIGHT_PURPLE); scripts.setDataBank(new ScriptBank(scripts, databank.getConnection())); scripts.registerCommands(e, "me.km.snuviscript"); scripts.registerEvents("me.km.snuviscript"); // Jobsystem jobs = new JobAPI("JobSystem", "Jobs", TextFormatting.GREEN); // databank is initialized in JobAPI in order to have a reference jobs.registerCommands(e, "me.km.jobsystem"); jobs.registerEvents("me.km.jobsystem"); // Effectsystem effects = new EffectUtils("Effects", "Effects", TextFormatting.BLUE); effects.registerCommands(e, "me.km.effects"); effects.registerEvents("me.km.effects.passive"); // Skills skills = new SkillManager("SkillSystem", "Skills", TextFormatting.BLUE); skills.registerCommands(e, "me.km.skills"); skills.registerEvents("me.km.skills"); // Scrollsystem scrolls = new Module("Scrolls", "Scrolls", TextFormatting.BLUE); scrolls.registerCommands(e, "me.km.scrolls"); // Environment environment = new Module("Environment", "Environment", TextFormatting.GREEN); environment.registerCommands(e, "me.km.environment"); environment.registerEvents("me.km.environment"); // Scoreboard scoreboard = new ScoreboardAPI("Scoreboard", "Scoreboard", TextFormatting.GOLD); scoreboard.registerEvents("me.km.scoreboard"); // Permissions perms = new PermissionManager("Permissions", "Perms", TextFormatting.DARK_PURPLE); perms.registerEvents("me.km.permissions"); scripts.startScript(server, "startscript"); } @Mod.EventHandler public void overwriteCommandsOnFullStart(FMLServerStartedEvent e) { if(singlePlayer) { return; } // Workaround KajetansMod.scheduler.scheduleTask(() -> { CommandOverloader.overloadCommands(event, generalCommands); event = null; }, 60); } @Mod.EventHandler public void onServerStop(FMLServerStoppingEvent e) { if(singlePlayer) { return; } scripts.startScript(server, "endscript"); databank.closeDataBankConnection(); } /*public static void main(String[] args) { // Erstellt alle Enums für die aktiven Effekte PackageHelper.getClassesInIde("me.km.effects.active").stream() .forEach(s -> { StringBuilder en = new StringBuilder(s.substring(0, s.length() - 6)); int i = 1; while(i < en.length()) { if(Character.isUpperCase(en.charAt(i))) { en.insert(i, "_"); i++; } i++; } String wusi = " (true, " + s + "),"; wusi = en.toString().toUpperCase() + wusi.substring(en.length()); System.out.println(wusi); }); }*/ }