KajetansMod.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. package me.km;
  2. import me.km.capabilities.CapabilitiesEvents;
  3. import me.km.api.Module;
  4. import me.km.api.SimpleConfig;
  5. import me.km.api.CommandOverloader;
  6. import me.km.blockprotections.BlockProtectionBank;
  7. import me.km.blocks.BlockEvents;
  8. import me.km.capabilities.DamageUtils;
  9. import me.km.chatmanager.ChatManager;
  10. import me.km.databank.DataBank;
  11. import me.km.dimensions.ModWorldGeneration;
  12. import me.km.dimensions.WorldData;
  13. import me.km.effects.EffectUtils;
  14. import me.km.effects.passive.EntityDamageEffects;
  15. import me.km.events.CustomEventCaller;
  16. import me.km.fluids.ModFluids;
  17. import me.km.jobsystem.JobAPI;
  18. import me.km.permissions.PermissionManager;
  19. import me.km.playerbank.PlayerBank;
  20. import me.km.playerbank.PlayerManager;
  21. import me.km.plots.ProtectionBank;
  22. import me.km.scheduler.SnuviScheduler;
  23. import me.km.scoreboard.ScoreboardAPI;
  24. import me.km.skills.SkillManager;
  25. import me.km.snuviscript.ScriptModule;
  26. import me.km.snuviscript.ScriptBank;
  27. import net.minecraft.server.MinecraftServer;
  28. import net.minecraft.util.text.TextFormatting;
  29. import net.minecraftforge.common.MinecraftForge;
  30. import net.minecraftforge.fluids.FluidRegistry;
  31. import net.minecraftforge.fml.common.Mod;
  32. import net.minecraftforge.fml.common.SidedProxy;
  33. import net.minecraftforge.fml.common.event.FMLInitializationEvent;
  34. import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
  35. import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
  36. import net.minecraftforge.fml.common.event.FMLServerAboutToStartEvent;
  37. import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
  38. import net.minecraftforge.fml.common.event.FMLServerStartedEvent;
  39. import net.minecraftforge.fml.common.registry.GameRegistry;
  40. import net.minecraftforge.fml.relauncher.Side;
  41. import net.minecraftforge.fml.relauncher.SideOnly;
  42. @Mod(modid = KajetansMod.MODID, version = KajetansMod.VERSION, name = KajetansMod.NAME)
  43. public class KajetansMod
  44. {
  45. @SideOnly(Side.SERVER)
  46. public static SimpleConfig conf;
  47. public static Module error;
  48. public static DataBank databank;
  49. @SideOnly(Side.SERVER)
  50. public static SnuviScheduler scheduler;
  51. public static PlayerManager playerbank;
  52. public static Module generalCommands;
  53. public static ChatManager chatManager;
  54. public static Module afkManager;
  55. public static Module plots;
  56. public static Module blocks;
  57. public static Module datatools;
  58. public static WorldData worldManager;
  59. public static Module environment;
  60. public static ScriptModule scripts;
  61. public static JobAPI jobs;
  62. public static EffectUtils effects;
  63. public static SkillManager skills;
  64. public static Module scrolls;
  65. public static ScoreboardAPI scoreboard;
  66. public static PermissionManager perms;
  67. @SidedProxy(serverSide = "me.km.CommonProxy", clientSide = "me.km.ClientProxy")
  68. public static CommonProxy proxy;
  69. public static final String MODID = "km";
  70. public static final String NAME = "Kajetans Mod";
  71. public static final String VERSION = "0.0.10";
  72. @Mod.Instance(MODID)
  73. public static KajetansMod instance;
  74. public static MinecraftServer server;
  75. public static boolean debugMode;
  76. public static boolean singlePlayer;
  77. static
  78. {
  79. FluidRegistry.enableUniversalBucket();
  80. }
  81. @Mod.EventHandler
  82. public void preInit(FMLPreInitializationEvent e)
  83. {
  84. System.out.println(NAME + " is loading!");
  85. ModFluids.init();
  86. GameRegistry.registerWorldGenerator(new ModWorldGeneration(), 3);
  87. DamageUtils.init();
  88. CapabilitiesEvents.init();
  89. MinecraftForge.EVENT_BUS.register(new CapabilitiesEvents());
  90. }
  91. @Mod.EventHandler
  92. public void init(FMLInitializationEvent e)
  93. {
  94. proxy.initEntities();
  95. MinecraftForge.EVENT_BUS.register(new ClientEvents());
  96. MinecraftForge.EVENT_BUS.register(new BlockEvents());
  97. MinecraftForge.EVENT_BUS.register(new CustomEventCaller());
  98. }
  99. @Mod.EventHandler
  100. public void beforeStart(FMLServerAboutToStartEvent e)
  101. {
  102. // takes place after setting of playerlist but before world load
  103. server = e.getServer();
  104. proxy.overloadPlayerList(server);
  105. }
  106. private FMLServerStartingEvent event;
  107. @Mod.EventHandler
  108. public void serverStarting(FMLServerStartingEvent e)
  109. {
  110. singlePlayer = e.getServer().isSinglePlayer();
  111. // Workaround
  112. event = e;
  113. if(singlePlayer)
  114. {
  115. /*perms = new PermissionManager("Permissions", "Perms", TextFormatting.DARK_PURPLE);
  116. perms.registerEvents("me.km.permissions");
  117. scheduler = new SnuviScheduler("Scheduler", "Scheduler", TextFormatting.GREEN);
  118. scheduler.registerEvents("me.km.scheduler");
  119. generalCommands = new Module("GeneralCommands", "Commands", TextFormatting.GOLD);
  120. generalCommands.registerCommands(e, "me.km.commands");
  121. worldManager = new WorldData("WorldManager", "Worlds", TextFormatting.RED);
  122. worldManager.registerCommands(e, "me.km.dimensions");
  123. worldManager.registerEvents("me.km.dimensions");
  124. effects = new EffectUtils("Effects", "Effects", TextFormatting.BLUE);
  125. effects.registerCommands(e, "me.km.effects");
  126. //effects.registerEvents("me.km.effects.passive");
  127. MinecraftForge.EVENT_BUS.register(new EntityDamageEffects(effects));
  128. debugMode = true;*/
  129. return;
  130. }
  131. // Konfiguration und Error-Dummy
  132. error = new Module("ERROR", "ERROR", TextFormatting.RED);
  133. conf = new SimpleConfig(error, "", "config", true);
  134. debugMode = conf.getBoolean("debug", false);
  135. if(debugMode)
  136. {
  137. System.out.println("------------------------------------------------");
  138. System.out.println("Starting server in debug mode");
  139. System.out.println("------------------------------------------------");
  140. }
  141. else
  142. {
  143. System.out.println("------------------------------------------------");
  144. System.out.println("Starting server without debug mode");
  145. System.out.println("------------------------------------------------");
  146. }
  147. // Datenbankverbindung
  148. databank = new DataBank("DataBank", "DataBank", TextFormatting.RED, conf.getString("user", "root"), conf.getString("password", ""));
  149. if(!databank.openDataBankConnection())
  150. {
  151. return;
  152. }
  153. // Scheduler
  154. scheduler = new SnuviScheduler("Scheduler", "Scheduler", TextFormatting.GREEN);
  155. scheduler.registerEvents("me.km.scheduler");
  156. // Spielerdatenbank
  157. playerbank = new PlayerManager("PlayerBank", "PlayerBank", TextFormatting.RED);
  158. playerbank.setDataBank(new PlayerBank(playerbank, databank.getConnection()));
  159. playerbank.registerEvents("me.km.playerbank");
  160. // Grundlegende Commands
  161. generalCommands = new Module("GeneralCommands", "Commands", TextFormatting.GOLD);
  162. generalCommands.registerCommands(e, "me.km.commands");
  163. // Chatmanager
  164. chatManager = new ChatManager("ChatManager", "Chat", TextFormatting.BLUE);
  165. chatManager.registerCommands(e, "me.km.chatmanager");
  166. chatManager.registerEvents("me.km.chatmanager");
  167. // AFK-Manager
  168. afkManager = new Module("AfkManager", "AFK", TextFormatting.GRAY);
  169. afkManager.registerCommands(e, "me.km.afk");
  170. afkManager.registerEvents("me.km.afk");
  171. // Plot-System
  172. plots = new Module("Plots", "Plots", TextFormatting.GOLD);
  173. plots.setDataBank(new ProtectionBank(plots, databank.getConnection()));
  174. plots.registerCommands(e, "me.km.plots");
  175. plots.registerEvents("me.km.plots");
  176. // Chests- und Co-Protections
  177. blocks = new Module("BlockProtections", "Blocks", TextFormatting.BLUE);
  178. blocks.setDataBank(new BlockProtectionBank(blocks, databank.getConnection()));
  179. blocks.registerCommands(e, "me.km.blockprotections");
  180. blocks.registerEvents("me.km.blockprotections");
  181. // DataTools
  182. datatools = new Module("DataTools", "DataTools", TextFormatting.GRAY);
  183. datatools.registerCommands(e, "me.km.datatools");
  184. datatools.registerEvents("me.km.datatools");
  185. // Worldmanager
  186. worldManager = new WorldData("WorldManager", "Worlds", TextFormatting.RED);
  187. worldManager.registerCommands(e, "me.km.dimensions");
  188. worldManager.registerEvents("me.km.dimensions");
  189. // Scriptsystem
  190. scripts = new ScriptModule("Scripts", "Scripts", TextFormatting.LIGHT_PURPLE);
  191. scripts.setDataBank(new ScriptBank(scripts, databank.getConnection()));
  192. scripts.registerCommands(e, "me.km.snuviscript");
  193. scripts.registerEvents("me.km.snuviscript");
  194. // Jobsystem
  195. jobs = new JobAPI("JobSystem", "Jobs", TextFormatting.GREEN);
  196. // databank is initialized in JobAPI in order to have a reference
  197. jobs.registerCommands(e, "me.km.jobsystem");
  198. jobs.registerEvents("me.km.jobsystem");
  199. // Effectsystem
  200. effects = new EffectUtils("Effects", "Effects", TextFormatting.BLUE);
  201. effects.registerCommands(e, "me.km.effects");
  202. effects.registerEvents("me.km.effects.passive");
  203. // Skills
  204. skills = new SkillManager("SkillSystem", "Skills", TextFormatting.BLUE);
  205. skills.registerCommands(e, "me.km.skills");
  206. skills.registerEvents("me.km.skills");
  207. // Scrollsystem
  208. scrolls = new Module("Scrolls", "Scrolls", TextFormatting.BLUE);
  209. scrolls.registerCommands(e, "me.km.scrolls");
  210. // Environment
  211. environment = new Module("Environment", "Environment", TextFormatting.GREEN);
  212. environment.registerCommands(e, "me.km.environment");
  213. environment.registerEvents("me.km.environment");
  214. // Scoreboard
  215. scoreboard = new ScoreboardAPI("Scoreboard", "Scoreboard", TextFormatting.GOLD);
  216. scoreboard.registerEvents("me.km.scoreboard");
  217. // Permissions
  218. perms = new PermissionManager("Permissions", "Perms", TextFormatting.DARK_PURPLE);
  219. perms.registerEvents("me.km.permissions");
  220. scripts.startScript(server, "startscript");
  221. }
  222. @Mod.EventHandler
  223. public void overwriteCommandsOnFullStart(FMLServerStartedEvent e)
  224. {
  225. if(singlePlayer)
  226. {
  227. return;
  228. }
  229. // Workaround
  230. KajetansMod.scheduler.scheduleTask(() ->
  231. {
  232. CommandOverloader.overloadCommands(event, generalCommands);
  233. event = null;
  234. }, 60);
  235. }
  236. @Mod.EventHandler
  237. public void onServerStop(FMLServerStoppingEvent e)
  238. {
  239. if(singlePlayer)
  240. {
  241. return;
  242. }
  243. scripts.startScript(server, "endscript");
  244. databank.closeDataBankConnection();
  245. }
  246. /*public static void main(String[] args)
  247. {
  248. // Erstellt alle Enums für die aktiven Effekte
  249. PackageHelper.getClassesInIde("me.km.effects.active").stream()
  250. .forEach(s ->
  251. {
  252. StringBuilder en = new StringBuilder(s.substring(0, s.length() - 6));
  253. int i = 1;
  254. while(i < en.length())
  255. {
  256. if(Character.isUpperCase(en.charAt(i)))
  257. {
  258. en.insert(i, "_");
  259. i++;
  260. }
  261. i++;
  262. }
  263. String wusi = " (true, " + s + "),";
  264. wusi = en.toString().toUpperCase() + wusi.substring(en.length());
  265. System.out.println(wusi);
  266. });
  267. }*/
  268. }