KajetansMod.java 13 KB

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