From 60086d66ad4159411687362695f9ae655903e73c Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 12:12:03 -0500 Subject: [PATCH 01/34] Added Ignore Module --- src/com/redstoner/modules/ignore/Ignore.cmd | 19 +++ src/com/redstoner/modules/ignore/Ignore.java | 147 ++++++++++++++++++ .../modules/ignore/IgnoredByFilter.java | 29 ++++ 3 files changed, 195 insertions(+) create mode 100644 src/com/redstoner/modules/ignore/Ignore.cmd create mode 100644 src/com/redstoner/modules/ignore/Ignore.java create mode 100644 src/com/redstoner/modules/ignore/IgnoredByFilter.java diff --git a/src/com/redstoner/modules/ignore/Ignore.cmd b/src/com/redstoner/modules/ignore/Ignore.cmd new file mode 100644 index 0000000..b046ff2 --- /dev/null +++ b/src/com/redstoner/modules/ignore/Ignore.cmd @@ -0,0 +1,19 @@ +command ignore { + [string:player] { + perm utils.ignore; + run ignore player; + help Ignore a player.; + } + [empty] { + perm utils.ignore; + run list; + help Lists everyone you ignore.; + } +} +command unignore { + [string:player] { + perm utils.ignore; + run unignore player; + help Unignore a player.; + } +} \ No newline at end of file diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java new file mode 100644 index 0000000..4a403b4 --- /dev/null +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -0,0 +1,147 @@ +package com.redstoner.modules.ignore; + +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.json.simple.JSONArray; + +import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.Commands; +import com.redstoner.annotations.Version; +import com.redstoner.misc.BroadcastFilter; +import com.redstoner.misc.CommandHolderType; +import com.redstoner.misc.Utils; +import com.redstoner.modules.Module; +import com.redstoner.modules.datamanager.DataManager; +import net.nemez.chatapi.click.Message; + + +@Commands(CommandHolderType.File) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) +public class Ignore implements Module{ + + + @Command(hook = "unignore") + public boolean unignore(CommandSender sender, String player) + { + return ignore(sender,player,false); + } + + @Command(hook = "ignore") + public boolean ignore(CommandSender sender, String player) + { + return ignore(sender, player, true); + } + + @Command(hook = "list") + public boolean list(CommandSender sender) { + getLogger().message(sender, "§7You are currently ignoring:"); + + JSONArray ignores = (JSONArray) DataManager.getOrDefault(sender, "ignores", new JSONArray()); + + String players; + if ( ignores.isEmpty() ) + players = " §7Nobody \\o/"; + + OfflinePlayer pi = Bukkit.getOfflinePlayer(UUID.fromString((String)ignores.get(0))); + players = " §3" + pi.getName() + "§7"; + + for (int i = 1; i < ignores.size(); i++) { + OfflinePlayer p = Bukkit.getOfflinePlayer(UUID.fromString((String)ignores.get(i))); + players += ", §3" + p.getName() + "§7"; + } + Message m = new Message(sender, null); + m.appendText(players); + m.send(); + return true; + } + + @SuppressWarnings("unchecked") + public boolean ignore(CommandSender sender, String player, boolean allowIgnore) + { + JSONArray isIgnoredBy; + JSONArray ignores = (JSONArray) DataManager.getOrDefault(sender, "ignores", new JSONArray()); + String uuidOfSender = ((Player)sender).getUniqueId().toString(); + String uuidOfPlayer = player; + + if ( sender.getName().equals(player) ) + { + getLogger().message(sender, true, "You can't ignore yourself. :P"); + return true; + } + + if ( Utils.isUUID(player) ) + { + isIgnoredBy = (JSONArray) DataManager.getOrDefault(player, "isIgnoredBy", new JSONArray()); + + if (isIgnoredBy.contains(uuidOfSender)) + { + isIgnoredBy.remove(uuidOfSender); + ignores.remove(uuidOfPlayer); + getLogger().message(sender, "§7You are no longer ignoring §3" + player + "§7."); + } + else if (allowIgnore) + { + isIgnoredBy.add(uuidOfSender); + ignores.add(uuidOfPlayer); + getLogger().message(sender, "§7You are now ignoring §3" + player + "§7."); + } + else + { + getLogger().message(sender, "§7You weren't ignoring §3" + player + "§7."); + return true; + } + + DataManager.setData(player, "isIgnoredBy", isIgnoredBy); + DataManager.setData(sender, "ignores", ignores); + } + else + { + Player toBeIgnored = Bukkit.getPlayer(player); + if (toBeIgnored != null) + { + isIgnoredBy = (JSONArray) DataManager.getOrDefault(toBeIgnored, "isIgnoredBy", new JSONArray()); + uuidOfPlayer = toBeIgnored.getUniqueId().toString(); + } + else + { + getLogger().message(sender, true, "§3" + player + "§7 isn't online. To ignore them, use their UUID."); + return true; + } + + if (isIgnoredBy.contains(uuidOfSender)) + { + isIgnoredBy.remove(uuidOfSender); + ignores.remove(uuidOfPlayer); + getLogger().message(sender, "§7You are no longer ignoring §3" + toBeIgnored.getDisplayName() + "§7."); + } + else if (allowIgnore) + { + isIgnoredBy.add(uuidOfSender); + ignores.add(uuidOfPlayer); + getLogger().message(sender, "§7You are now ignoring §3" + toBeIgnored.getDisplayName() + "§7."); + } + else + { + getLogger().message(sender, "§7You weren't ignoring §3" + toBeIgnored.getDisplayName() + "§7."); + return true; + } + + DataManager.setData(toBeIgnored, "isIgnoredBy", isIgnoredBy); + DataManager.setData(sender, "ignores", ignores); + } + + + return true; + } + + public static BroadcastFilter getIgnoredBy(CommandSender sender) { + JSONArray isIgnoredBy = (JSONArray) DataManager.getOrDefault(sender, "isIgnoredBy", new JSONArray()); + return new IgnoredByFilter(isIgnoredBy); + } + + +} diff --git a/src/com/redstoner/modules/ignore/IgnoredByFilter.java b/src/com/redstoner/modules/ignore/IgnoredByFilter.java new file mode 100644 index 0000000..252f87c --- /dev/null +++ b/src/com/redstoner/modules/ignore/IgnoredByFilter.java @@ -0,0 +1,29 @@ +package com.redstoner.modules.ignore; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.json.simple.JSONArray; + +import com.redstoner.misc.BroadcastFilter; + +public class IgnoredByFilter implements BroadcastFilter{ + + JSONArray isIgnoredBy; + + public IgnoredByFilter(JSONArray isIgnoredBy) { + this.isIgnoredBy = isIgnoredBy; + } + @Override + public boolean sendTo(CommandSender recipient) { + if (recipient instanceof Player) + { + Player player = (Player) recipient; + return !isIgnoredBy.contains( player.getUniqueId().toString() ); + } + else + { + return true; + } + } + +} From 5116a215d26d5095ba5daa0957522a712a1fffa2 Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 12:40:36 -0500 Subject: [PATCH 02/34] Added Ignore BroadcastFilter --- src/com/redstoner/modules/chatgroups/Chatgroups.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/com/redstoner/modules/chatgroups/Chatgroups.java b/src/com/redstoner/modules/chatgroups/Chatgroups.java index 05c39e8..2b61961 100644 --- a/src/com/redstoner/modules/chatgroups/Chatgroups.java +++ b/src/com/redstoner/modules/chatgroups/Chatgroups.java @@ -24,6 +24,7 @@ import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +import com.redstoner.modules.ignore.Ignore; import com.redstoner.modules.socialspy.Socialspy; import net.nemez.chatapi.ChatAPI; @@ -358,13 +359,16 @@ public class Chatgroups implements Module, Listener String name = Utils.getName(sender); String group = getGroup(sender); message = ChatAPI.colorify(null, message); + + BroadcastFilter ignore = ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null; Utils.broadcast("§8[§bCG§8] §9", name + "§8: §6" + message, new BroadcastFilter() { @Override public boolean sendTo(CommandSender recipient) { + String rgroup = getGroup(recipient); - if (rgroup != null) + if ( rgroup != null && (ignore == null? true : ignore.sendTo(recipient)) ) return rgroup.equals(group); else return false; From ac85ba162984d08261a8215c860c0d5787263844 Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 13:00:29 -0500 Subject: [PATCH 03/34] Added Ignore BloadcastFilter to Misc Module --- src/com/redstoner/modules/misc/Misc.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/redstoner/modules/misc/Misc.java b/src/com/redstoner/modules/misc/Misc.java index 3520411..a26d644 100644 --- a/src/com/redstoner/modules/misc/Misc.java +++ b/src/com/redstoner/modules/misc/Misc.java @@ -23,9 +23,11 @@ import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +import com.redstoner.modules.ignore.Ignore; import net.nemez.chatapi.ChatAPI; import net.nemez.chatapi.click.Message; @@ -177,7 +179,7 @@ public class Misc implements Module, Listener else name = "§9" + sender.getName(); text = ChatAPI.colorify(sender, text); - Utils.broadcast(" §7- " + name + " §7⇦ ", text, null); + Utils.broadcast(" §7- " + name + " §7⇦ ", text, ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); return true; } From d5d62d7a6f9e49fd5e915643b2c454b76430c85b Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 13:31:27 -0500 Subject: [PATCH 04/34] Fixed static method and moved IgnoreFilter into Ignore itself. --- src/com/redstoner/modules/ignore/Ignore.java | 36 ++++++++++++++++++- .../modules/ignore/IgnoredByFilter.java | 29 --------------- 2 files changed, 35 insertions(+), 30 deletions(-) delete mode 100644 src/com/redstoner/modules/ignore/IgnoredByFilter.java diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java index 4a403b4..975f207 100644 --- a/src/com/redstoner/modules/ignore/Ignore.java +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -1,5 +1,7 @@ package com.redstoner.modules.ignore; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.UUID; import org.bukkit.Bukkit; @@ -11,6 +13,7 @@ import org.json.simple.JSONArray; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.BroadcastFilter; import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; @@ -139,8 +142,39 @@ public class Ignore implements Module{ } public static BroadcastFilter getIgnoredBy(CommandSender sender) { + try + { + Module mod = ModuleLoader.getModule("Ignore"); + Method m = mod.getClass().getDeclaredMethod("_getIgnoredBy", CommandSender.class, + Object.class); + m.setAccessible(true); + return (BroadcastFilter) m.invoke(mod, sender); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + return null; + } + + @SuppressWarnings("unused") + private BroadcastFilter _getIgnoredBy(CommandSender sender) { JSONArray isIgnoredBy = (JSONArray) DataManager.getOrDefault(sender, "isIgnoredBy", new JSONArray()); - return new IgnoredByFilter(isIgnoredBy); + return new BroadcastFilter() { + @Override + public boolean sendTo(CommandSender recipient) { + + if (recipient instanceof Player) + { + Player player = (Player) recipient; + + if (player.hasPermission("utils.ignore.override")) + return true; + return !isIgnoredBy.contains( player.getUniqueId().toString() ); + } + else + return true; + } + }; } diff --git a/src/com/redstoner/modules/ignore/IgnoredByFilter.java b/src/com/redstoner/modules/ignore/IgnoredByFilter.java deleted file mode 100644 index 252f87c..0000000 --- a/src/com/redstoner/modules/ignore/IgnoredByFilter.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.redstoner.modules.ignore; - -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.json.simple.JSONArray; - -import com.redstoner.misc.BroadcastFilter; - -public class IgnoredByFilter implements BroadcastFilter{ - - JSONArray isIgnoredBy; - - public IgnoredByFilter(JSONArray isIgnoredBy) { - this.isIgnoredBy = isIgnoredBy; - } - @Override - public boolean sendTo(CommandSender recipient) { - if (recipient instanceof Player) - { - Player player = (Player) recipient; - return !isIgnoredBy.contains( player.getUniqueId().toString() ); - } - else - { - return true; - } - } - -} From 0353cb4ff3346fe4700dbe40cdadc18bac86195d Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 14:06:08 -0500 Subject: [PATCH 05/34] Fixed Ignore (I hope) --- src/com/redstoner/modules/ignore/Ignore.cmd | 5 +- src/com/redstoner/modules/ignore/Ignore.java | 108 ++++++------------- 2 files changed, 39 insertions(+), 74 deletions(-) diff --git a/src/com/redstoner/modules/ignore/Ignore.cmd b/src/com/redstoner/modules/ignore/Ignore.cmd index b046ff2..382846b 100644 --- a/src/com/redstoner/modules/ignore/Ignore.cmd +++ b/src/com/redstoner/modules/ignore/Ignore.cmd @@ -2,11 +2,13 @@ command ignore { [string:player] { perm utils.ignore; run ignore player; - help Ignore a player.; + type player; + help Ignores or Unignores a player.; } [empty] { perm utils.ignore; run list; + type player; help Lists everyone you ignore.; } } @@ -14,6 +16,7 @@ command unignore { [string:player] { perm utils.ignore; run unignore player; + type player; help Unignore a player.; } } \ No newline at end of file diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java index 975f207..c2826ec 100644 --- a/src/com/redstoner/modules/ignore/Ignore.java +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -62,83 +62,38 @@ public class Ignore implements Module{ return true; } - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "deprecation" }) public boolean ignore(CommandSender sender, String player, boolean allowIgnore) { - JSONArray isIgnoredBy; JSONArray ignores = (JSONArray) DataManager.getOrDefault(sender, "ignores", new JSONArray()); - String uuidOfSender = ((Player)sender).getUniqueId().toString(); - String uuidOfPlayer = player; - if ( sender.getName().equals(player) ) - { - getLogger().message(sender, true, "You can't ignore yourself. :P"); - return true; - } - - if ( Utils.isUUID(player) ) - { - isIgnoredBy = (JSONArray) DataManager.getOrDefault(player, "isIgnoredBy", new JSONArray()); - - if (isIgnoredBy.contains(uuidOfSender)) - { - isIgnoredBy.remove(uuidOfSender); - ignores.remove(uuidOfPlayer); - getLogger().message(sender, "§7You are no longer ignoring §3" + player + "§7."); - } - else if (allowIgnore) - { - isIgnoredBy.add(uuidOfSender); - ignores.add(uuidOfPlayer); - getLogger().message(sender, "§7You are now ignoring §3" + player + "§7."); - } - else - { - getLogger().message(sender, "§7You weren't ignoring §3" + player + "§7."); - return true; - } - - DataManager.setData(player, "isIgnoredBy", isIgnoredBy); - DataManager.setData(sender, "ignores", ignores); - } - else - { - Player toBeIgnored = Bukkit.getPlayer(player); - if (toBeIgnored != null) - { - isIgnoredBy = (JSONArray) DataManager.getOrDefault(toBeIgnored, "isIgnoredBy", new JSONArray()); - uuidOfPlayer = toBeIgnored.getUniqueId().toString(); - } - else - { - getLogger().message(sender, true, "§3" + player + "§7 isn't online. To ignore them, use their UUID."); - return true; - } - - if (isIgnoredBy.contains(uuidOfSender)) - { - isIgnoredBy.remove(uuidOfSender); - ignores.remove(uuidOfPlayer); - getLogger().message(sender, "§7You are no longer ignoring §3" + toBeIgnored.getDisplayName() + "§7."); - } - else if (allowIgnore) - { - isIgnoredBy.add(uuidOfSender); - ignores.add(uuidOfPlayer); - getLogger().message(sender, "§7You are now ignoring §3" + toBeIgnored.getDisplayName() + "§7."); - } - else - { - getLogger().message(sender, "§7You weren't ignoring §3" + toBeIgnored.getDisplayName() + "§7."); - return true; - } - - DataManager.setData(toBeIgnored, "isIgnoredBy", isIgnoredBy); - DataManager.setData(sender, "ignores", ignores); - } + OfflinePlayer p = Utils.isUUID(player)? + Bukkit.getOfflinePlayer(UUID.fromString(player)) : + Bukkit.getOfflinePlayer(player); + + String pName = ((Player) p).getDisplayName(); + String pUUID = p.getUniqueId().toString(); + String sUUID = ((Player) sender).getUniqueId().toString(); + + if (pUUID.equals(sUUID)) { + getLogger().message(sender, true, "§7You can't ignore yourself :P"); + return true; + } + + if (ignores.contains(pUUID)) { + ignores.remove(pUUID); + getLogger().message(sender, "§7You are no longer ignoring §3" + pName + "§7."); + } + else if (!allowIgnore){ + getLogger().message(sender, "§7You were never ignoring §3" + pName + "§7."); + } + else { + ignores.add(pUUID); + getLogger().message(sender, "§7You are now ignoring §3" + pName + "§7."); + } + return true; - return true; } public static BroadcastFilter getIgnoredBy(CommandSender sender) { @@ -158,10 +113,15 @@ public class Ignore implements Module{ @SuppressWarnings("unused") private BroadcastFilter _getIgnoredBy(CommandSender sender) { - JSONArray isIgnoredBy = (JSONArray) DataManager.getOrDefault(sender, "isIgnoredBy", new JSONArray()); return new BroadcastFilter() { + + private final String sUUID = sender instanceof Player? + ((Player) sender).getUniqueId().toString() : "CONSOLE"; + @Override public boolean sendTo(CommandSender recipient) { + if (sUUID.equals("CONSOLE")) + return true; if (recipient instanceof Player) { @@ -169,7 +129,9 @@ public class Ignore implements Module{ if (player.hasPermission("utils.ignore.override")) return true; - return !isIgnoredBy.contains( player.getUniqueId().toString() ); + + JSONArray ignores = (JSONArray) DataManager.getOrDefault(player, "ignores", new JSONArray()); + return !ignores.contains(sUUID); } else return true; From 28d9c6b421a4006c96bf1d02df01e4f77c8f8a6f Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 14:10:38 -0500 Subject: [PATCH 06/34] Added Ignore Module Support. Added /chat (/speak) and /shrug commands. --- src/com/redstoner/modules/misc/Misc.cmd | 78 ++++++++++++++++++ src/com/redstoner/modules/misc/Misc.java | 100 ++++++----------------- 2 files changed, 103 insertions(+), 75 deletions(-) create mode 100644 src/com/redstoner/modules/misc/Misc.cmd diff --git a/src/com/redstoner/modules/misc/Misc.cmd b/src/com/redstoner/modules/misc/Misc.cmd new file mode 100644 index 0000000..d0e67fe --- /dev/null +++ b/src/com/redstoner/modules/misc/Misc.cmd @@ -0,0 +1,78 @@ +command tempadd { + perm pex; + [string:user] [string:group] { + help Adds a user to a group for 1w.; + run tempadddef user group; + } + [string:user] [string:group] [string:duration] { + help Adds a user to a group for a specified duration.; + run tempadd user group duration; + } +} +command echo { + [string:text...] { + help Echoes back to you.; + run echo text; + } +} +command ping { + [empty] { + help Pongs :D; + run ping; + } + [string:password] { + help Pongs :D; + run ping2 password; + } +} +command me { + perm utils.me; + [string:text...] { + help /me's in chat.; + run me text; + } +} +command sudo { + perm utils.sudo; + [string:name] [string:command...] { + help Sudo'es another user (or console); + run sudo name command; + } +} +command hasperm { + [flag:-f] [string:name] [string:node] { + perm utils.hasperm; + run hasperm -f name node; + help Checks if a player has a given permission node or not. Returns \"true/false\" in chat. When -f is set, it returns it unformatted.; + } +} +command say { + [string:message...] { + perm utils.say; + run say message; + help A replacement for the default say command to make the format be more consistant.; + } +} +command sayn { + [string:name] [string:message...] { + perm utils.sayn; + type console; + run sayn name message; + help A replacement for the default say command to make the format be more consistant.; + } +} +command shrug { + [string:message...] { + perm utils.shrug; + run shrug message; + help Appends the shrug emoticon to the end of your message.; + } +} +command chat { + alias speak; + [string:message...] { + perm utils.speak; + run chat message; + help A way to speak in normal chat with normal formatting if you have ACT or CGT on.; + } +} \ No newline at end of file diff --git a/src/com/redstoner/modules/misc/Misc.java b/src/com/redstoner/modules/misc/Misc.java index a26d644..060f413 100644 --- a/src/com/redstoner/modules/misc/Misc.java +++ b/src/com/redstoner/modules/misc/Misc.java @@ -32,7 +32,7 @@ import com.redstoner.modules.ignore.Ignore; import net.nemez.chatapi.ChatAPI; import net.nemez.chatapi.click.Message; -@Commands(CommandHolderType.String) +@Commands(CommandHolderType.File) @AutoRegisterListener @Version(major = 4, minor = 0, revision = 2, compatible = 4) public class Misc implements Module, Listener @@ -179,7 +179,17 @@ public class Misc implements Module, Listener else name = "§9" + sender.getName(); text = ChatAPI.colorify(sender, text); - Utils.broadcast(" §7- " + name + " §7⇦ ", text, ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + Utils.broadcast(" §7- " + name + " §7⇦ ", text, + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + return true; + } + + @Command(hook = "chat") + public boolean chat(CommandSender sender, String message) + { + String name = Utils.getName(sender); + Utils.broadcast(" " + name, " §7→§r " + ChatAPI.colorify(sender, message), + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); return true; } @@ -188,7 +198,8 @@ public class Misc implements Module, Listener { String name = Utils.getName(sender); Utils.broadcast(" §7[§9" + name.replaceAll("[^0-9a-zA-Z§&\\[\\]]", "") + "§7]: ", - "§r" + ChatAPI.colorify(null, message), null); + "§r" + ChatAPI.colorify(null, message), + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); return true; } @@ -196,7 +207,16 @@ public class Misc implements Module, Listener public boolean say(CommandSender sender, String name, String message) { Utils.broadcast(" §7[§9" + ChatAPI.colorify(sender, name) + "§7]: ", "§r" + ChatAPI.colorify(null, message), - null); + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + return true; + } + + @Command(hook = "shrug") + public boolean shrug(CommandSender sender, String message) + { + String name = Utils.getName(sender); + Utils.broadcast(" " + name, " §7→§r " + ChatAPI.colorify(sender, message) + " ¯\\_(ツ)_/¯", + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); return true; } @@ -291,74 +311,4 @@ public class Misc implements Module, Listener Bukkit.getPluginManager().callEvent(event); return event.isCancelled(); } - - // @noformat - @Override - public String getCommandString() - { - return "command tempadd {\n" + - " perm pex;\n" + - " [string:user] [string:group] {\n" + - " help Adds a user to a group for 1w.;\n" + - " run tempadddef user group;\n" + - " }\n" + - " [string:user] [string:group] [string:duration] {\n" + - " help Adds a user to a group for a specified duration.;\n" + - " run tempadd user group duration;\n" + - " }\n" + - "}\n" + - "command echo {\n" + - " [string:text...] {\n" + - " help Echoes back to you.;\n" + - " run echo text;\n" + - " }\n" + - "}\n" + - "command ping {\n" + - " [empty] {\n" + - " help Pongs :D;\n" + - " run ping;\n" + - " }\n" + - " [string:password] {\n" + - " help Pongs :D;\n" + - " run ping2 password;\n" + - " }\n" + - "}\n" + - "command me {\n" + - " perm utils.me;\n" + - " [string:text...] {\n" + - " help /me's in chat.;\n" + - " run me text;\n" + - " }\n" + - "}\n" + - "command sudo {\n" + - " perm utils.sudo;\n" + - " [string:name] [string:command...] {\n" + - " help Sudo'es another user (or console);\n" + - " run sudo name command;\n" + - " }\n" + - "}\n" + - "command hasperm {\n" + - " [flag:-f] [string:name] [string:node] {\n" + - " perm utils.hasperm;\n" + - " run hasperm -f name node;\n" + - " help Checks if a player has a given permission node or not. Returns \"true/false\" in chat. When -f is set, it returns it unformatted.;\n" + - " }\n" + - "}" + - "command say {\n" + - " [string:message...] {\n" + - " perm utils.say;\n" + - " run say message;\n" + - " help A replacement for the default say command to make the format be more consistant.;\n" + - " }\n" + - "}" + - "command sayn {\n" + - " [string:name] [string:message...] {\n" + - " perm utils.sayn;\n" + - " type console;\n" + - " run sayn name message;\n" + - " help A replacement for the default say command to make the format be more consistant.;\n" + - " }\n" + - "}"; - } - // @format -} +} \ No newline at end of file From ccb9c7b8237176b9c3155b490e3d8441f30f77f2 Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 14:24:32 -0500 Subject: [PATCH 07/34] Fixed Bugs --- src/com/redstoner/modules/ignore/Ignore.java | 22 +++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java index c2826ec..9c52e4f 100644 --- a/src/com/redstoner/modules/ignore/Ignore.java +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -46,11 +46,13 @@ public class Ignore implements Module{ JSONArray ignores = (JSONArray) DataManager.getOrDefault(sender, "ignores", new JSONArray()); String players; - if ( ignores.isEmpty() ) + if ( ignores.isEmpty() ) { players = " §7Nobody \\o/"; - - OfflinePlayer pi = Bukkit.getOfflinePlayer(UUID.fromString((String)ignores.get(0))); - players = " §3" + pi.getName() + "§7"; + } + else { + OfflinePlayer pi = Bukkit.getOfflinePlayer(UUID.fromString((String)ignores.get(0))); + players = " §3" + pi.getName() + "§7"; + } for (int i = 1; i < ignores.size(); i++) { OfflinePlayer p = Bukkit.getOfflinePlayer(UUID.fromString((String)ignores.get(i))); @@ -67,12 +69,16 @@ public class Ignore implements Module{ { JSONArray ignores = (JSONArray) DataManager.getOrDefault(sender, "ignores", new JSONArray()); - OfflinePlayer p = Utils.isUUID(player)? + Player p = Utils.isUUID(player)? + Bukkit.getPlayer(UUID.fromString(player)) : + Bukkit.getPlayer(player); + + OfflinePlayer op = Utils.isUUID(player)? Bukkit.getOfflinePlayer(UUID.fromString(player)) : Bukkit.getOfflinePlayer(player); - String pName = ((Player) p).getDisplayName(); - String pUUID = p.getUniqueId().toString(); + String pName = p != null? p.getDisplayName() : op.getName(); + String pUUID = p != null? p.getUniqueId().toString() : op.getUniqueId().toString(); String sUUID = ((Player) sender).getUniqueId().toString(); if (pUUID.equals(sUUID)) { @@ -85,7 +91,7 @@ public class Ignore implements Module{ getLogger().message(sender, "§7You are no longer ignoring §3" + pName + "§7."); } else if (!allowIgnore){ - getLogger().message(sender, "§7You were never ignoring §3" + pName + "§7."); + getLogger().message(sender, "§7You weren't ignoring §3" + pName + "§7."); } else { ignores.add(pUUID); From 657fb4c85739fdc7fa53552db89eaedc01ca55ca Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 17:11:39 -0500 Subject: [PATCH 08/34] Made Commands Async. --- src/com/redstoner/modules/ignore/Ignore.java | 21 +++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java index 9c52e4f..54cf350 100644 --- a/src/com/redstoner/modules/ignore/Ignore.java +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -11,6 +11,7 @@ import org.bukkit.entity.Player; import org.json.simple.JSONArray; import com.nemez.cmdmgr.Command; +import com.nemez.cmdmgr.Command.AsyncType; import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; import com.redstoner.coremods.moduleLoader.ModuleLoader; @@ -27,37 +28,39 @@ import net.nemez.chatapi.click.Message; public class Ignore implements Module{ - @Command(hook = "unignore") + @Command(hook = "unignore", async = AsyncType.ALWAYS) public boolean unignore(CommandSender sender, String player) { return ignore(sender,player,false); } - @Command(hook = "ignore") + @Command(hook = "ignore", async = AsyncType.ALWAYS) public boolean ignore(CommandSender sender, String player) { return ignore(sender, player, true); } - @Command(hook = "list") + @Command(hook = "list", async = AsyncType.ALWAYS) public boolean list(CommandSender sender) { getLogger().message(sender, "§7You are currently ignoring:"); JSONArray ignores = (JSONArray) DataManager.getOrDefault(sender, "ignores", new JSONArray()); - String players; + if ( ignores.isEmpty() ) { - players = " §7Nobody \\o/"; - } - else { - OfflinePlayer pi = Bukkit.getOfflinePlayer(UUID.fromString((String)ignores.get(0))); - players = " §3" + pi.getName() + "§7"; + new Message(sender, null).appendText(" §7Nobody \\o/").send(); + return true; } + String players; + OfflinePlayer pi = Bukkit.getOfflinePlayer(UUID.fromString((String)ignores.get(0))); + players = " §3" + pi.getName() + "§7"; + for (int i = 1; i < ignores.size(); i++) { OfflinePlayer p = Bukkit.getOfflinePlayer(UUID.fromString((String)ignores.get(i))); players += ", §3" + p.getName() + "§7"; } + Message m = new Message(sender, null); m.appendText(players); m.send(); From 9134cee87f8738a6be854b9d3ea08ddba4fe6c70 Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 20:27:57 -0500 Subject: [PATCH 09/34] Fixed static method that reflects the non-static one. --- src/com/redstoner/modules/ignore/Ignore.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java index 54cf350..a9aa142 100644 --- a/src/com/redstoner/modules/ignore/Ignore.java +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -100,6 +100,7 @@ public class Ignore implements Module{ ignores.add(pUUID); getLogger().message(sender, "§7You are now ignoring §3" + pName + "§7."); } + DataManager.setData(sender, "ignores", ignores); return true; @@ -109,8 +110,7 @@ public class Ignore implements Module{ try { Module mod = ModuleLoader.getModule("Ignore"); - Method m = mod.getClass().getDeclaredMethod("_getIgnoredBy", CommandSender.class, - Object.class); + Method m = mod.getClass().getDeclaredMethod("_getIgnoredBy", CommandSender.class); m.setAccessible(true); return (BroadcastFilter) m.invoke(mod, sender); } @@ -139,11 +139,11 @@ public class Ignore implements Module{ if (player.hasPermission("utils.ignore.override")) return true; - JSONArray ignores = (JSONArray) DataManager.getOrDefault(player, "ignores", new JSONArray()); + JSONArray ignores = (JSONArray) DataManager.getOrDefault(recipient, "ignores", new JSONArray()); return !ignores.contains(sUUID); } else - return true; + return true;agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address= } }; } From 26e71ac45c863990856452130393f15e2477038e Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 20:29:38 -0500 Subject: [PATCH 10/34] Fixed weirdness. --- src/com/redstoner/modules/ignore/Ignore.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java index a9aa142..b5df619 100644 --- a/src/com/redstoner/modules/ignore/Ignore.java +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -143,7 +143,7 @@ public class Ignore implements Module{ return !ignores.contains(sUUID); } else - return true;agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address= + return true; } }; } From 166b69f104c9510bcb49831dd46a506b70a63e39 Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 20:42:41 -0500 Subject: [PATCH 11/34] Added Ignore to ChatGroups --- src/com/redstoner/modules/chatgroups/Chatgroups.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/com/redstoner/modules/chatgroups/Chatgroups.java b/src/com/redstoner/modules/chatgroups/Chatgroups.java index 2b61961..0f61451 100644 --- a/src/com/redstoner/modules/chatgroups/Chatgroups.java +++ b/src/com/redstoner/modules/chatgroups/Chatgroups.java @@ -368,7 +368,8 @@ public class Chatgroups implements Module, Listener { String rgroup = getGroup(recipient); - if ( rgroup != null && (ignore == null? true : ignore.sendTo(recipient)) ) + if ( rgroup != null && (ignore == null? true : ignore.sendTo(recipient)) + && (ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender).sendTo(recipient)? true : false : true)) return rgroup.equals(group); else return false; @@ -404,7 +405,8 @@ public class Chatgroups implements Module, Listener public boolean sendTo(CommandSender recipient) { String rgroup = getGroup(recipient); - if (rgroup != null) + if (rgroup != null + && (ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender).sendTo(recipient)? true : false : true)) return rgroup.equals(group); else return false; From b7bfd07eaef62a0631b99fb12c3314eb7112c56b Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 20:44:05 -0500 Subject: [PATCH 12/34] Made Chatgroup Compile again. --- src/com/redstoner/modules/chatgroups/Chatgroups.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/com/redstoner/modules/chatgroups/Chatgroups.java b/src/com/redstoner/modules/chatgroups/Chatgroups.java index 0f61451..fcded40 100644 --- a/src/com/redstoner/modules/chatgroups/Chatgroups.java +++ b/src/com/redstoner/modules/chatgroups/Chatgroups.java @@ -405,8 +405,7 @@ public class Chatgroups implements Module, Listener public boolean sendTo(CommandSender recipient) { String rgroup = getGroup(recipient); - if (rgroup != null - && (ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender).sendTo(recipient)? true : false : true)) + if (rgroup != null) return rgroup.equals(group); else return false; From 5b359aea4aff5362f8a1c57b59b5c1fdb646b018 Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 20:45:02 -0500 Subject: [PATCH 13/34] Added Ignore support to AFK --- src/com/redstoner/modules/afk/AFK.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/redstoner/modules/afk/AFK.java b/src/com/redstoner/modules/afk/AFK.java index 393c487..c2d330e 100644 --- a/src/com/redstoner/modules/afk/AFK.java +++ b/src/com/redstoner/modules/afk/AFK.java @@ -21,12 +21,14 @@ import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.BroadcastFilter; import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Main; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; import com.redstoner.modules.datamanager.DataManager; +import com.redstoner.modules.ignore.Ignore; @Commands(CommandHolderType.File) @AutoRegisterListener @@ -199,7 +201,8 @@ class CustomListener implements Listener, EventExecutor public void unafk(CommandSender sender) { DataManager.setState(sender, "afk", false); - Utils.broadcast("§7 * ", Utils.getName(sender) + "§7 is no longer AFK", null); + Utils.broadcast("§7 * ", Utils.getName(sender) + "§7 is no longer AFK", + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); } public boolean isafk(CommandSender sender) From c4a02b72e0f969951b3c73cd306f57d31798b942 Mon Sep 17 00:00:00 2001 From: minenash Date: Mon, 15 Jan 2018 20:51:11 -0500 Subject: [PATCH 14/34] Added Ignore support to Message --- src/com/redstoner/modules/message/Message.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/com/redstoner/modules/message/Message.java b/src/com/redstoner/modules/message/Message.java index 349c16a..2dae66f 100644 --- a/src/com/redstoner/modules/message/Message.java +++ b/src/com/redstoner/modules/message/Message.java @@ -16,6 +16,7 @@ import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; import com.redstoner.modules.datamanager.DataManager; +import com.redstoner.modules.ignore.Ignore; import com.redstoner.modules.socialspy.Socialspy; @Commands(CommandHolderType.File) @@ -37,6 +38,10 @@ public class Message implements Module getLogger().message(sender, true, "That player couldn't be found!"); return true; } + else if (ModuleLoader.exists("Ignore")? !Ignore.getIgnoredBy(sender).sendTo(p) : true) { + getLogger().message(sender, true, Utils.getName(p) + " has ignored you. Your message was not sent."); + return true; + } else { if (ModuleLoader.getModule("Socialspy") != null) @@ -77,6 +82,10 @@ public class Message implements Module getLogger().message(sender, true, "You don't have anyone to reply to!"); return true; } + else if (ModuleLoader.exists("Ignore")? !Ignore.getIgnoredBy(sender).sendTo(target) : true) { + getLogger().message(sender, true, Utils.getName(target) + " has ignored you. Your message was not sent."); + return true; + } else { if (ModuleLoader.getModule("Socialspy") != null) From 851191b6905c1a19dc3406e54b8cf9db5609f83d Mon Sep 17 00:00:00 2001 From: Minenash Date: Tue, 16 Jan 2018 12:58:45 -0500 Subject: [PATCH 15/34] Added Normal Chat Ignoring Not Tested --- src/com/redstoner/modules/ignore/Ignore.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java index b5df619..809a685 100644 --- a/src/com/redstoner/modules/ignore/Ignore.java +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -27,6 +27,14 @@ import net.nemez.chatapi.click.Message; @Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Ignore implements Module{ + @EventHandler(Priority=HIGHEST) + public void onPlayerChat(AsyncPlayerChatEvent) + { + Player player = event.getPlayer(); + event.setCancelled(true); + Utils.broadcast(" " + player.getDisplayName(), " §7→§r " + ChatAPI.colorify(sender, message), + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(player) : null); + } @Command(hook = "unignore", async = AsyncType.ALWAYS) public boolean unignore(CommandSender sender, String player) From bef6fa9308e9c21baa7bae7056da1a790cd25e30 Mon Sep 17 00:00:00 2001 From: Minenash Date: Tue, 16 Jan 2018 13:03:08 -0500 Subject: [PATCH 16/34] Added permission chat to Normal Chat Again, Not Tested --- src/com/redstoner/modules/ignore/Ignore.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java index 809a685..31dcaf7 100644 --- a/src/com/redstoner/modules/ignore/Ignore.java +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -32,8 +32,11 @@ public class Ignore implements Module{ { Player player = event.getPlayer(); event.setCancelled(true); - Utils.broadcast(" " + player.getDisplayName(), " §7→§r " + ChatAPI.colorify(sender, message), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(player) : null); + if (player.hasPermission("utils.chat")) + Utils.broadcast(" " + player.getDisplayName(), " §7→§r " + ChatAPI.colorify(sender, message), + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(player) : null); + else + new Message(sender, "§8[§cServer§8]").appendText("You don't have permission to chat.").send(); } @Command(hook = "unignore", async = AsyncType.ALWAYS) From 7064f8d3f4d26722297c2b187f9fd5056c2b03e1 Mon Sep 17 00:00:00 2001 From: minenash Date: Tue, 16 Jan 2018 17:58:35 -0500 Subject: [PATCH 17/34] Fixed Normal Chat --- .../modules/datamanager/DataManager.java | 2 +- src/com/redstoner/modules/ignore/Ignore.java | 21 +++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/com/redstoner/modules/datamanager/DataManager.java b/src/com/redstoner/modules/datamanager/DataManager.java index 92485d2..fa80a99 100644 --- a/src/com/redstoner/modules/datamanager/DataManager.java +++ b/src/com/redstoner/modules/datamanager/DataManager.java @@ -172,7 +172,7 @@ public final class DataManager implements CoreModule, Listener protected Object getOrDefault_(String id, String module, String key, Object fallback) { - Object o = getData_(id, module, key); + Object o = getData_(id, "Ignore", key); return o == null ? fallback : o; } diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java index 31dcaf7..379a34d 100644 --- a/src/com/redstoner/modules/ignore/Ignore.java +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -8,10 +8,15 @@ import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; import org.json.simple.JSONArray; import com.nemez.cmdmgr.Command; import com.nemez.cmdmgr.Command.AsyncType; +import com.redstoner.annotations.AutoRegisterListener; import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; import com.redstoner.coremods.moduleLoader.ModuleLoader; @@ -20,23 +25,27 @@ import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; import com.redstoner.modules.datamanager.DataManager; + +import net.nemez.chatapi.ChatAPI; import net.nemez.chatapi.click.Message; @Commands(CommandHolderType.File) +@AutoRegisterListener @Version(major = 4, minor = 0, revision = 0, compatible = 4) -public class Ignore implements Module{ +public class Ignore implements Module, Listener{ - @EventHandler(Priority=HIGHEST) - public void onPlayerChat(AsyncPlayerChatEvent) + @EventHandler(priority = EventPriority.HIGHEST) + public void onPlayerChat(AsyncPlayerChatEvent event) { Player player = event.getPlayer(); + String msg = event.getMessage(); event.setCancelled(true); + if (player.hasPermission("utils.chat")) - Utils.broadcast(" " + player.getDisplayName(), " §7→§r " + ChatAPI.colorify(sender, message), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(player) : null); + Utils.broadcast(" " + player.getDisplayName(), " §7→§r " + ChatAPI.colorify(player, msg), getIgnoredBy(player)); else - new Message(sender, "§8[§cServer§8]").appendText("You don't have permission to chat.").send(); + player.sendMessage("§8[§cServer§8] You don't have permission to chat."); } @Command(hook = "unignore", async = AsyncType.ALWAYS) From a3a97184f89bcfdc6617265daf1d5f390d452d4c Mon Sep 17 00:00:00 2001 From: Minenash Date: Tue, 16 Jan 2018 18:08:02 -0500 Subject: [PATCH 18/34] Fixed accidental push of DataManager --- src/com/redstoner/modules/datamanager/DataManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/redstoner/modules/datamanager/DataManager.java b/src/com/redstoner/modules/datamanager/DataManager.java index fa80a99..92485d2 100644 --- a/src/com/redstoner/modules/datamanager/DataManager.java +++ b/src/com/redstoner/modules/datamanager/DataManager.java @@ -172,7 +172,7 @@ public final class DataManager implements CoreModule, Listener protected Object getOrDefault_(String id, String module, String key, Object fallback) { - Object o = getData_(id, "Ignore", key); + Object o = getData_(id, module, key); return o == null ? fallback : o; } From c79db9950a0cbccaba687fafad0fb9026450e159 Mon Sep 17 00:00:00 2001 From: minenash Date: Wed, 17 Jan 2018 13:10:06 -0500 Subject: [PATCH 19/34] Moved /me, /chat(/speak), /shrug, /say, /sayn, and the Normal Chat Event into it's own module called Chat. Moved the Illumination Module into the Misc Module. --- src/com/redstoner/modules/chat/Chat.cmd | 37 ++++++++ src/com/redstoner/modules/chat/Chat.java | 90 +++++++++++++++++++ src/com/redstoner/modules/ignore/Ignore.java | 20 +---- .../modules/illumination/Illumination.java | 50 ----------- src/com/redstoner/modules/misc/Misc.cmd | 44 ++------- src/com/redstoner/modules/misc/Misc.java | 73 +++++---------- 6 files changed, 156 insertions(+), 158 deletions(-) create mode 100644 src/com/redstoner/modules/chat/Chat.cmd create mode 100644 src/com/redstoner/modules/chat/Chat.java delete mode 100644 src/com/redstoner/modules/illumination/Illumination.java diff --git a/src/com/redstoner/modules/chat/Chat.cmd b/src/com/redstoner/modules/chat/Chat.cmd new file mode 100644 index 0000000..46cc5dc --- /dev/null +++ b/src/com/redstoner/modules/chat/Chat.cmd @@ -0,0 +1,37 @@ +command me { + perm utils.me; + [string:text...] { + help /me's in chat.; + run me text; + } +} +command chat { + alias speak; + [string:message...] { + perm utils.chat; + run chat message; + help A way to speak in normal chat with normal formatting if you have ACT or CGT on.; + } +} +command shrug { + [string:message...] { + perm utils.shrug; + run shrug message; + help Appends the shrug emoticon to the end of your message.; + } +} +command say { + [string:message...] { + perm utils.say; + run say message; + help A replacement for the default say command to make the format be more consistant.; + } +} +command sayn { + [string:name] [string:message...] { + perm utils.sayn; + type console; + run sayn name message; + help A replacement for the default say command to make the format be more consistant.; + } +} \ No newline at end of file diff --git a/src/com/redstoner/modules/chat/Chat.java b/src/com/redstoner/modules/chat/Chat.java new file mode 100644 index 0000000..f524b72 --- /dev/null +++ b/src/com/redstoner/modules/chat/Chat.java @@ -0,0 +1,90 @@ +package com.redstoner.modules.chat; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; + +import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; +import com.redstoner.annotations.Version; +import com.redstoner.coremods.moduleLoader.ModuleLoader; +import com.redstoner.misc.CommandHolderType; +import com.redstoner.misc.Utils; +import com.redstoner.modules.Module; +import com.redstoner.modules.ignore.Ignore; + +import net.nemez.chatapi.ChatAPI; + +@Commands(CommandHolderType.File) +@AutoRegisterListener +@Version(major = 4, minor = 0, revision = 0, compatible = 4) +public class Chat implements Module, Listener{ + + @EventHandler(priority = EventPriority.HIGHEST) + public void onPlayerChat(AsyncPlayerChatEvent event) + { + Player player = event.getPlayer(); + String msg = event.getMessage(); + event.setCancelled(true); + + if (player.hasPermission("utils.chat")) + Utils.broadcast(" " + Utils.getName(player), " §7→§r " + ChatAPI.colorify(player, msg), + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(player) : null); + else + player.sendMessage("§8[§cServer§8] You don't have permission to chat."); + } + + @Command(hook = "me") + public boolean me(CommandSender sender, String text) + { + String name; + if (sender instanceof Player) + name = ((Player) sender).getDisplayName(); + else + name = "§9" + sender.getName(); + text = ChatAPI.colorify(sender, text); + Utils.broadcast(" §7- " + name + " §7⇦ ", text, + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + return true; + } + + @Command(hook = "chat") + public boolean chat(CommandSender sender, String message) + { + String name = Utils.getName(sender); + Utils.broadcast(" " + name, " §7→§r " + ChatAPI.colorify(sender, message), + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + return true; + } + + @Command(hook = "say") + public boolean say(CommandSender sender, String message) + { + String name = Utils.getName(sender); + Utils.broadcast(" §7[§9" + name.replaceAll("[^0-9a-zA-Z§&\\[\\]]", "") + "§7]: ", + "§r" + ChatAPI.colorify(null, message), + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + return true; + } + + @Command(hook = "sayn") + public boolean say(CommandSender sender, String name, String message) + { + Utils.broadcast(" §7[§9" + ChatAPI.colorify(sender, name) + "§7]: ", "§r" + ChatAPI.colorify(null, message), + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + return true; + } + + @Command(hook = "shrug") + public boolean shrug(CommandSender sender, String message) + { + String name = Utils.getName(sender); + Utils.broadcast(" " + name, " §7→§r " + ChatAPI.colorify(sender, message) + " ¯\\_(ツ)_/¯", + ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + return true; + } +} diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java index 379a34d..06290d0 100644 --- a/src/com/redstoner/modules/ignore/Ignore.java +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -8,10 +8,6 @@ import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.player.AsyncPlayerChatEvent; import org.json.simple.JSONArray; import com.nemez.cmdmgr.Command; @@ -26,27 +22,13 @@ import com.redstoner.misc.Utils; import com.redstoner.modules.Module; import com.redstoner.modules.datamanager.DataManager; -import net.nemez.chatapi.ChatAPI; import net.nemez.chatapi.click.Message; @Commands(CommandHolderType.File) @AutoRegisterListener @Version(major = 4, minor = 0, revision = 0, compatible = 4) -public class Ignore implements Module, Listener{ - - @EventHandler(priority = EventPriority.HIGHEST) - public void onPlayerChat(AsyncPlayerChatEvent event) - { - Player player = event.getPlayer(); - String msg = event.getMessage(); - event.setCancelled(true); - - if (player.hasPermission("utils.chat")) - Utils.broadcast(" " + player.getDisplayName(), " §7→§r " + ChatAPI.colorify(player, msg), getIgnoredBy(player)); - else - player.sendMessage("§8[§cServer§8] You don't have permission to chat."); - } +public class Ignore implements Module { @Command(hook = "unignore", async = AsyncType.ALWAYS) public boolean unignore(CommandSender sender, String player) diff --git a/src/com/redstoner/modules/illumination/Illumination.java b/src/com/redstoner/modules/illumination/Illumination.java deleted file mode 100644 index a6f1337..0000000 --- a/src/com/redstoner/modules/illumination/Illumination.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.redstoner.modules.illumination; - -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; - -import com.nemez.cmdmgr.Command; -import com.redstoner.annotations.Commands; -import com.redstoner.annotations.Version; -import com.redstoner.misc.CommandHolderType; -import com.redstoner.modules.Module; - -@Commands(CommandHolderType.String) -@Version(major = 4, minor = 0, revision = 0, compatible = 4) -public class Illumination implements Module -{ - PotionEffect effect = new PotionEffect(PotionEffectType.NIGHT_VISION, Integer.MAX_VALUE, 0, false, false); - - @Command(hook = "illuminate") - public void illuminate(CommandSender sender) - { - Player player = (Player) sender; - if (player.hasPotionEffect(PotionEffectType.NIGHT_VISION)) - { - player.removePotionEffect(PotionEffectType.NIGHT_VISION); - getLogger().message(sender, "Night Vision Disabled."); - } - else - { - player.addPotionEffect(effect, true); - getLogger().message(sender, "Night Vision Enabled."); - } - } - - // @noformat - @Override - public String getCommandString() - { - return "command nightvision {\n" + - " [empty] {\n" + - " run illuminate;\n" + - " type player;\n" + - " help Gives the player infinte night vision;\n" + - " perm utils.illuminate;\n" + - " }\n" + - "}"; - } - // @format -} diff --git a/src/com/redstoner/modules/misc/Misc.cmd b/src/com/redstoner/modules/misc/Misc.cmd index d0e67fe..2a41104 100644 --- a/src/com/redstoner/modules/misc/Misc.cmd +++ b/src/com/redstoner/modules/misc/Misc.cmd @@ -25,13 +25,6 @@ command ping { run ping2 password; } } -command me { - perm utils.me; - [string:text...] { - help /me's in chat.; - run me text; - } -} command sudo { perm utils.sudo; [string:name] [string:command...] { @@ -46,33 +39,12 @@ command hasperm { help Checks if a player has a given permission node or not. Returns \"true/false\" in chat. When -f is set, it returns it unformatted.; } } -command say { - [string:message...] { - perm utils.say; - run say message; - help A replacement for the default say command to make the format be more consistant.; - } -} -command sayn { - [string:name] [string:message...] { - perm utils.sayn; - type console; - run sayn name message; - help A replacement for the default say command to make the format be more consistant.; - } -} -command shrug { - [string:message...] { - perm utils.shrug; - run shrug message; - help Appends the shrug emoticon to the end of your message.; - } -} -command chat { - alias speak; - [string:message...] { - perm utils.speak; - run chat message; - help A way to speak in normal chat with normal formatting if you have ACT or CGT on.; - } +command nightvision { +alias nv; + [empty] { + run illuminate; + type player; + help Gives the player infinte night vision; + perm utils.illuminate; + } } \ No newline at end of file diff --git a/src/com/redstoner/modules/misc/Misc.java b/src/com/redstoner/modules/misc/Misc.java index 060f413..68e79fb 100644 --- a/src/com/redstoner/modules/misc/Misc.java +++ b/src/com/redstoner/modules/misc/Misc.java @@ -16,6 +16,8 @@ import org.bukkit.event.block.BlockFromToEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -23,12 +25,9 @@ import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; -import com.redstoner.modules.ignore.Ignore; - import net.nemez.chatapi.ChatAPI; import net.nemez.chatapi.click.Message; @@ -170,56 +169,6 @@ public class Misc implements Module, Listener return ((CraftPlayer) player).getHandle().ping; } - @Command(hook = "me") - public boolean me(CommandSender sender, String text) - { - String name; - if (sender instanceof Player) - name = ((Player) sender).getDisplayName(); - else - name = "§9" + sender.getName(); - text = ChatAPI.colorify(sender, text); - Utils.broadcast(" §7- " + name + " §7⇦ ", text, - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); - return true; - } - - @Command(hook = "chat") - public boolean chat(CommandSender sender, String message) - { - String name = Utils.getName(sender); - Utils.broadcast(" " + name, " §7→§r " + ChatAPI.colorify(sender, message), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); - return true; - } - - @Command(hook = "say") - public boolean say(CommandSender sender, String message) - { - String name = Utils.getName(sender); - Utils.broadcast(" §7[§9" + name.replaceAll("[^0-9a-zA-Z§&\\[\\]]", "") + "§7]: ", - "§r" + ChatAPI.colorify(null, message), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); - return true; - } - - @Command(hook = "sayn") - public boolean say(CommandSender sender, String name, String message) - { - Utils.broadcast(" §7[§9" + ChatAPI.colorify(sender, name) + "§7]: ", "§r" + ChatAPI.colorify(null, message), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); - return true; - } - - @Command(hook = "shrug") - public boolean shrug(CommandSender sender, String message) - { - String name = Utils.getName(sender); - Utils.broadcast(" " + name, " §7→§r " + ChatAPI.colorify(sender, message) + " ¯\\_(ツ)_/¯", - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); - return true; - } - @Command(hook = "sudo") public boolean sudo(CommandSender sender, String name, String command) { @@ -311,4 +260,22 @@ public class Misc implements Module, Listener Bukkit.getPluginManager().callEvent(event); return event.isCancelled(); } + + PotionEffect nightvision = new PotionEffect(PotionEffectType.NIGHT_VISION, Integer.MAX_VALUE, 0, false, false); + + @Command(hook = "illuminate") + public void illuminate(CommandSender sender) + { + Player player = (Player) sender; + if (player.hasPotionEffect(PotionEffectType.NIGHT_VISION)) + { + player.removePotionEffect(PotionEffectType.NIGHT_VISION); + getLogger().message(sender, "Night Vision Disabled."); + } + else + { + player.addPotionEffect(nightvision, true); + getLogger().message(sender, "Night Vision Enabled."); + } + } } \ No newline at end of file From 8057e7be17829ef52c69db3fa0a29181b4536050 Mon Sep 17 00:00:00 2001 From: minenash Date: Wed, 17 Jan 2018 13:27:24 -0500 Subject: [PATCH 20/34] Made /me use Utils.getName() instead of doing it's code itself. --- src/com/redstoner/modules/chat/Chat.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/com/redstoner/modules/chat/Chat.java b/src/com/redstoner/modules/chat/Chat.java index f524b72..2d624b7 100644 --- a/src/com/redstoner/modules/chat/Chat.java +++ b/src/com/redstoner/modules/chat/Chat.java @@ -41,11 +41,7 @@ public class Chat implements Module, Listener{ @Command(hook = "me") public boolean me(CommandSender sender, String text) { - String name; - if (sender instanceof Player) - name = ((Player) sender).getDisplayName(); - else - name = "§9" + sender.getName(); + String name = Utils.getName(sender); text = ChatAPI.colorify(sender, text); Utils.broadcast(" §7- " + name + " §7⇦ ", text, ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); From 215ea2bdb24e6ec563da100630ffdf2226911219 Mon Sep 17 00:00:00 2001 From: minenash Date: Wed, 17 Jan 2018 13:31:55 -0500 Subject: [PATCH 21/34] Removed checking the same thing twice in one if statement. --- src/com/redstoner/modules/chatgroups/Chatgroups.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/com/redstoner/modules/chatgroups/Chatgroups.java b/src/com/redstoner/modules/chatgroups/Chatgroups.java index fcded40..2b61961 100644 --- a/src/com/redstoner/modules/chatgroups/Chatgroups.java +++ b/src/com/redstoner/modules/chatgroups/Chatgroups.java @@ -368,8 +368,7 @@ public class Chatgroups implements Module, Listener { String rgroup = getGroup(recipient); - if ( rgroup != null && (ignore == null? true : ignore.sendTo(recipient)) - && (ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender).sendTo(recipient)? true : false : true)) + if ( rgroup != null && (ignore == null? true : ignore.sendTo(recipient)) ) return rgroup.equals(group); else return false; From fbec2339f26a63bdf8ba1844fce06ca244681b82 Mon Sep 17 00:00:00 2001 From: minenash Date: Wed, 17 Jan 2018 15:15:08 -0500 Subject: [PATCH 22/34] Removed Ignore implementaion from Afk Module --- src/com/redstoner/modules/afk/AFK.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/com/redstoner/modules/afk/AFK.java b/src/com/redstoner/modules/afk/AFK.java index c2d330e..393c487 100644 --- a/src/com/redstoner/modules/afk/AFK.java +++ b/src/com/redstoner/modules/afk/AFK.java @@ -21,14 +21,12 @@ import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.BroadcastFilter; import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Main; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; import com.redstoner.modules.datamanager.DataManager; -import com.redstoner.modules.ignore.Ignore; @Commands(CommandHolderType.File) @AutoRegisterListener @@ -201,8 +199,7 @@ class CustomListener implements Listener, EventExecutor public void unafk(CommandSender sender) { DataManager.setState(sender, "afk", false); - Utils.broadcast("§7 * ", Utils.getName(sender) + "§7 is no longer AFK", - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + Utils.broadcast("§7 * ", Utils.getName(sender) + "§7 is no longer AFK", null); } public boolean isafk(CommandSender sender) From be06fe1d968febd66bd0b288e466c43309eedcfb Mon Sep 17 00:00:00 2001 From: minenash Date: Sun, 21 Jan 2018 17:15:34 -0500 Subject: [PATCH 23/34] Fixed Version Numbers --- src/com/redstoner/modules/chatgroups/Chatgroups.java | 2 +- src/com/redstoner/modules/message/Message.java | 2 +- src/com/redstoner/modules/misc/Misc.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/redstoner/modules/chatgroups/Chatgroups.java b/src/com/redstoner/modules/chatgroups/Chatgroups.java index 2b61961..44a53bd 100644 --- a/src/com/redstoner/modules/chatgroups/Chatgroups.java +++ b/src/com/redstoner/modules/chatgroups/Chatgroups.java @@ -34,7 +34,7 @@ import net.nemez.chatapi.ChatAPI; * @author Pepich */ @Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 4, minor = 0, revision = 1, compatible = 4) +@Version(major = 4, minor = 0, revision = 2, compatible = 4) public class Chatgroups implements Module, Listener { private static final char defaultKey = ':'; diff --git a/src/com/redstoner/modules/message/Message.java b/src/com/redstoner/modules/message/Message.java index 2dae66f..f318195 100644 --- a/src/com/redstoner/modules/message/Message.java +++ b/src/com/redstoner/modules/message/Message.java @@ -20,7 +20,7 @@ import com.redstoner.modules.ignore.Ignore; import com.redstoner.modules.socialspy.Socialspy; @Commands(CommandHolderType.File) -@Version(major = 4, minor = 0, revision = 1, compatible = 4) +@Version(major = 4, minor = 0, revision = 2, compatible = 4) public class Message implements Module { HashMap replyTargets = new HashMap<>(); diff --git a/src/com/redstoner/modules/misc/Misc.java b/src/com/redstoner/modules/misc/Misc.java index 68e79fb..80d9438 100644 --- a/src/com/redstoner/modules/misc/Misc.java +++ b/src/com/redstoner/modules/misc/Misc.java @@ -33,7 +33,7 @@ import net.nemez.chatapi.click.Message; @Commands(CommandHolderType.File) @AutoRegisterListener -@Version(major = 4, minor = 0, revision = 2, compatible = 4) +@Version(major = 4, minor = 1, revision = 0, compatible = 4) public class Misc implements Module, Listener { private final String[] sudoBlacklist = new String[] {"(.*:)?e?sudo", "(.*:)?script.*", "(.*:)?stop", From 1b2a5b14072371f39a8356ee1cec275d1c5d0478 Mon Sep 17 00:00:00 2001 From: minenash Date: Sun, 21 Jan 2018 17:20:16 -0500 Subject: [PATCH 24/34] Merged Pmtoggle into Message. --- src/com/redstoner/modules/message/Message.cmd | 13 +++ .../redstoner/modules/message/Message.java | 60 ++++++++++- .../redstoner/modules/pmtoggle/Pmtoggle.java | 102 ------------------ 3 files changed, 72 insertions(+), 103 deletions(-) delete mode 100644 src/com/redstoner/modules/pmtoggle/Pmtoggle.java diff --git a/src/com/redstoner/modules/message/Message.cmd b/src/com/redstoner/modules/message/Message.cmd index a36918b..382e52e 100644 --- a/src/com/redstoner/modules/message/Message.cmd +++ b/src/com/redstoner/modules/message/Message.cmd @@ -27,4 +27,17 @@ command reply { help Sends a direct message to the last person you talked to.; perm utils.message; } +} + +command pmtoggle { + [empty] { + help Turns off your toggle.; + type player; + run pmtoggle_off; + } + [string:player] { + help Turns on your pmtoggle and locks onto .; + type player; + run pmtoggle player; + } } \ No newline at end of file diff --git a/src/com/redstoner/modules/message/Message.java b/src/com/redstoner/modules/message/Message.java index f318195..ee9da0e 100644 --- a/src/com/redstoner/modules/message/Message.java +++ b/src/com/redstoner/modules/message/Message.java @@ -1,10 +1,15 @@ package com.redstoner.modules.message; import java.util.HashMap; +import java.util.Map.Entry; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerQuitEvent; import com.nemez.cmdmgr.Command; import com.nemez.cmdmgr.Command.AsyncType; @@ -20,10 +25,11 @@ import com.redstoner.modules.ignore.Ignore; import com.redstoner.modules.socialspy.Socialspy; @Commands(CommandHolderType.File) -@Version(major = 4, minor = 0, revision = 2, compatible = 4) +@Version(major = 4, minor = 0, revision = 3, compatible = 4) public class Message implements Module { HashMap replyTargets = new HashMap<>(); + HashMap toggles = new HashMap(); @Command(hook = "message", async = AsyncType.ALWAYS) public boolean message(CommandSender sender, String target, String message) @@ -110,4 +116,56 @@ public class Message implements Module replyTargets.put(target, sender); return true; } + + @Command(hook = "pmtoggle_off", async = AsyncType.ALWAYS) + public boolean pmtoggle_off(CommandSender sender) + { + Player player = (Player) sender; + if (toggles.remove(player) != null) + getLogger().message(player, "Your pmtoggle was removed!"); + else + getLogger().message(player, "You didn't have pmtoggle enabled! Use /pmtoggle to enabled it."); + return true; + } + + @Command(hook = "pmtoggle", async = AsyncType.ALWAYS) + public boolean pmtoggle(CommandSender sender, String player) + { + Player p = Bukkit.getPlayer(player); + if (p == null && !player.equals("CONSOLE")) + { + getLogger().message(sender, "§cThat player couldn't be found!"); + return true; + } + toggles.put((Player) sender, player); + getLogger().message(sender, "Locked your pmtoggle onto §6" + player + "§7."); + return true; + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + Player player = event.getPlayer(); + if (toggles.containsKey(player)) + { + Bukkit.dispatchCommand(player, "m " + toggles.get(player) + " " + event.getMessage()); + event.setCancelled(true); + } + } + + @SuppressWarnings("unlikely-arg-type") + @EventHandler + public void onPlayerQuit(PlayerQuitEvent event) + { + toggles.remove(event.getPlayer()); + String player = event.getPlayer().getName(); + if (toggles.containsValue(player)) + for (Entry entry : toggles.entrySet()) + if (entry.getValue().equals(player)) + { + toggles.remove(player); + getLogger().message(entry.getKey(), + "We removed your pmtoggle for &6" + player + "&7, as they left the game."); + } + } } diff --git a/src/com/redstoner/modules/pmtoggle/Pmtoggle.java b/src/com/redstoner/modules/pmtoggle/Pmtoggle.java deleted file mode 100644 index 3657288..0000000 --- a/src/com/redstoner/modules/pmtoggle/Pmtoggle.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.redstoner.modules.pmtoggle; - -import java.util.HashMap; -import java.util.Map.Entry; - -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.AsyncPlayerChatEvent; -import org.bukkit.event.player.PlayerQuitEvent; - -import com.nemez.cmdmgr.Command; -import com.nemez.cmdmgr.Command.AsyncType; -import com.redstoner.annotations.AutoRegisterListener; -import com.redstoner.annotations.Commands; -import com.redstoner.annotations.Version; -import com.redstoner.misc.CommandHolderType; -import com.redstoner.modules.Module; - -@Commands(CommandHolderType.String) -@AutoRegisterListener -@Version(major = 4, minor = 0, revision = 0, compatible = 4) -public class Pmtoggle implements Module, Listener -{ - HashMap toggles = new HashMap(); - - @Command(hook = "pmtoggle_off", async = AsyncType.ALWAYS) - public boolean pmtoggle_off(CommandSender sender) - { - Player player = (Player) sender; - if (toggles.remove(player) != null) - getLogger().message(player, "Your pmtoggle was removed!"); - else - getLogger().message(player, "You didn't have pmtoggle enabled! Use /pmtoggle to enabled it."); - return true; - } - - @Command(hook = "pmtoggle", async = AsyncType.ALWAYS) - public boolean pmtoggle(CommandSender sender, String player) - { - Player p = Bukkit.getPlayer(player); - if (p == null && !player.equals("CONSOLE")) - { - getLogger().message(sender, "§cThat player couldn't be found!"); - return true; - } - toggles.put((Player) sender, player); - getLogger().message(sender, "Locked your pmtoggle onto §6" + player + "§7."); - return true; - } - - @EventHandler - public void onPlayerChat(AsyncPlayerChatEvent event) - { - Player player = event.getPlayer(); - if (toggles.containsKey(player)) - { - Bukkit.dispatchCommand(player, "m " + toggles.get(player) + " " + event.getMessage()); - event.setCancelled(true); - } - } - - @EventHandler - public void onPlayerQuit(PlayerQuitEvent event) - { - toggles.remove(event.getPlayer()); - String player = event.getPlayer().getName(); - if (toggles.containsValue(player)) - { - for (Entry entry : toggles.entrySet()) - { - if (entry.getValue().equals(player)) - { - toggles.remove(player); - getLogger().message(entry.getKey(), - "We removed your pmtoggle for &6" + player + "&7, as they left the game."); - } - } - } - } - - // @noformat - @Override - public String getCommandString() - { - return "command pmtoggle {\n" + - " [empty] {\n" + - " help Turns off your toggle.;\n" + - " type player;\n" + - " run pmtoggle_off;\n" + - " }\n" + - " [string:player] {\n" + - " help Turns on your pmtoggle and locks onto .;\n" + - " type player;\n" + - " run pmtoggle player;\n" + - " }\n" + - "}"; - } - // @format -} From f549c756ec0fbb20e7795e00573f21fc760e854d Mon Sep 17 00:00:00 2001 From: Pepich Date: Thu, 25 Jan 2018 12:36:31 +0100 Subject: [PATCH 25/34] Added new chat commands to alias list --- src/com/redstoner/modules/chatalias/Chatalias.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/redstoner/modules/chatalias/Chatalias.java b/src/com/redstoner/modules/chatalias/Chatalias.java index a8124e1..5a6baa9 100644 --- a/src/com/redstoner/modules/chatalias/Chatalias.java +++ b/src/com/redstoner/modules/chatalias/Chatalias.java @@ -32,11 +32,11 @@ import net.nemez.chatapi.ChatAPI; @Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 4, minor = 0, revision = 1, compatible = 4) +@Version(major = 4, minor = 0, revision = 2, compatible = 4) public class Chatalias implements Module, Listener { private final String[] commands = new String[] {"e?r", "e?m .+?", "e?t", "e?w", "e?msg .+?", "e?message .+?", - "e?whisper .+?", "e?me", "cgsay", "ac", "bc"}; + "e?whisper .+?", "e?me", "cgsay", "ac", "bc, say, sayn .+?, chat, shrug"}; private JSONObject aliases = new JSONObject(); @Override From 035667e6a0124817a4e39a0d28683559c6670d02 Mon Sep 17 00:00:00 2001 From: Pepich Date: Thu, 25 Jan 2018 12:39:59 +0100 Subject: [PATCH 26/34] Applied formatter --- src/com/redstoner/modules/ignore/Ignore.java | 119 ++++++++++--------- 1 file changed, 62 insertions(+), 57 deletions(-) diff --git a/src/com/redstoner/modules/ignore/Ignore.java b/src/com/redstoner/modules/ignore/Ignore.java index 06290d0..a77ca96 100644 --- a/src/com/redstoner/modules/ignore/Ignore.java +++ b/src/com/redstoner/modules/ignore/Ignore.java @@ -24,16 +24,16 @@ import com.redstoner.modules.datamanager.DataManager; import net.nemez.chatapi.click.Message; - @Commands(CommandHolderType.File) @AutoRegisterListener @Version(major = 4, minor = 0, revision = 0, compatible = 4) -public class Ignore implements Module { +public class Ignore implements Module +{ @Command(hook = "unignore", async = AsyncType.ALWAYS) public boolean unignore(CommandSender sender, String player) { - return ignore(sender,player,false); + return ignore(sender, player, false); } @Command(hook = "ignore", async = AsyncType.ALWAYS) @@ -43,24 +43,26 @@ public class Ignore implements Module { } @Command(hook = "list", async = AsyncType.ALWAYS) - public boolean list(CommandSender sender) { + public boolean list(CommandSender sender) + { getLogger().message(sender, "§7You are currently ignoring:"); JSONArray ignores = (JSONArray) DataManager.getOrDefault(sender, "ignores", new JSONArray()); - - if ( ignores.isEmpty() ) { + if (ignores.isEmpty()) + { new Message(sender, null).appendText(" §7Nobody \\o/").send(); return true; } String players; - OfflinePlayer pi = Bukkit.getOfflinePlayer(UUID.fromString((String)ignores.get(0))); + OfflinePlayer pi = Bukkit.getOfflinePlayer(UUID.fromString((String) ignores.get(0))); players = " §3" + pi.getName() + "§7"; - for (int i = 1; i < ignores.size(); i++) { - OfflinePlayer p = Bukkit.getOfflinePlayer(UUID.fromString((String)ignores.get(i))); - players += ", §3" + p.getName() + "§7"; + for (int i = 1; i < ignores.size(); i++) + { + OfflinePlayer p = Bukkit.getOfflinePlayer(UUID.fromString((String) ignores.get(i))); + players += ", §3" + p.getName() + "§7"; } Message m = new Message(sender, null); @@ -69,68 +71,72 @@ public class Ignore implements Module { return true; } - @SuppressWarnings({ "unchecked", "deprecation" }) + @SuppressWarnings({"unchecked", "deprecation"}) public boolean ignore(CommandSender sender, String player, boolean allowIgnore) { JSONArray ignores = (JSONArray) DataManager.getOrDefault(sender, "ignores", new JSONArray()); - Player p = Utils.isUUID(player)? - Bukkit.getPlayer(UUID.fromString(player)) : - Bukkit.getPlayer(player); - - OfflinePlayer op = Utils.isUUID(player)? - Bukkit.getOfflinePlayer(UUID.fromString(player)) : - Bukkit.getOfflinePlayer(player); - - String pName = p != null? p.getDisplayName() : op.getName(); - String pUUID = p != null? p.getUniqueId().toString() : op.getUniqueId().toString(); - String sUUID = ((Player) sender).getUniqueId().toString(); - - if (pUUID.equals(sUUID)) { - getLogger().message(sender, true, "§7You can't ignore yourself :P"); - return true; - } - - if (ignores.contains(pUUID)) { - ignores.remove(pUUID); - getLogger().message(sender, "§7You are no longer ignoring §3" + pName + "§7."); - } - else if (!allowIgnore){ - getLogger().message(sender, "§7You weren't ignoring §3" + pName + "§7."); - } - else { - ignores.add(pUUID); - getLogger().message(sender, "§7You are now ignoring §3" + pName + "§7."); - } - DataManager.setData(sender, "ignores", ignores); - return true; + Player p = Utils.isUUID(player) ? Bukkit.getPlayer(UUID.fromString(player)) : Bukkit.getPlayer(player); + OfflinePlayer op = Utils.isUUID(player) ? Bukkit.getOfflinePlayer(UUID.fromString(player)) + : Bukkit.getOfflinePlayer(player); + + String pName = p != null ? p.getDisplayName() : op.getName(); + String pUUID = p != null ? p.getUniqueId().toString() : op.getUniqueId().toString(); + String sUUID = ((Player) sender).getUniqueId().toString(); + + if (pUUID.equals(sUUID)) + { + getLogger().message(sender, true, "§7You can't ignore yourself :P"); + return true; + } + + if (ignores.contains(pUUID)) + { + ignores.remove(pUUID); + getLogger().message(sender, "§7You are no longer ignoring §3" + pName + "§7."); + } + else if (!allowIgnore) + { + getLogger().message(sender, "§7You weren't ignoring §3" + pName + "§7."); + } + else + { + ignores.add(pUUID); + getLogger().message(sender, "§7You are now ignoring §3" + pName + "§7."); + } + DataManager.setData(sender, "ignores", ignores); + return true; } - public static BroadcastFilter getIgnoredBy(CommandSender sender) { + public static BroadcastFilter getIgnoredBy(CommandSender sender) + { try - { - Module mod = ModuleLoader.getModule("Ignore"); - Method m = mod.getClass().getDeclaredMethod("_getIgnoredBy", CommandSender.class); - m.setAccessible(true); - return (BroadcastFilter) m.invoke(mod, sender); - } - catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException - | InvocationTargetException e) - {} + { + Module mod = ModuleLoader.getModule("Ignore"); + Method m = mod.getClass().getDeclaredMethod("_getIgnoredBy", CommandSender.class); + m.setAccessible(true); + return (BroadcastFilter) m.invoke(mod, sender); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} return null; } @SuppressWarnings("unused") - private BroadcastFilter _getIgnoredBy(CommandSender sender) { - return new BroadcastFilter() { + private BroadcastFilter _getIgnoredBy(CommandSender sender) + { + return new BroadcastFilter() + { - private final String sUUID = sender instanceof Player? - ((Player) sender).getUniqueId().toString() : "CONSOLE"; + private final String sUUID = sender instanceof Player ? ((Player) sender).getUniqueId().toString() + : "CONSOLE"; @Override - public boolean sendTo(CommandSender recipient) { + public boolean sendTo(CommandSender recipient) + { if (sUUID.equals("CONSOLE")) return true; @@ -150,5 +156,4 @@ public class Ignore implements Module { }; } - } From bfc481441a9a8000bca720b9ab938631cbeabf86 Mon Sep 17 00:00:00 2001 From: Pepich Date: Fri, 26 Jan 2018 11:54:47 +0100 Subject: [PATCH 27/34] Removed remove config command --- .../modules/datamanager/DataManager.cmd | 4 ---- .../modules/datamanager/DataManager.java | 16 ++-------------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/src/com/redstoner/modules/datamanager/DataManager.cmd b/src/com/redstoner/modules/datamanager/DataManager.cmd index 387e2ef..559e6ca 100644 --- a/src/com/redstoner/modules/datamanager/DataManager.cmd +++ b/src/com/redstoner/modules/datamanager/DataManager.cmd @@ -31,8 +31,4 @@ command config { type console; help Deletes all config settings of a given module.; } - remove [string:module] [string:key] { - run remove module key; - help Deletes the specified config setting; - } } \ No newline at end of file diff --git a/src/com/redstoner/modules/datamanager/DataManager.java b/src/com/redstoner/modules/datamanager/DataManager.java index 92485d2..e4b8773 100644 --- a/src/com/redstoner/modules/datamanager/DataManager.java +++ b/src/com/redstoner/modules/datamanager/DataManager.java @@ -36,7 +36,7 @@ import com.redstoner.modules.Module; @Commands(CommandHolderType.Stream) @AutoRegisterListener -@Version(major = 4, minor = 1, revision = 4, compatible = 4) +@Version(major = 4, minor = 1, revision = 5, compatible = 4) public final class DataManager implements CoreModule, Listener { protected final File dataFolder = new File(Main.plugin.getDataFolder(), "data"); @@ -651,7 +651,7 @@ public final class DataManager implements CoreModule, Listener if (prefix == null || prefix.equals("")) return list; for (String s : list) - if (s.startsWith(prefix)) + if (s.toLowerCase().startsWith(prefix.toLowerCase())) subset.add(s); return subset; } @@ -675,7 +675,6 @@ public final class DataManager implements CoreModule, Listener case "list": case "get": case "set": - case "remove": { event.setCompletions( subsetWhereStartsWith(module_index, arguments.length == 3 ? arguments[2] : "")); @@ -689,7 +688,6 @@ public final class DataManager implements CoreModule, Listener { case "get": case "set": - case "remove": { Object o = config_data.get(arguments[2]); if (o == null) @@ -771,16 +769,6 @@ public final class DataManager implements CoreModule, Listener return true; } - @Command(hook = "remove") - public boolean remove(CommandSender sender, String module, String key) - { - if (removeConfig_(module, key)) - getLogger().message(sender, "Successfully deleted the config entry §e" + module + "." + key + "§7!"); - else - getLogger().message(sender, true, "Could not delete the config entry §e" + module + "." + key + "§7!"); - return true; - } - @Command(hook = "remove_all") public boolean remove_all(CommandSender sender, String module) { From 5c433f3cf11a0d41c6254c644a3974cceb0e4d34 Mon Sep 17 00:00:00 2001 From: Pepich Date: Fri, 26 Jan 2018 12:08:14 +0100 Subject: [PATCH 28/34] Optimized log searching --- .../redstoner/modules/logs/LogHandler.java | 19 +++++++++---------- src/com/redstoner/modules/logs/Logs.java | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/com/redstoner/modules/logs/LogHandler.java b/src/com/redstoner/modules/logs/LogHandler.java index b7d7c9d..26389ed 100644 --- a/src/com/redstoner/modules/logs/LogHandler.java +++ b/src/com/redstoner/modules/logs/LogHandler.java @@ -8,6 +8,7 @@ import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.regex.Pattern; import java.util.zip.GZIPInputStream; import org.bukkit.command.CommandSender; @@ -61,17 +62,14 @@ public class LogHandler extends Thread regex = "^.*" + regex; if (!regex.endsWith("$")) regex += ".*$"; - boolean singleFile = true; - if (fileName.contains("*")) - singleFile = false; File logFolder = Logs.getLogsDir(); + Pattern fileNamePattern = Pattern.compile(fileName); File[] files = logFolder.listFiles(new FilenameFilter() { - @Override public boolean accept(File dir, String name) { - return name.matches(fileName); + return fileNamePattern.matcher(name).matches(); } }); totalFiles = files.length; @@ -85,6 +83,7 @@ public class LogHandler extends Thread Logs.logger.message(sender, "A total of &e" + totalFiles + "&7 files will be searched!"); boolean progress = (boolean) DataManager.getOrDefault(Utils.getID(sender), "Logs", "progress", true); + Pattern searchPattern = Pattern.compile(regex); for (File file : files) { if (file.getName().endsWith(".gz")) @@ -92,13 +91,13 @@ public class LogHandler extends Thread BufferedReader inputReader = new BufferedReader( new InputStreamReader(new GZIPInputStream(new FileInputStream(file)))); - matches += searchStream(inputReader, regex, sender, singleFile, file.getName()); + matches += searchStream(inputReader, searchPattern, sender, file.getName()); inputReader.close(); } else { BufferedReader inputReader = new BufferedReader(new FileReader(file)); - matches += searchStream(inputReader, regex, sender, singleFile, file.getName()); + matches += searchStream(inputReader, searchPattern, sender, file.getName()); inputReader.close(); } filesSearched++; @@ -137,8 +136,8 @@ public class LogHandler extends Thread * @param filename the name of the file that is currently being searched * @return how many matches it found * @throws IOException if something goes wrong */ - private int searchStream(BufferedReader inputReader, String regex, CommandSender sender, boolean singleFile, - String filename) throws IOException + private int searchStream(BufferedReader inputReader, Pattern searchPattern, CommandSender sender, String filename) + throws IOException { String format = (String) DataManager.getOrDefault(Utils.getID(sender), "Logs", "format", Logs.defaultFormat); boolean colors = (boolean) DataManager.getOrDefault(Utils.getID(sender), "Logs", "colors", true); @@ -152,7 +151,7 @@ public class LogHandler extends Thread { totalLines++; currentLine++; - if (line.matches(regex)) + if (searchPattern.matcher(line).matches()) { if (((p != null) && (!p.isOnline()))) { diff --git a/src/com/redstoner/modules/logs/Logs.java b/src/com/redstoner/modules/logs/Logs.java index bfa96bc..26523cc 100644 --- a/src/com/redstoner/modules/logs/Logs.java +++ b/src/com/redstoner/modules/logs/Logs.java @@ -15,7 +15,7 @@ import com.redstoner.modules.ModuleLogger; import com.redstoner.modules.datamanager.DataManager; @Commands(CommandHolderType.File) -@Version(major = 4, minor = 0, revision = 2, compatible = 4) +@Version(major = 4, minor = 0, revision = 3, compatible = 4) public class Logs implements Module { public static final String defaultFormat = "§7 > %f: %r"; From 5f1c89edd2532382c19f2c4121646adadf0a3e53 Mon Sep 17 00:00:00 2001 From: Pepich Date: Fri, 26 Jan 2018 12:17:54 +0100 Subject: [PATCH 29/34] Updated to v2 (includes afk/vanished info) --- src/com/redstoner/modules/onlineplayers/OnlinePlayers.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/com/redstoner/modules/onlineplayers/OnlinePlayers.java b/src/com/redstoner/modules/onlineplayers/OnlinePlayers.java index bf5a3d6..f09d100 100644 --- a/src/com/redstoner/modules/onlineplayers/OnlinePlayers.java +++ b/src/com/redstoner/modules/onlineplayers/OnlinePlayers.java @@ -17,9 +17,10 @@ import com.redstoner.annotations.Version; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; import com.redstoner.modules.Module; +import com.redstoner.modules.datamanager.DataManager; @AutoRegisterListener -@Version(major = 4, minor = 0, revision = 2, compatible = 4) +@Version(major = 4, minor = 0, revision = 3, compatible = 4) @SuppressWarnings("unchecked") public class OnlinePlayers implements Module, Listener { @@ -33,7 +34,7 @@ public class OnlinePlayers implements Module, Listener saveFile = new File(Main.plugin.getDataFolder(), "players.json"); output = new JSONObject(); players = new JSONArray(); - output.put("dataFormat", "v1"); + output.put("dataFormat", "v2"); rescan(); } @@ -63,6 +64,8 @@ public class OnlinePlayers implements Module, Listener jsonPlayer.put("name", player.getName()); jsonPlayer.put("UUID", player.getUniqueId().toString()); jsonPlayer.put("joined", System.currentTimeMillis()); + jsonPlayer.put("vanished", DataManager.getState(player, "vanished")); + jsonPlayer.put("afk", DataManager.getState(player, "afk")); players.add(jsonPlayer); save(); } From d46397a4f4950d87cf2d0bd0c30feba2402c746b Mon Sep 17 00:00:00 2001 From: Pepich Date: Fri, 26 Jan 2018 12:22:48 +0100 Subject: [PATCH 30/34] Fixed a bug where you couldn't disable bct anymore --- src/com/redstoner/modules/buildchat/BuildChat.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/redstoner/modules/buildchat/BuildChat.java b/src/com/redstoner/modules/buildchat/BuildChat.java index 8e74bf7..c83b700 100644 --- a/src/com/redstoner/modules/buildchat/BuildChat.java +++ b/src/com/redstoner/modules/buildchat/BuildChat.java @@ -28,7 +28,7 @@ import com.redstoner.modules.Module; * @author Pepich */ @Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 4, minor = 0, revision = 0, compatible = 4) +@Version(major = 4, minor = 0, revision = 1, compatible = 4) public class BuildChat implements Module, Listener { private static final char defaultKey = ';'; @@ -45,7 +45,7 @@ public class BuildChat implements Module, Listener keys = new JSONObject(); saveKeys(); } - bctoggled = new ArrayList(); + bctoggled = new ArrayList<>(); return true; } @@ -176,7 +176,7 @@ public class BuildChat implements Module, Listener @Command(hook = "bct_off") public boolean bcToggleOffCommand(CommandSender sender) { - if (bctoggled.remove(((Player) sender).getUniqueId().toString())) + if (bctoggled.remove(((Player) sender).getUniqueId())) getLogger().message(sender, "BCT now §cdisabled"); else getLogger().message(sender, "BCT was already disabled"); From 05d315991e02c71de0aef44069823c61be5fa172 Mon Sep 17 00:00:00 2001 From: Pepich Date: Fri, 26 Jan 2018 12:24:28 +0100 Subject: [PATCH 31/34] Made "look option" be ignored by default --- src/com/redstoner/modules/afk/AFK.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/com/redstoner/modules/afk/AFK.java b/src/com/redstoner/modules/afk/AFK.java index 393c487..66cd506 100644 --- a/src/com/redstoner/modules/afk/AFK.java +++ b/src/com/redstoner/modules/afk/AFK.java @@ -30,10 +30,10 @@ import com.redstoner.modules.datamanager.DataManager; @Commands(CommandHolderType.File) @AutoRegisterListener -@Version(major = 4, minor = 0, revision = 4, compatible = 4) +@Version(major = 4, minor = 0, revision = 5, compatible = 5) public class AFK implements Module, Listener { - private CustomListener listener = new CustomListener(); + private CustomListener listener; boolean move = true, look = false; @Override @@ -43,7 +43,7 @@ public class AFK implements Module, Listener DataManager.setConfig("indicator", "&7[AFK]"); String[] choices = new String[] {"listen", "ignore"}; DataManager.setConfig("move", "listen", choices); - DataManager.setConfig("look", "listen", choices); + DataManager.setConfig("look", "ignore", choices); DataManager.setConfig("chat", "listen", choices); DataManager.setConfig("interact", "listen", choices); DataManager.setConfig("command", "ignore", choices); @@ -53,10 +53,10 @@ public class AFK implements Module, Listener public void migrate(Version old) { Module.super.migrate(old); - if ((old.major() == 4) && (old.minor() == 0) && (old.revision()) == 3) + if ((old.major() == 4) && (old.minor() == 0) && (old.revision() == 3)) { String[] choices = new String[] {"listen", "ignore"}; - DataManager.setConfig("look", "listen", choices); + DataManager.setConfig("look", "ignore", choices); } } @@ -64,6 +64,7 @@ public class AFK implements Module, Listener public void postEnable() { Module.super.postEnable(); + listener = new CustomListener(); update_afk_listeners(Bukkit.getConsoleSender()); } From d4540e50e7805aaf1576a3dec5b00ff29782b504 Mon Sep 17 00:00:00 2001 From: Pepich Date: Fri, 26 Jan 2018 12:29:11 +0100 Subject: [PATCH 32/34] Ran formatter, updated to use ModuleLogger --- src/com/redstoner/modules/reports/Reports.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/com/redstoner/modules/reports/Reports.java b/src/com/redstoner/modules/reports/Reports.java index d9effc8..865ae11 100644 --- a/src/com/redstoner/modules/reports/Reports.java +++ b/src/com/redstoner/modules/reports/Reports.java @@ -26,7 +26,7 @@ import net.md_5.bungee.api.ChatColor; * * @author Redempt */ @Commands(CommandHolderType.String) -@Version(major = 4, minor = 0, revision = 0, compatible = 4) +@Version(major = 4, minor = 0, revision = 1, compatible = 4) public class Reports implements Module { private int task = 0; @@ -40,13 +40,9 @@ public class Reports implements Module reports = JsonManager.getArray(new File(Main.plugin.getDataFolder(), "reports.json")); archived = JsonManager.getArray(new File(Main.plugin.getDataFolder(), "archived_reports.json")); if (reports == null) - { reports = new JSONArray(); - } if (archived == null) - { archived = new JSONArray(); - } // Notify online staff of open reports task = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.plugin, () -> { @@ -58,11 +54,13 @@ public class Reports implements Module { if (player.hasPermission("utils.report")) { - player.sendMessage(ChatColor.RED + "There are " + ChatColor.YELLOW + reports.size() + ChatColor.RED - + " open reports!"); + getLogger().message(player, "&cThere are &e" + reports.size() + + " &copen reports!"); } } - } , 2400, 2400); + getLogger().info("&cThere are &e" + reports.size() + + " &copen reports!"); + }, 2400, 2400); return true; } @@ -92,7 +90,7 @@ public class Reports implements Module Player player = (Player) sender; if (id > reports.size() - 1 || id < 0) { - sender.sendMessage(ChatColor.RED + "Invalid ID!"); + getLogger().message(sender, true, "Invalid ID!"); return; } JSONObject report = (JSONObject) reports.get(id); @@ -114,7 +112,7 @@ public class Reports implements Module // Check for invalid ID if (id > reports.size() - 1 || id < 0) { - sender.sendMessage(ChatColor.RED + "Invalid ID!"); + getLogger().message(sender, true, "Invalid ID!"); return; } // Move report to archived reports From 8a118fd2e1e263210f96e7adee45411a86823b72 Mon Sep 17 00:00:00 2001 From: Pepich Date: Fri, 26 Jan 2018 12:31:29 +0100 Subject: [PATCH 33/34] Code reorganization, added formatting options for all outputs --- src/com/redstoner/modules/chat/Chat.cmd | 16 ++++ src/com/redstoner/modules/chat/Chat.java | 106 +++++++++++++++++------ 2 files changed, 94 insertions(+), 28 deletions(-) diff --git a/src/com/redstoner/modules/chat/Chat.cmd b/src/com/redstoner/modules/chat/Chat.cmd index 46cc5dc..180339f 100644 --- a/src/com/redstoner/modules/chat/Chat.cmd +++ b/src/com/redstoner/modules/chat/Chat.cmd @@ -34,4 +34,20 @@ command sayn { run sayn name message; help A replacement for the default say command to make the format be more consistant.; } +} + +command mute { + [string:player] { + perm utils.chat.admin; + run mute player; + help Mutes a player.; + } +} + +command unmute { + [string:player] { + perm utils.chat.admin; + run unmute player; + help Unmutes a player.; + } } \ No newline at end of file diff --git a/src/com/redstoner/modules/chat/Chat.java b/src/com/redstoner/modules/chat/Chat.java index 2d624b7..699bac3 100644 --- a/src/com/redstoner/modules/chat/Chat.java +++ b/src/com/redstoner/modules/chat/Chat.java @@ -1,5 +1,6 @@ package com.redstoner.modules.chat; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -15,72 +16,121 @@ import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +import com.redstoner.modules.datamanager.DataManager; import com.redstoner.modules.ignore.Ignore; -import net.nemez.chatapi.ChatAPI; - @Commands(CommandHolderType.File) @AutoRegisterListener -@Version(major = 4, minor = 0, revision = 0, compatible = 4) -public class Chat implements Module, Listener{ +@Version(major = 4, minor = 0, revision = 1, compatible = 4) +public class Chat implements Module, Listener +{ + + @Override + public void firstLoad() + { + Module.super.firstLoad(); + DataManager.setConfig("chat", " %n §7→§r %m"); + DataManager.setConfig("me", " §7- %n §7⇦ %m"); + DataManager.setConfig("say", " §7[§9%n§7]:§r %m"); + DataManager.setConfig("shrug", " %n §7→§r %m ¯\\_(ツ)_/¯"); + } @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerChat(AsyncPlayerChatEvent event) { Player player = event.getPlayer(); - String msg = event.getMessage(); + String message = event.getMessage(); event.setCancelled(true); - - if (player.hasPermission("utils.chat")) - Utils.broadcast(" " + Utils.getName(player), " §7→§r " + ChatAPI.colorify(player, msg), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(player) : null); - else - player.sendMessage("§8[§cServer§8] You don't have permission to chat."); + broadcastFormatted("chat", player, message); } @Command(hook = "me") - public boolean me(CommandSender sender, String text) + public boolean me(CommandSender sender, String message) { - String name = Utils.getName(sender); - text = ChatAPI.colorify(sender, text); - Utils.broadcast(" §7- " + name + " §7⇦ ", text, - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + broadcastFormatted("me", sender, message); return true; } @Command(hook = "chat") public boolean chat(CommandSender sender, String message) { - String name = Utils.getName(sender); - Utils.broadcast(" " + name, " §7→§r " + ChatAPI.colorify(sender, message), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + broadcastFormatted("chat", sender, message); return true; } @Command(hook = "say") public boolean say(CommandSender sender, String message) { - String name = Utils.getName(sender); - Utils.broadcast(" §7[§9" + name.replaceAll("[^0-9a-zA-Z§&\\[\\]]", "") + "§7]: ", - "§r" + ChatAPI.colorify(null, message), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + String name; + if (sender instanceof Player) + name = ((Player) sender).getName(); + else + name = "§9CONSOLE"; + broadcastFormatted("say", sender, message, name); return true; } @Command(hook = "sayn") public boolean say(CommandSender sender, String name, String message) { - Utils.broadcast(" §7[§9" + ChatAPI.colorify(sender, name) + "§7]: ", "§r" + ChatAPI.colorify(null, message), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + broadcastFormatted("say", sender, message, name); return true; } @Command(hook = "shrug") public boolean shrug(CommandSender sender, String message) { - String name = Utils.getName(sender); - Utils.broadcast(" " + name, " §7→§r " + ChatAPI.colorify(sender, message) + " ¯\\_(ツ)_/¯", - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + broadcastFormatted("shrug", sender, message); + return true; + } + + @Command(hook = "mute") + public boolean mute(CommandSender sender, String player) + { + Player p = Bukkit.getPlayer(player); + if (p == null) + { + getLogger().message(sender, true, "That player couldn't be found!"); + return true; + } + DataManager.setData(p, "muted", true); + getLogger().message(sender, "Muted player &e" + Utils.getName(p) + "&7!"); + getLogger().message(p, "You have been &cmuted&7!"); + return true; + } + + @Command(hook = "unmute") + public boolean unmute(CommandSender sender, String player) + { + Player p = Bukkit.getPlayer(player); + if (p == null) + { + getLogger().message(sender, true, "That player couldn't be found!"); + return true; + } + DataManager.setData(p, "muted", false); + getLogger().message(sender, "Unmuted player &e" + Utils.getName(p) + "&7!"); + getLogger().message(p, "You have been &aunmuted&7!"); + return true; + } + + public boolean broadcastFormatted(String format, CommandSender sender, String message) + { + return broadcastFormatted(format, sender, message, Utils.getName(sender)); + } + + public boolean broadcastFormatted(String format, CommandSender sender, String message, String name) + { + if ((boolean) DataManager.getOrDefault(sender, "muted", false)) + { + Utils.noPerm(sender, "You have been muted!"); + getLogger().info(" &7User &e" + Utils.getName(sender) + " &7tried to &e" + format + " &7(&e" + message + + "&7) while being &cmuted&7."); + return false; + } + String raw = (String) DataManager.getConfigOrDefault(format, " %n §7→§r %m"); + String formatted = raw.replace("%n", name).replace("%m", message); + Utils.broadcast("", formatted, ModuleLoader.exists("Ignore") ? Ignore.getIgnoredBy(sender) : null); return true; } } From 3d7414b1ff23b97f9f7fcf8429aaa5c653f10bf2 Mon Sep 17 00:00:00 2001 From: Pepich Date: Fri, 26 Jan 2018 13:03:20 +0100 Subject: [PATCH 34/34] Added regex syntax checks before starting search --- .../redstoner/modules/logs/LogHandler.java | 25 +++++++++++++++++-- src/com/redstoner/modules/logs/Logs.java | 2 +- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/com/redstoner/modules/logs/LogHandler.java b/src/com/redstoner/modules/logs/LogHandler.java index 26389ed..76f3849 100644 --- a/src/com/redstoner/modules/logs/LogHandler.java +++ b/src/com/redstoner/modules/logs/LogHandler.java @@ -9,6 +9,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; import java.util.zip.GZIPInputStream; import org.bukkit.command.CommandSender; @@ -63,7 +64,17 @@ public class LogHandler extends Thread if (!regex.endsWith("$")) regex += ".*$"; File logFolder = Logs.getLogsDir(); - Pattern fileNamePattern = Pattern.compile(fileName); + Pattern fileNamePattern; + try + { + fileNamePattern = Pattern.compile(fileName); + } + catch (PatternSyntaxException e) + { + Logs.logger.message(sender, true, "An error occured trying to compile the filename pattern!"); + stillSearching.remove(sender); + return; + } File[] files = logFolder.listFiles(new FilenameFilter() { @Override @@ -83,7 +94,17 @@ public class LogHandler extends Thread Logs.logger.message(sender, "A total of &e" + totalFiles + "&7 files will be searched!"); boolean progress = (boolean) DataManager.getOrDefault(Utils.getID(sender), "Logs", "progress", true); - Pattern searchPattern = Pattern.compile(regex); + Pattern searchPattern; + try + { + searchPattern = Pattern.compile(regex); + } + catch (PatternSyntaxException e) + { + Logs.logger.message(sender, true, "An error occured trying to compile the search pattern!"); + stillSearching.remove(sender); + return; + } for (File file : files) { if (file.getName().endsWith(".gz")) diff --git a/src/com/redstoner/modules/logs/Logs.java b/src/com/redstoner/modules/logs/Logs.java index 26523cc..b54bfc9 100644 --- a/src/com/redstoner/modules/logs/Logs.java +++ b/src/com/redstoner/modules/logs/Logs.java @@ -15,7 +15,7 @@ import com.redstoner.modules.ModuleLogger; import com.redstoner.modules.datamanager.DataManager; @Commands(CommandHolderType.File) -@Version(major = 4, minor = 0, revision = 3, compatible = 4) +@Version(major = 4, minor = 0, revision = 4, compatible = 4) public class Logs implements Module { public static final String defaultFormat = "§7 > %f: %r";