diff options
author | David <david@panic.tk> | 2018-11-07 23:50:06 +0100 |
---|---|---|
committer | David <david@panic.tk> | 2018-11-07 23:50:06 +0100 |
commit | 604cf01967ede98bf5024e4926bb0777fc4e8eee (patch) | |
tree | e2fa63d7e683769ee3bf3eddc75280648e92eb04 /src/main/java/com/redstoner/modules/ignore | |
parent | e86c52ef7c0e1e33c6af0e8674b038976bec11cc (diff) |
Converted Modules to gradle
Diffstat (limited to 'src/main/java/com/redstoner/modules/ignore')
-rw-r--r-- | src/main/java/com/redstoner/modules/ignore/Ignore.cmd | 22 | ||||
-rw-r--r-- | src/main/java/com/redstoner/modules/ignore/Ignore.java | 159 |
2 files changed, 181 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/modules/ignore/Ignore.cmd b/src/main/java/com/redstoner/modules/ignore/Ignore.cmd new file mode 100644 index 0000000..382846b --- /dev/null +++ b/src/main/java/com/redstoner/modules/ignore/Ignore.cmd @@ -0,0 +1,22 @@ +command ignore { + [string:player] { + perm utils.ignore; + run ignore player; + type player; + help Ignores or Unignores a player.; + } + [empty] { + perm utils.ignore; + run list; + type player; + help Lists everyone you ignore.; + } +} +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/main/java/com/redstoner/modules/ignore/Ignore.java b/src/main/java/com/redstoner/modules/ignore/Ignore.java new file mode 100644 index 0000000..c830700 --- /dev/null +++ b/src/main/java/com/redstoner/modules/ignore/Ignore.java @@ -0,0 +1,159 @@ +package com.redstoner.modules.ignore; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +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.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; +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) +@AutoRegisterListener +@Version(major = 4, minor = 0, revision = 0, compatible = 4) +public class Ignore implements Module +{ + + @Command(hook = "unignore", async = AsyncType.ALWAYS) + public boolean unignore(CommandSender sender, String player) + { + return ignore(sender, player, false); + } + + @Command(hook = "ignore", async = AsyncType.ALWAYS) + public boolean ignore(CommandSender sender, String player) + { + return ignore(sender, player, true); + } + + @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()); + + 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))); + 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", "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; + + } + + 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) + {} + return null; + } + + @SuppressWarnings("unused") + private BroadcastFilter _getIgnoredBy(CommandSender sender) + { + 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) + { + Player player = (Player) recipient; + + if (sender.hasPermission("utils.ignore.override")) + return true; + + JSONArray ignores = (JSONArray) DataManager.getOrDefault(recipient, "ignores", new JSONArray()); + return !ignores.contains(sUUID); + } + else + return true; + } + }; + } + +} |