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/mentio | |
parent | e86c52ef7c0e1e33c6af0e8674b038976bec11cc (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.cmd | 16 | ||||
-rw-r--r-- | src/main/java/com/redstoner/modules/mentio/Mentio.java | 180 |
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); + } +} |