KajetansMod.java 12 KB

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