summaryrefslogtreecommitdiff
path: root/src/main/java/com/redstoner/modules/mentio
diff options
context:
space:
mode:
authorDavid <david@panic.tk>2018-11-07 23:50:06 +0100
committerDavid <david@panic.tk>2018-11-07 23:50:06 +0100
commit604cf01967ede98bf5024e4926bb0777fc4e8eee (patch)
treee2fa63d7e683769ee3bf3eddc75280648e92eb04 /src/main/java/com/redstoner/modules/mentio
parente86c52ef7c0e1e33c6af0e8674b038976bec11cc (diff)
Converted Modules to gradle
Diffstat (limited to 'src/main/java/com/redstoner/modules/mentio')
-rw-r--r--src/main/java/com/redstoner/modules/mentio/Mentio.cmd16
-rw-r--r--src/main/java/com/redstoner/modules/mentio/Mentio.java180
2 files changed, 196 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/modules/mentio/Mentio.cmd b/src/main/java/com/redstoner/modules/mentio/Mentio.cmd
new file mode 100644
index 0000000..230adf8
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/mentio/Mentio.cmd
@@ -0,0 +1,16 @@
+command mentio {
+ add [string:trigger] {
+ help Triggers you when the trigger gets said.;
+ run addmentio trigger;
+ }
+ delete [string:trigger] {
+ help Deletes a mentio.;
+ run delmentio trigger;
+ }
+ list {
+ help Lists your mentios.;
+ run listmentios;
+ }
+ perm utils.mentio;
+ type player;
+} \ No newline at end of file
diff --git a/src/main/java/com/redstoner/modules/mentio/Mentio.java b/src/main/java/com/redstoner/modules/mentio/Mentio.java
new file mode 100644
index 0000000..3db8edf
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/mentio/Mentio.java
@@ -0,0 +1,180 @@
+package com.redstoner.modules.mentio;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.UUID;
+import java.util.regex.Pattern;
+
+import org.bukkit.Sound;
+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 org.json.simple.JSONObject;
+
+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.JsonManager;
+import com.redstoner.misc.Main;
+import com.redstoner.modules.Module;
+import com.redstoner.modules.ignore.Ignore;
+
+import net.nemez.chatapi.click.Message;
+
+@Commands(CommandHolderType.File)
+@AutoRegisterListener
+@Version(major = 4, minor = 1, revision = 0, compatible = 4)
+public class Mentio implements Module, Listener
+{
+ private File mentioLocation = new File(Main.plugin.getDataFolder(), "mentio.json");
+ private JSONObject mentios;
+
+ @Override
+ public boolean onEnable()
+ {
+ loadMentios();
+ return true;
+ }
+
+ @Override
+ public void onDisable()
+ {
+ saveMentios();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Command(hook = "addmentio")
+ public boolean addMentio(CommandSender sender, String trigger)
+ {
+ Player player = (Player) sender;
+ UUID uuid = player.getUniqueId();
+ JSONArray playerMentios = (JSONArray) mentios.get(uuid.toString());
+ if (playerMentios == null)
+ {
+ playerMentios = new JSONArray();
+ playerMentios.add(player.getName());
+ playerMentios.add(player.getDisplayName().split(" ")[0].replaceAll("§[0-9a-fk-o]", ""));
+ }
+ if (playerMentios.contains(trigger))
+ getLogger().message(sender, true, "You already had that as a mentio!");
+ else
+ {
+ playerMentios.add(trigger);
+ getLogger().message(sender, "Successfully added the trigger §e" + trigger + " §7for you!");
+ mentios.put(uuid.toString(), playerMentios);
+ saveMentios();
+ }
+ return true;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Command(hook = "delmentio")
+ public boolean delMentio(CommandSender sender, String trigger)
+ {
+ Player player = (Player) sender;
+ UUID uuid = player.getUniqueId();
+ JSONArray playerMentios = (JSONArray) mentios.get(uuid.toString());
+ if (playerMentios == null)
+ {
+ playerMentios = new JSONArray();
+ playerMentios.add(player.getName());
+ playerMentios.add(player.getDisplayName().split(" ")[0].replaceAll("§[0-9a-fk-o]", ""));
+ }
+ if (!playerMentios.remove(trigger))
+ getLogger().message(sender, true, "You didn't have that as a mentio!");
+ else
+ {
+ getLogger().message(sender, "Successfully removed the trigger §e" + trigger + " §7for you!");
+ mentios.put(uuid.toString(), playerMentios);
+ saveMentios();
+ }
+ return true;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Command(hook = "listmentios")
+ public boolean listMentios(CommandSender sender)
+ {
+ ArrayList<String> message = new ArrayList<>();
+ Player player = (Player) sender;
+ UUID uuid = player.getUniqueId();
+ JSONArray playerMentios = (JSONArray) mentios.get(uuid.toString());
+ if (playerMentios == null)
+ {
+ playerMentios = new JSONArray();
+ playerMentios.add(player.getName());
+ playerMentios.add(player.getDisplayName().split(" ")[0].replaceAll("§[0-9a-fk-or]", ""));
+ }
+ for (Object raw : playerMentios)
+ {
+ String mentio = (String) raw;
+ message.add("&2 -> &e" + mentio);
+ }
+ getLogger().message(sender, message.toArray(new String[] {}));
+ return true;
+ }
+
+ @SuppressWarnings("unchecked")
+ @EventHandler(priority = EventPriority.HIGHEST)
+ public void onPlayerChat(AsyncPlayerChatEvent event)
+ {
+ if (event.isCancelled())
+ return;
+ for (Player player : event.getRecipients())
+ {
+ if (ModuleLoader.exists("Ignore") ? !Ignore.getIgnoredBy(event.getPlayer()).sendTo(player) : false)
+ return;
+ UUID uuid = player.getUniqueId();
+ JSONArray playerMentios = (JSONArray) mentios.get(uuid.toString());
+ if (playerMentios == null)
+ {
+ playerMentios = new JSONArray();
+ playerMentios.add(player.getName());
+ playerMentios.add(player.getDisplayName().split(" ")[0].replaceAll("§[0-9a-fk-o]", ""));
+ }
+ for (Object raw : playerMentios)
+ {
+ String mentio = (String) raw;
+ if (event.getMessage().toLowerCase().contains(mentio.toLowerCase()))
+ {
+ event.getRecipients().remove(player);
+ String temp = event.getMessage().replaceAll("(?i)" + Pattern.quote(mentio) + ".*", "");
+ String lastColorCodes = "§r";
+ char lastChar = ' ';
+ for (char c : temp.toCharArray())
+ {
+ if (lastChar == '§')
+ lastColorCodes += "§" + c;
+ lastChar = c;
+ }
+ Message m = new Message(player, event.getPlayer());
+ m.appendText(event.getFormat().replace("%1$s", event.getPlayer().getDisplayName()).replace("%2$s",
+ event.getMessage().replaceFirst("(?i)(" + Pattern.quote(mentio) + ")([^ ]*)",
+ "§a§o$1$2" + lastColorCodes)));
+ m.send();
+ player.playSound(player.getLocation(), Sound.ENTITY_CHICKEN_EGG, 1, 1);
+ return;
+ }
+ }
+ }
+ }
+
+ private void loadMentios()
+ {
+ mentios = JsonManager.getObject(mentioLocation);
+ if (mentios == null)
+ mentios = new JSONObject();
+ }
+
+ private void saveMentios()
+ {
+ JsonManager.save(mentios, mentioLocation);
+ }
+}