diff --git a/pom.xml b/pom.xml index c72f556..7e1882b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.totalfreedom TFGuilds - 0.2.10 + 0.2.11 jar TFGuilds diff --git a/src/main/java/me/totalfreedom/tfguilds/Common.java b/src/main/java/me/totalfreedom/tfguilds/Common.java index 3537367..1172d0a 100644 --- a/src/main/java/me/totalfreedom/tfguilds/Common.java +++ b/src/main/java/me/totalfreedom/tfguilds/Common.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; import me.totalfreedom.tfguilds.config.ConfigEntry; import me.totalfreedom.tfguilds.guild.Guild; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -27,4 +28,9 @@ public class Common { return in.replaceAll("%p%", PRIMARY + "").replaceAll("%s%", SECONDARY + ""); } + + public static void broadcast(String msg) + { + Bukkit.broadcastMessage(msg); + } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java index a8bc827..dbe9225 100644 --- a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java +++ b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java @@ -23,6 +23,7 @@ public final class TFGuilds extends JavaPlugin public Config config; public Config guilds; + public Config players; public TFMBridge bridge; @Override @@ -31,6 +32,7 @@ public final class TFGuilds extends JavaPlugin plugin = this; config = new Config("config.yml"); guilds = new Config("guilds.yml"); + players = new Config("players.yml"); bridge = new TFMBridge(); loadCommands(); loadListeners(); @@ -43,6 +45,7 @@ public final class TFGuilds extends JavaPlugin plugin = null; config.save(); guilds.save(); + players.save(); GLog.info("Disabled " + this.getDescription().getFullName()); } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java index 94b0afb..9c1b60f 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java @@ -75,8 +75,9 @@ public class CreateSubcommand extends Common implements CommandExecutor } Guild.createGuild(identifier, name, player); + plugin.players.set(player.getName() + ".tag", true); sender.sendMessage(tl(PREFIX + "Created a guild named \"" + GUtil.colorize(name) + "%p%\"!")); - Bukkit.broadcastMessage(GUtil.colorize(tl("%p%" + sender.getName() + " has created guild %p%&l" + name))); + broadcast(GUtil.colorize(tl("%p%" + sender.getName() + " has created guild %p%&l" + name))); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java index 3752841..213637a 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java @@ -4,6 +4,7 @@ import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.guild.Guild; import me.totalfreedom.tfguilds.util.GLog; import me.totalfreedom.tfguilds.util.GUtil; +import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -30,7 +31,7 @@ public class DisbandSubcommand extends Common implements CommandExecutor return true; } - Guild guild = Guild.getGuild(args[1]); + Guild guild = Guild.getGuild(GUtil.flatten(StringUtils.join(args, " ", 1, args.length))); if (guild == null) { sender.sendMessage(ChatColor.RED + "That guild doesn't exist!"); @@ -42,6 +43,7 @@ public class DisbandSubcommand extends Common implements CommandExecutor guild.disband(); GLog.info(sender.getName() + " deleted guild " + guild.getName()); sender.sendMessage(tl(PREFIX + "Disbanded \"" + GUtil.colorize(n) + "%p%\".")); + broadcast(GUtil.colorize(tl("%p%" + sender.getName() + " has disbanded guild %p%&l" + guild.getName()))); return true; } @@ -69,7 +71,7 @@ public class DisbandSubcommand extends Common implements CommandExecutor guild.disband(); GLog.info(player.getName() + " deleted guild " + guild.getName()); sender.sendMessage(tl(PREFIX + "You have disbanded your guild!")); - Bukkit.broadcastMessage(GUtil.colorize(tl("%p%&l" + guild.getName() + "%p% has been disbanded"))); + broadcast(GUtil.colorize(tl("%p%&l" + guild.getName() + "%p% has been disbanded"))); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java index b2a29e3..3b4d2cf 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java @@ -6,10 +6,12 @@ import java.util.List; import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.guild.Guild; import me.totalfreedom.tfguilds.util.GUtil; +import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; public class GuildCommand extends Common implements CommandExecutor, TabCompleter { @@ -70,6 +72,8 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete return new SetDefaultRankSubcommand().onCommand(sender, command, label, args); case "toggletags": return new ToggleTagsSubcommand().onCommand(sender, command, label, args); + case "toggletag": + return new ToggleTagSubcommand().onCommand(sender, command, label, args); } return false; } @@ -85,7 +89,8 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete return Arrays.asList("addmod", "chat", "createrank", "create", "deleterank", "disband", "help", "home", "info", "invite", "join", "kick", "leave", "list", "motd", "removemod", "rename", - "roster", "setowner", "setrank", "setstate", "tag", "tp", "setdefaultrank", "toggletags"); + "roster", "setowner", "setrank", "setstate", "tag", "tp", "setdefaultrank", + "toggletags", "toggletag"); } else if (args.length == 2) { @@ -130,7 +135,13 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete case "tp": { - return guild.getMembers(); + for (Player player : Bukkit.getOnlinePlayers()) + { + if (guild.getMembers().contains(player.getName())) + { + return guild.getMembers(); + } + } } case "disband": @@ -145,9 +156,15 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete case "kick": { - if (guild.hasModerator(sender.getName())) + for (Player player : Bukkit.getOnlinePlayers()) { - return guild.getOnlyMembers(); + if (guild.getOnlyMembers().contains(player.getName())) + { + if (guild.hasModerator(sender.getName())) + { + return guild.getOnlyMembers(); + } + } } } @@ -155,9 +172,15 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete case "addmod": case "setowner": { - if (guild.getOwner().equals(sender.getName())) + for (Player player : Bukkit.getOnlinePlayers()) { - return guild.getMembers(); + if (guild.getMembers().contains(player.getName())) + { + if (guild.getOwner().equals(sender.getName())) + { + return guild.getMembers(); + } + } } } } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java index dad1a80..5c36052 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java @@ -77,6 +77,7 @@ public class RenameSubcommand extends Common implements CommandExecutor guild.setIdentifier(GUtil.flatten(newName)); guild.setName(newName); guild.updateRankIdentifiers(); + guild.setTag(GUtil.colorize("&8[&7" + newName + "&8]")); sender.sendMessage(tl(PREFIX + "Set %s%" + GUtil.colorize(newName) + "%p% as the new name of your guild%p%.")); guild.broadcast(tl("%p%Your guild has been renamed to " + GUtil.colorize(newName) + "%p%.")); guild.save(); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java index cb6acda..b906ebc 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java @@ -57,7 +57,7 @@ public class SetDefaultRankSubcommand extends Common implements CommandExecutor guild.setDefaultRank(rank); guild.save(); - sender.sendMessage(tl(PREFIX + "Set " + rank + " as the default rank for your guild.")); + sender.sendMessage(tl(PREFIX + "Set %s%\"" + rank + "\"%p% as the default rank for your guild.")); return true; } } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java index d73c737..131f3c2 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java @@ -33,6 +33,7 @@ public class TFGuildsCommand extends Common implements CommandExecutor { plugin.config.load(); plugin.guilds.load(); + plugin.players.load(); GLog.info("All configs reloaded successfully"); sender.sendMessage(tl(PREFIX + "All configuration files have been reloaded successfully.")); return true; diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java new file mode 100644 index 0000000..8b3990d --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java @@ -0,0 +1,45 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; + +public class ToggleTagSubcommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (sender instanceof ConsoleCommandSender) + { + sender.sendMessage(NO_PERMS); + return true; + } + + Player player = (Player)sender; + Guild guild = Guild.getGuild(player); + if (guild == null) + { + sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + return true; + } + + boolean enabled = plugin.players.getBoolean(player.getName() + ".tag"); + if (!plugin.players.contains(player.getName()) || enabled) + { + plugin.players.set(player.getName() + ".tag", false); + plugin.players.save(); + sender.sendMessage(tl(PREFIX + "Disabled personal guild tag.")); + return true; + } + + plugin.players.set(player.getName() + ".tag", true); + plugin.players.save(); + sender.sendMessage(tl(PREFIX + "Enabled personal guild tag.")); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubcommand.java index d8f692b..16a2982 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubcommand.java @@ -2,6 +2,7 @@ package me.totalfreedom.tfguilds.command; import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.config.ConfigEntry; +import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -21,12 +22,14 @@ public class ToggleTagsSubcommand extends Common implements CommandExecutor if (enabled) { ConfigEntry.GUILD_TAGS_ENABLED.setBoolean(false); - sender.sendMessage(tl(PREFIX + "Disabled guild tags.")); + sender.sendMessage(tl(PREFIX + "Globally disabled guild tags.")); + broadcast(ChatColor.RED + sender.getName() + " - Globally disabling guild tags"); } else { ConfigEntry.GUILD_TAGS_ENABLED.setBoolean(true); - sender.sendMessage(tl(PREFIX + "Enabled guild tags.")); + sender.sendMessage(tl(PREFIX + "Globally enabled guild tags.")); + broadcast(ChatColor.RED + sender.getName() + " - Globally enabling guild tags"); } return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java b/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java index ff88f90..4f5db02 100644 --- a/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java @@ -8,7 +8,7 @@ public enum ConfigEntry SCHEME_PRIMARY("scheme.primary"), SCHEME_SECONDARY("scheme.secondary"), // Server - SERVER_GUILD_CHAT_LOGGING_ENABLED("server.guild_chat_logging.enabled"), + GUILD_CHAT_LOGGING_ENABLED("server.guild_chat_logging.enabled"), GUILD_TAGS_ENABLED("server.guild_tags.enabled"); private final String path; diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java index f33886d..ee89a20 100644 --- a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java +++ b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java @@ -314,7 +314,7 @@ public class Guild { broadcast(Common.tl("%s%[%p%Guild Chat %s%| %p%" + GUtil.colorize(name) + "%s%] %p%" + as + ChatColor.WHITE + ": %p%" + msg)); - if (ConfigEntry.SERVER_GUILD_CHAT_LOGGING_ENABLED.getBoolean()) + if (ConfigEntry.GUILD_CHAT_LOGGING_ENABLED.getBoolean()) { GLog.info(Common.tl("%s%[%p%Guild Chat %s%| %p%" + GUtil.colorize(name) + "%s%] %p%" + as + ChatColor.WHITE + ": %p%" + msg)); } diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java index f1fd2ce..c924fcd 100644 --- a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java +++ b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java @@ -1,6 +1,7 @@ package me.totalfreedom.tfguilds.listener; import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.TFGuilds; import me.totalfreedom.tfguilds.config.ConfigEntry; import me.totalfreedom.tfguilds.guild.Guild; import me.totalfreedom.tfguilds.guild.GuildRank; @@ -15,6 +16,8 @@ import org.bukkit.event.player.AsyncPlayerChatEvent; public class ChatListener implements Listener { + private static final TFGuilds plugin = TFGuilds.getPlugin(); + @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerChat(AsyncPlayerChatEvent e) { @@ -75,9 +78,22 @@ public class ChatListener implements Listener if (guild.hasTag()) { - e.setFormat(e.getFormat().replace(g.getTag(), "")); + e.setFormat(e.getFormat().substring(g.getTag().length())); } } } + + if (!plugin.players.getBoolean(player.getName() + ".tag") && plugin.players.contains(player.getName())) + { + if (!ConfigEntry.GUILD_TAGS_ENABLED.getBoolean()) + { + return; + } + + if (guild.hasTag()) + { + e.setFormat(e.getFormat().substring(guild.getTag().length())); + } + } } } \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 99a650a..2eb6264 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,12 +3,20 @@ # server: + + # Log guild chat to console? guild_chat_logging: enabled: true + # Enable guild tags globally? guild_tags_enabled: enabled: true + # Color scheme used for TFGuilds scheme: + + # Primary color primary: GREEN + + # Secondary color secondary: DARK_GREEN \ No newline at end of file diff --git a/src/main/resources/players.yml b/src/main/resources/players.yml new file mode 100644 index 0000000..27e0340 --- /dev/null +++ b/src/main/resources/players.yml @@ -0,0 +1,3 @@ +# +# Player data for TFGuilds +# \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 2a0d75d..80fa1ae 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -7,7 +7,7 @@ description: A guilds plugin for the TotalFreedom server. commands: guild: description: The main command of TFGuilds. - usage: / [list | help | create | disband [name] | invite | addmod | player> | removemod | name> | createrank | setowner | player> | kick | player> | leave | setstate | state> | tp | info [guild | player] | tag | clear> | join | chat [message] | roster [guild] | rename | createrank | deleterank | setrank motd | clear> | home [set] | chat [message] | setdefaultrank | toggletags] + usage: / [list | help | create | disband [name] | invite | addmod | player> | removemod | name> | createrank | setowner | player> | kick | player> | leave | setstate | state> | tp | info [guild | player] | tag | clear> | join | chat [message] | roster [guild] | rename | createrank | deleterank | setrank motd | clear> | home [set] | chat [message] | setdefaultrank | toggletags | toggletag] aliases: [g] guildchat: description: Talk in chat with your guild.