package me.km; import me.kcm.command.ModServerCommandManager; import me.km.capabilities.CapabilitiesEvents; import me.km.api.Module; import me.km.api.SimpleConfig; import me.km.blockprotections.BlockProtectionBank; import me.km.capabilities.DamageUtils; import me.km.chatmanager.ChatManager; import me.km.data.DataManager; import me.km.databank.DataBank; import me.km.dimensions.ModWorldGeneration; import me.km.dimensions.WorldData; import me.km.jobsystem.JobAPI; import me.km.networking.ModPacketHandler; import me.km.permissions.PermissionManager; 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.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 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 DataManager data; public static SkillManager skills; public static Module scrolls; public static ScoreboardAPI scoreboard; @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.22"; @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(); CapabilitiesEvents.init(); /*net.minecraftforge.common.MinecraftForge.EVENT_BUS.register(new Object() { @net.minecraftforge.fml.common.eventhandler.SubscribeEvent public void wusi2(net.minecraftforge.event.ServerChatEvent e) { try { net.minecraft.entity.player.EntityPlayerMP p = e.getPlayer(); String[] parts = e.getMessage().split(" "); switch(parts[0]) { case "human": me.km.entities.EntityHuman human = new me.km.entities.EntityHuman(p.world); human.setPosition(p.posX, p.posY, p.posZ); p.world.spawnEntity(human); break; case "name": me.km.api.Utils.getEntities(p.world, p.posX, p.posY, p.posZ, 5, me.km.entities.EntityHuman.class) .forEach(h -> h.setCustomNameTag(parts[1])); break; case "skin": me.km.api.Utils.getEntities(p.world, p.posX, p.posY, p.posZ, 5, me.km.entities.EntityHuman.class) .forEach(h -> h.setSkinName(parts[1])); break; } } catch(Exception ex) { ex.printStackTrace(); } } @net.minecraftforge.fml.common.eventhandler.SubscribeEvent public void onCrafting(net.minecraftforge.fml.common.gameevent.PlayerEvent.ItemCraftedEvent e) { if(e.player.world.isRemote) { System.out.println("CRAFT"); int size = e.craftMatrix.getInventoryStackLimit(); net.minecraft.item.ItemStack stack; for(int i = 0; i < size; i++) { stack = e.craftMatrix.getStackInSlot(i); if(!stack.isEmpty()) { stack.shrink(1); } } } } });*/ } @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", "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()) { System.out.println("------------------------------------------------"); System.out.println("Starting server with dummy databank"); System.out.println("------------------------------------------------"); } // Scheduler scheduler = new SnuviScheduler("Scheduler", "Scheduler", TextFormatting.GREEN); scheduler.registerEvents("me.km.scheduler"); databank.startReconnecting(scheduler); // Spielerdatenbank playerbank = new PlayerManager("PlayerBank", "PlayerBank", TextFormatting.RED, databank); // databank is initialized in JobAPI in order to have a reference 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)); 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)); 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)); 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"); // DataManager data = new DataManager("DataManager", "Data", TextFormatting.GRAY); data.registerEvents("me.km.data"); // Skills skills = new SkillManager("SkillSystem", "Skills", TextFormatting.BLUE); skills.registerCommands(e, "me.km.skills"); skills.registerEvents("me.km.skills"); skills.registerEvents("me.km.effects.passive"); // 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.GREEN); // Permissions perms = new PermissionManager("Permissions", "Perms", TextFormatting.DARK_PURPLE); perms.registerEvents("me.km.permissions"); setPermissionManager(); scripts.startScript("startscript"); } @SideOnly(Side.SERVER) private void setPermissionManager() // dependency workaround { if(server.commandManager instanceof ModServerCommandManager) { ((ModServerCommandManager) server.commandManager).setPermissionManager(perms); } } @Mod.EventHandler public void onServerStop(FMLServerStoppingEvent e) { if(singlePlayer) { return; } scripts.startScript("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); }); }*/ }