KajetansMod.java 13 KB

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