KajetansMod.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. package me.km;
  2. import me.kcm.command.ModServerCommandManager;
  3. import me.km.blockprotections.BlockProtection;
  4. import me.km.module.Module;
  5. import me.km.module.SimpleConfig;
  6. import me.km.databank.DataBank;
  7. import me.km.datatools.DataToolsEvents;
  8. import me.km.world.ModWorldGeneration;
  9. import me.km.networking.ModPacketHandler;
  10. import me.km.permissions.PermissionManager;
  11. import me.km.playerbank.PlayerManager;
  12. import me.km.plots.ProtectionBank;
  13. import me.km.scheduler.SnuviScheduler;
  14. import me.km.snuviscript.ScriptModule;
  15. import me.km.world.ChangeWorldEvent;
  16. import net.minecraft.server.MinecraftServer;
  17. import net.minecraft.util.text.TextFormatting;
  18. import net.minecraftforge.fluids.FluidRegistry;
  19. import net.minecraftforge.fml.common.Mod;
  20. import net.minecraftforge.fml.common.SidedProxy;
  21. import net.minecraftforge.fml.common.event.FMLInitializationEvent;
  22. import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
  23. import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
  24. import net.minecraftforge.fml.common.event.FMLServerAboutToStartEvent;
  25. import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
  26. import net.minecraftforge.fml.common.registry.GameRegistry;
  27. import net.minecraftforge.fml.relauncher.Side;
  28. import net.minecraftforge.fml.relauncher.SideOnly;
  29. @Mod(modid = KajetansMod.MODID, version = KajetansMod.VERSION, name = KajetansMod.NAME)
  30. public class KajetansMod
  31. {
  32. @SideOnly(Side.SERVER)
  33. public static SimpleConfig conf;
  34. public static Module error;
  35. public static DataBank databank;
  36. @SideOnly(Side.SERVER)
  37. public static SnuviScheduler scheduler;
  38. public static PlayerManager playerbank;
  39. public static ProtectionBank plots;
  40. public static BlockProtection blocks;
  41. public static Module datatools;
  42. public static Module world;
  43. public static ScriptModule scripts;
  44. @SideOnly(Side.SERVER)
  45. public static PermissionManager perms;
  46. @SidedProxy(serverSide = "me.km.CommonProxy", clientSide = "me.km.ClientProxy")
  47. public static CommonProxy proxy;
  48. public static final String MODID = "km";
  49. public static final String NAME = "Kajetans Mod";
  50. public static final String VERSION = "0.0.34";
  51. @Mod.Instance(MODID)
  52. public static KajetansMod instance;
  53. public static MinecraftServer server;
  54. public static boolean debugMode;
  55. public static boolean singlePlayer;
  56. static
  57. {
  58. FluidRegistry.enableUniversalBucket();
  59. }
  60. @Mod.EventHandler
  61. public void preInit(FMLPreInitializationEvent e)
  62. {
  63. System.out.println(NAME + " is loading!");
  64. ModPacketHandler.init();
  65. GameRegistry.registerWorldGenerator(new ModWorldGeneration(), 3);
  66. DamageUtils.init();
  67. /*net.minecraftforge.common.MinecraftForge.EVENT_BUS.register(new Object()
  68. {
  69. @net.minecraftforge.fml.common.eventhandler.SubscribeEvent
  70. public void wusi2(net.minecraftforge.event.ServerChatEvent e)
  71. {
  72. BlockPos pos = Utils.getTargetBlock(e.getPlayer());
  73. e.getPlayer().sendMessage(new TextComponentString(pos.toString()));
  74. }
  75. });*/
  76. }
  77. @Mod.EventHandler
  78. public void init(FMLInitializationEvent e)
  79. {
  80. proxy.init();
  81. }
  82. @Mod.EventHandler
  83. public void beforeStart(FMLServerAboutToStartEvent e)
  84. {
  85. // takes place after setting of playerlist but before world load
  86. server = e.getServer();
  87. }
  88. @Mod.EventHandler
  89. public void serverStarting(FMLServerStartingEvent e)
  90. {
  91. singlePlayer = e.getServer().isSinglePlayer();
  92. if(singlePlayer)
  93. {
  94. return;
  95. }
  96. // configuration and error-dummy
  97. error = new Module("ERROR", TextFormatting.RED);
  98. conf = new SimpleConfig(error, "", "config", true);
  99. debugMode = conf.getBoolean("debug", false);
  100. if(debugMode)
  101. {
  102. System.out.println("------------------------------------------------");
  103. System.out.println("Starting server in debug mode");
  104. System.out.println("------------------------------------------------");
  105. }
  106. else
  107. {
  108. System.out.println("------------------------------------------------");
  109. System.out.println("Starting server without debug mode");
  110. System.out.println("------------------------------------------------");
  111. }
  112. // Datenbankverbindung
  113. databank = new DataBank("DataBank", TextFormatting.RED, conf.getString("user", "root"), conf.getString("password", ""));
  114. if(!databank.openDataBankConnection())
  115. {
  116. System.out.println("------------------------------------------------");
  117. System.out.println("Starting server with dummy databank");
  118. System.out.println("------------------------------------------------");
  119. }
  120. // Scheduler
  121. scheduler = new SnuviScheduler("Scheduler", TextFormatting.GREEN);
  122. scheduler.registerEvents("me.km.scheduler");
  123. databank.startReconnecting(scheduler);
  124. // Spielerdatenbank
  125. playerbank = new PlayerManager("PlayerBank", TextFormatting.RED, databank);
  126. // Plot-System
  127. plots = new ProtectionBank();
  128. // block protections
  129. blocks = new BlockProtection();
  130. // DataTools
  131. datatools = new Module("DataTools", TextFormatting.GRAY);
  132. datatools.registerCommands(e, "me.km.datatools");
  133. datatools.registerEvent(new DataToolsEvents(datatools));
  134. // Worldmanager
  135. world = new Module("Worlds", TextFormatting.RED);
  136. world.registerEvent(new ChangeWorldEvent());
  137. // Scriptsystem
  138. scripts = new ScriptModule("Scripts", TextFormatting.LIGHT_PURPLE);
  139. scripts.registerCommands(e, "me.km.snuviscript");
  140. // Permissions
  141. perms = new PermissionManager("Perms", TextFormatting.DARK_PURPLE);
  142. perms.registerEvents("me.km.permissions");
  143. setPermissionManager();
  144. scripts.startScript("startscript");
  145. }
  146. @SideOnly(Side.SERVER)
  147. private void setPermissionManager() // dependency workaround
  148. {
  149. if(server.commandManager instanceof ModServerCommandManager)
  150. {
  151. ((ModServerCommandManager) server.commandManager).setPermissionManager(perms);
  152. ((ModServerCommandManager) server.commandManager).registerRegistryEvent("com.sk89q");
  153. }
  154. }
  155. @Mod.EventHandler
  156. public void onServerStop(FMLServerStoppingEvent e)
  157. {
  158. if(singlePlayer)
  159. {
  160. return;
  161. }
  162. scripts.startScript("endscript");
  163. databank.closeDataBankConnection();
  164. scheduler.getWorker().stop();
  165. }
  166. }