Advertisement
Guest User

CommandEvent.java | GCNT Development

a guest
May 19th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.85 KB | None | 0 0
  1. package me.gaagjescraft.network.team.advancedevents.events;
  2.  
  3. import me.gaagjescraft.network.team.advancedevents.customCenteredText.StringUtils;
  4. import me.gaagjescraft.network.team.advancedevents.files.CommandsFile;
  5. import me.gaagjescraft.network.team.advancedevents.main.EventActions;
  6. import me.gaagjescraft.network.team.advancedevents.main.Utils;
  7. import me.gaagjescraft.network.team.advancedevents.menus.Menu;
  8. import me.gaagjescraft.network.team.advancedevents.menus.MenuFile;
  9. import org.bukkit.Bukkit;
  10. import org.bukkit.ChatColor;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.event.EventHandler;
  13. import org.bukkit.event.Listener;
  14. import org.bukkit.event.player.PlayerCommandPreprocessEvent;
  15.  
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.UUID;
  19.  
  20. public class CommandEvent implements Listener {
  21.  
  22. public static HashMap<UUID, HashMap<String,Long>> cooldowns = new HashMap<>();
  23. public static HashMap<UUID, HashMap<String,Long>> menuCooldowns = new HashMap<>();
  24. public static HashMap<UUID, HashMap<String,Long>> itemCooldowns = new HashMap<>();
  25.  
  26. private long getCooldown(Player p, String c) {
  27. if (cooldowns.containsKey(p.getUniqueId())) {
  28. if (cooldowns.get(p.getUniqueId()).containsKey(c)) {
  29. return cooldowns.get(p.getUniqueId()).get(c);
  30. }
  31. }
  32. return 0;
  33. }
  34.  
  35. public long getItemCooldown(Player p, String c) {
  36. if (itemCooldowns.containsKey(p.getUniqueId())) {
  37. if (itemCooldowns.get(p.getUniqueId()).containsKey(c)) {
  38. return itemCooldowns.get(p.getUniqueId()).get(c);
  39. }
  40. }
  41. return 0;
  42. }
  43.  
  44. public long getMenuCooldown(Player p, String c) {
  45. if (menuCooldowns.containsKey(p.getUniqueId())) {
  46. if (menuCooldowns.get(p.getUniqueId()).containsKey(c)) {
  47. return menuCooldowns.get(p.getUniqueId()).get(c);
  48. }
  49. }
  50. return 0;
  51. }
  52.  
  53. private void setCooldown(Player p, String s, Long l) {
  54. HashMap<String, Long> ss = new HashMap<>();
  55. if (cooldowns.containsKey(p.getUniqueId())) {
  56. ss = cooldowns.get(p.getUniqueId());
  57. }
  58. ss.put(s,l);
  59. cooldowns.put(p.getUniqueId(),ss);
  60. }
  61. public void setMenuCooldown(Player p, String s, Long l) {
  62. HashMap<String, Long> ss = new HashMap<>();
  63. if (menuCooldowns.containsKey(p.getUniqueId())) {
  64. ss = menuCooldowns.get(p.getUniqueId());
  65. }
  66. ss.put(s,l);
  67. menuCooldowns.put(p.getUniqueId(),ss);
  68. }
  69. public void setItemCooldown(Player p, String s, Long l) {
  70. HashMap<String, Long> ss = new HashMap<>();
  71. if (itemCooldowns.containsKey(p.getUniqueId())) {
  72. ss = itemCooldowns.get(p.getUniqueId());
  73. }
  74. ss.put(s,l);
  75. itemCooldowns.put(p.getUniqueId(),ss);
  76. }
  77.  
  78.  
  79. @EventHandler
  80. public void onProcess(PlayerCommandPreprocessEvent e) {
  81. //for (String s : CommandsFile.get().getCommands()) {
  82. if (CommandsFile.get().getCommands().contains(e.getMessage().replace("/", ""))) {
  83. e.getPlayer().sendMessage("DEBUG: 1");
  84. String s = e.getMessage().replace("/", "");
  85. e.setCancelled(true);
  86. if (CommandsFile.get().getPermission(s).equals("null") || e.getPlayer().hasPermission(CommandsFile.get().getPermission(s))) {
  87. if (CommandsFile.get().getCooldown(s) > 0 && getCooldown(e.getPlayer(), s) > 0) {
  88. // cooldown
  89.  
  90. String timer = "";
  91. String s1 = "0";
  92. String m = "0";
  93. String h = "0";
  94. long tmr = getCooldown(e.getPlayer(), s) / 20;
  95. s1 = String.valueOf(tmr % 60);
  96. m = String.valueOf((int) Math.floor(tmr / 60));
  97. h = String.valueOf((int) Math.floor(tmr / 3600));
  98.  
  99. if (Integer.valueOf(h) > 0) {
  100. timer = h + "h";
  101. }
  102. if (Integer.valueOf(m) > 0) {
  103. if (!timer.isEmpty()) {
  104. timer += " " + m + "m";
  105. } else {
  106. timer = m + "m";
  107. }
  108. }
  109. if (Integer.valueOf(s1) > 0) {
  110. if (!timer.isEmpty()) {
  111. timer += " " + s1 + "s";
  112. } else {
  113. timer = s1 + "s";
  114. }
  115. }
  116.  
  117.  
  118. e.getPlayer().sendMessage(Utils.get().c(CommandsFile.get().getCooldownMessage(s).replace("%time%", timer)));
  119. return;
  120. }
  121.  
  122. List<String> actions = CommandsFile.get().getActions(s);
  123. EventActions ea = new EventActions(e.getPlayer());
  124. String[] pargs = e.getMessage().split(" ");
  125. String[] args = s.split(" ");
  126. if (args.length > 1) {
  127. for (int i = 1; i < args.length; i++) {
  128. if (args[i].equalsIgnoreCase("{player}")) {
  129. if (Bukkit.getPlayer(pargs[i]) == null) {
  130. e.getPlayer().sendMessage(ChatColor.RED + "Player '" + pargs[i] + "' is not online");
  131. return;
  132. }
  133. } else if (args[i].equalsIgnoreCase("{integer}")) {
  134. if (!Utils.get().isInt(pargs[i])) {
  135. e.getPlayer().sendMessage(ChatColor.RED + "'" + pargs[i] + "' is not an integer");
  136. return;
  137. }
  138. } else if (args[i].equalsIgnoreCase("{double}")) {
  139. if (!Utils.get().isDouble(pargs[i])) {
  140. e.getPlayer().sendMessage(ChatColor.RED + "'" + pargs[i] + "' is not a double");
  141. return;
  142. }
  143. }
  144. }
  145. }
  146.  
  147. for (int i = 0; i < actions.size(); i++) {
  148. String s1 = actions.get(i);
  149. ea.addAction(s1);
  150. if (s1.toLowerCase().contains("[everyone]") ||
  151. s1.toLowerCase().contains("[iedereen]")) {
  152. for (Player p : Bukkit.getOnlinePlayers()) {
  153. ea.addPlayerToAction(p, i);
  154. }
  155. } else {
  156. ea.addPlayerToAction(e.getPlayer(), i);
  157. }
  158. }
  159.  
  160. if (args.length > 1) {
  161. for (int i = 1; i < args.length; i++) {
  162. ea.addCustomPlaceholder("{arg" + i + "}", pargs[i]);
  163. }
  164. }
  165.  
  166. ea.perform();
  167.  
  168. if (CommandsFile.get().getCooldown(s) > 0) {
  169. setCooldown(e.getPlayer(), s, CommandsFile.get().getCooldown(s));
  170. }
  171. return;
  172. } else {
  173. e.getPlayer().sendMessage(Utils.get().c(CommandsFile.get().getNoPermissionMessage(s)));
  174. return;
  175. }
  176. }
  177. else {
  178. String[] pargs = e.getMessage().replaceFirst("/", "").split(" ");
  179.  
  180. for (String s : CommandsFile.get().getCommands()) {
  181. String[] args = s.split(" ");
  182. if (args[0].equalsIgnoreCase(pargs[0]) && pargs.length == args.length) {
  183. e.setCancelled(true);
  184. performCommand(s, e.getPlayer(), e.getMessage());
  185. return;
  186. } else if (args[0].equalsIgnoreCase(pargs[0]) && pargs.length != args.length) {
  187. /*for (String a : CommandsFile.get().getCommands()) {
  188. String[] arg = a.split(" ");
  189. if (a.startsWith(args[0]) && Utils.get().hasCommandArgument(a) && !a.equals(s)) {
  190. for (int i=0;i<pargs.length;i++) {
  191. if (pargs[i].equalsIgnoreCase(arg[i])) {
  192. //
  193. }
  194. }
  195. }
  196. }*/
  197. }
  198. }
  199. }
  200.  
  201. for (Menu menu : MenuFile.getMenus(e.getPlayer())) {
  202. if (StringUtils.equalsIgnoreCase(e.getMessage(), "/"+ menu.getOpenCommand())) {
  203. if (menu.getPermission().equals("null") || e.getPlayer().hasPermission(menu.getPermission())) {
  204. e.setCancelled(true);
  205. menu.open(e.getPlayer());
  206. }
  207. else {
  208. e.setCancelled(true);
  209. e.getPlayer().sendMessage(menu.getNoPermission());
  210. }
  211. }
  212. }
  213. }
  214.  
  215.  
  216. public void performCommand(String s, Player p, String message) {
  217. String[] pargs = message.split(" ");
  218. String[] args = s.split(" ");
  219. String[] ppargs = pargs.clone();
  220.  
  221. String a = pargs[0].replace("/", "");
  222.  
  223. if (pargs[0].replaceFirst("/", "").equalsIgnoreCase(args[0]) && Utils.get().hasCommandArgument(s)) {
  224. if (args.length > 1 && pargs.length > 1) {
  225. String f = args[0];
  226. String f1 = pargs[0].replace("/", "");
  227. for (int i = 1; i < args.length; i++) {
  228. if (args.length > pargs.length) {
  229. args[i] = pargs[0];
  230. } else {
  231. if (args[i].equalsIgnoreCase("{string}")) {
  232. ppargs[i] = "{string}";
  233. f1 += " " + ppargs[i];
  234. } else if (args[i].equalsIgnoreCase("{double}")) {
  235. ppargs[i] = "{double}";
  236. f1 += " " + ppargs[i];
  237. } else if (args[i].equalsIgnoreCase("{integer}")) {
  238. ppargs[i] = "{integer}";
  239. f1 += " " + ppargs[i];
  240. } else if (args[i].equalsIgnoreCase("{player}")) {
  241. ppargs[i] = "{player}";
  242. f1 += " " + ppargs[i];
  243. } else if (args[i].equalsIgnoreCase("{boolean}")) {
  244. ppargs[i] = "{boolean}";
  245. f1 += " " + ppargs[i];
  246. } else {
  247. ppargs[i] = pargs[i];
  248. f1 += " " + ppargs[i];
  249. }
  250. args[i] = args[i].replace("{string}", pargs[i]).replace("{double}", pargs[i]).replace("{integer}", pargs[i]).replace("{player}", pargs[i]).replace("{boolean}", pargs[i]);
  251. f += " " + args[i];
  252. }
  253. }
  254. Bukkit.getConsoleSender().sendMessage("s: " + s + ", f: " + f + ", f1: " + f1);
  255. if (CommandsFile.get().getCommands().contains(f1) || f.toLowerCase().startsWith(message.replace("/", "").toLowerCase())
  256. || f1.equalsIgnoreCase(s) //|| message.replace("/", "").toLowerCase().startsWith(f.toLowerCase())
  257. && !s.equalsIgnoreCase(message.replace("/", ""))) {
  258. s = f1;
  259. if (CommandsFile.get().getPermission(s).equals("null") || p.hasPermission(CommandsFile.get().getPermission(s))) {
  260. if (CommandsFile.get().getCooldown(s) > 0 && getCooldown(p, s) > 0) {
  261. // cooldown
  262.  
  263. String timer = "";
  264. String s1 = "0";
  265. String m = "0";
  266. String h = "0";
  267. long tmr = getCooldown(p, s) / 20;
  268. s1 = String.valueOf(tmr % 60);
  269. m = String.valueOf((int) Math.floor(tmr / 60));
  270. h = String.valueOf((int) Math.floor(tmr / 3600));
  271.  
  272. if (Integer.valueOf(h) > 0) {
  273. timer = h + "h";
  274. }
  275. if (Integer.valueOf(m) > 0) {
  276. if (!timer.isEmpty()) {
  277. timer += " " + m + "m";
  278. } else {
  279. timer = m + "m";
  280. }
  281. }
  282. if (Integer.valueOf(s1) > 0) {
  283. if (!timer.isEmpty()) {
  284. timer += " " + s1 + "s";
  285. } else {
  286. timer = s1 + "s";
  287. }
  288. }
  289.  
  290.  
  291. p.sendMessage(Utils.get().c(CommandsFile.get().getCooldownMessage(s).replace("%time%", timer)));
  292. return;
  293. }
  294.  
  295. List<String> actions = CommandsFile.get().getActions(s);
  296. EventActions ea = new EventActions(p);
  297.  
  298. if (args.length > 1) {
  299. if (pargs.length < args.length) {
  300. p.sendMessage(ChatColor.RED + "You must give more arguments");
  301. return;
  302. } else if (pargs.length > args.length) {
  303. p.sendMessage(ChatColor.RED + "You gave too many arguments");
  304. return;
  305. }
  306.  
  307. for (int i = 1; i < args.length; i++) {
  308. if (ppargs[i].equalsIgnoreCase("{player}")) {
  309. if (Bukkit.getPlayer(pargs[i]) == null) {
  310. p.sendMessage(ChatColor.RED + "Player '" + pargs[i] + "' is not online");
  311. return;
  312. }
  313. } else if (ppargs[i].equalsIgnoreCase("{integer}")) {
  314. if (!Utils.get().isInt(pargs[i])) {
  315. p.sendMessage(ChatColor.RED + "'" + pargs[i] + "' is not an integer");
  316. return;
  317. }
  318. } else if (ppargs[i].equalsIgnoreCase("{double}")) {
  319. if (!Utils.get().isDouble(pargs[i])) {
  320. p.sendMessage(ChatColor.RED + "'" + pargs[i] + "' is not a double");
  321. return;
  322. }
  323. } else if (ppargs[i].equalsIgnoreCase("{string}")) {
  324. //
  325. } else if (ppargs[i].equalsIgnoreCase("{boolean}")) {
  326. if (!pargs[i].equalsIgnoreCase("true") && !pargs[i].equalsIgnoreCase("false")) {
  327. p.sendMessage(ChatColor.RED + "'" + pargs[i] + "' is not a valid boolean");
  328. return;
  329. }
  330. }
  331. }
  332. }
  333.  
  334. for (int i = 0; i < actions.size(); i++) {
  335. String s1 = actions.get(i);
  336. ea.addAction(s1);
  337. if (s1.toLowerCase().contains("[everyone]") ||
  338. s1.toLowerCase().contains("[iedereen]")) {
  339. for (Player p1 : Bukkit.getOnlinePlayers()) {
  340. ea.addPlayerToAction(p1, i);
  341. }
  342. } else {
  343. ea.addPlayerToAction(p, i);
  344. }
  345. }
  346.  
  347. if (args.length > 1) {
  348. for (int i = 1; i < args.length; i++) {
  349. ea.addCustomPlaceholder("{arg" + i + "}", pargs[i]);
  350. }
  351. }
  352.  
  353. ea.perform();
  354.  
  355. if (CommandsFile.get().getCooldown(s) > 0) {
  356. setCooldown(p, s, CommandsFile.get().getCooldown(s));
  357. }
  358.  
  359. return;
  360. } else {
  361. p.sendMessage(Utils.get().c(CommandsFile.get().getNoPermissionMessage(s)));
  362. return;
  363. }
  364. }
  365. }
  366. }
  367. }
  368. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement