From 2e16d257e5d2d38fe082ae28aa4e5a3541792fff Mon Sep 17 00:00:00 2001 From: Super_ Date: Wed, 17 Jun 2020 17:08:35 -0400 Subject: [PATCH] tag --- .../tfguilds/command/GuildTagCommand.java | 62 +++++++++++++++++++ .../tfguilds/listener/ChatManager.java | 30 +++++++++ .../totalfreedom/tfguilds/util/GUtil.java | 42 +++++++++++++ src/main/resources/plugin.yml | 6 +- 4 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 src/main/java/totalfreedom/tfguilds/command/GuildTagCommand.java create mode 100644 src/main/java/totalfreedom/tfguilds/listener/ChatManager.java diff --git a/src/main/java/totalfreedom/tfguilds/command/GuildTagCommand.java b/src/main/java/totalfreedom/tfguilds/command/GuildTagCommand.java new file mode 100644 index 0000000..b89d944 --- /dev/null +++ b/src/main/java/totalfreedom/tfguilds/command/GuildTagCommand.java @@ -0,0 +1,62 @@ +package totalfreedom.tfguilds.command; + +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import totalfreedom.tfguilds.util.GBase; +import totalfreedom.tfguilds.util.GUtil; + +public class GuildTagCommand extends GBase implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length == 0 || args.length > 2) + { + return false; + } + + Player player = (Player) sender; + + if (GUtil.isConsole(player)) + { + sender.sendMessage(ChatColor.RED + "You are not allowed to run this command."); + return true; + } + + String guild = GUtil.getGuild(player); + if (guild == null) + { + sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + return true; + } + + String owner = GUtil.getOwner(guild); + if (!owner.equalsIgnoreCase(player.getName())) + { + sender.sendMessage(ChatColor.RED + "You aren't the owner of your guild!"); + return true; + } + + if (args.length == 2) + { + if (args[0].equalsIgnoreCase("set")) + { + GUtil.setTag(args[1], guild); + sender.sendMessage(ChatColor.GRAY + "Guild tag set to \"" + GUtil.color(args[1]) + ChatColor.GRAY + "\""); + return true; + } + return false; + } + + if (!args[0].equalsIgnoreCase("clear")) + { + return false; + } + GUtil.setTag(null, guild); + sender.sendMessage(ChatColor.GRAY + "Removed your guild's tag."); + return true; + } +} diff --git a/src/main/java/totalfreedom/tfguilds/listener/ChatManager.java b/src/main/java/totalfreedom/tfguilds/listener/ChatManager.java new file mode 100644 index 0000000..ef871c6 --- /dev/null +++ b/src/main/java/totalfreedom/tfguilds/listener/ChatManager.java @@ -0,0 +1,30 @@ +package totalfreedom.tfguilds.listener; + +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import totalfreedom.tfguilds.TFGuilds; +import totalfreedom.tfguilds.util.GUtil; + +public class ChatManager implements Listener +{ + private final TFGuilds plugin; + public ChatManager() + { + this.plugin = TFGuilds.plugin; + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent e) + { + Player player = e.getPlayer(); + String guild = GUtil.getGuild(player); + if (guild == null) + return; + if (!GUtil.hasTag(guild)) + return; + e.setFormat(GUtil.color(GUtil.getTag(guild)) + " " + ChatColor.RESET + e.getFormat()); + } +} \ No newline at end of file diff --git a/src/main/java/totalfreedom/tfguilds/util/GUtil.java b/src/main/java/totalfreedom/tfguilds/util/GUtil.java index 513760e..25fddcb 100644 --- a/src/main/java/totalfreedom/tfguilds/util/GUtil.java +++ b/src/main/java/totalfreedom/tfguilds/util/GUtil.java @@ -3,6 +3,8 @@ package totalfreedom.tfguilds.util; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.entity.Player; import totalfreedom.tfguilds.TFGuilds; import java.util.List; @@ -30,6 +32,46 @@ public class GUtil GLog.info(owner.getName() + " has created a new guild: " + guildName); } + public static void setTag(String tag, String guildName) + { + plugin.guilds.set("guilds." + guildName + ".tag", tag); + plugin.guilds.save(); + } + + public static String getTag(String guildName) + { + return plugin.guilds.getString("guilds." + guildName + ".tag"); + } + + public static boolean hasTag(String guildName) + { + return plugin.guilds.contains("guilds." + guildName + ".tag"); + } + + public static String getGuild(Player player) + { + String g = ""; + boolean a = false; + ConfigurationSection guildMembers = plugin.guilds.getConfigurationSection("guilds"); + for (String guild : guildMembers.getKeys(false)) + { + List members = plugin.guilds.getStringList("guilds." + guild + ".members"); + if (members.contains(player.getName())) + { + a = true; + g = guild; + } + } + if (!a) + return null; + return g; + } + + public static String getOwner(String guildName) + { + return plugin.guilds.getString("guilds." + guildName + ".owner"); + } + public static String color(String s) { return ChatColor.translateAlternateColorCodes('&', s); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 69d8d5d..cdf4da1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -12,4 +12,8 @@ commands: createguild: description: Creates a guild usage: / - aliases: [guildcreate] \ No newline at end of file + aliases: [guildcreate] + guildtag: + description: Modify your guild's tag + usage: / | clear> + aliases: [gtag] \ No newline at end of file