diff --git a/.gitignore b/.gitignore index 744003a..6a87f9d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ -.idea/ +/.idea/artifacts +/.idea/libraries +/.idea/workspace.xml +/.idea/modules.xml target/ out/ \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..9898a0e --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,28 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..0f7bc51 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..d04fbec --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..90ad631 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TFGuilds.iml b/TFGuilds.iml index c1e8347..b342fbd 100644 --- a/TFGuilds.iml +++ b/TFGuilds.iml @@ -25,7 +25,7 @@ - + diff --git a/pom.xml b/pom.xml index 798e08f..4cdfe0b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.totalfreedom TFGuilds - 0.2.4 + 0.2.6 jar TFGuilds diff --git a/src/main/java/me/totalfreedom/tfguilds/Common.java b/src/main/java/me/totalfreedom/tfguilds/Common.java index 2b66001..62bca33 100644 --- a/src/main/java/me/totalfreedom/tfguilds/Common.java +++ b/src/main/java/me/totalfreedom/tfguilds/Common.java @@ -22,6 +22,7 @@ public class Common public static Map INVITES = new HashMap<>(); public static List IN_GUILD_CHAT = new ArrayList<>(); + public static List CHAT_SPY = new ArrayList<>(); public static String tl(String in) { diff --git a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java index 33dc201..178ef0a 100644 --- a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java +++ b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java @@ -2,6 +2,7 @@ package me.totalfreedom.tfguilds; import me.totalfreedom.tfguilds.bridge.TFMBridge; import me.totalfreedom.tfguilds.command.GuildChatCommand; +import me.totalfreedom.tfguilds.command.GuildChatSpyCommand; import me.totalfreedom.tfguilds.command.GuildCommand; import me.totalfreedom.tfguilds.command.TFGuildsCommand; import me.totalfreedom.tfguilds.config.Config; @@ -49,6 +50,7 @@ public final class TFGuilds extends JavaPlugin this.getCommand("guild").setExecutor(new GuildCommand()); this.getCommand("guildchat").setExecutor(new GuildChatCommand()); this.getCommand("tfguilds").setExecutor(new TFGuildsCommand()); + this.getCommand("guildchatspy").setExecutor(new GuildChatSpyCommand()); } private void loadListeners() diff --git a/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java b/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java index fedeaf7..4d36a2c 100644 --- a/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java +++ b/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java @@ -26,7 +26,7 @@ public class TFMBridge final Plugin tfm = plugin.getServer().getPluginManager().getPlugin("TotalFreedomMod"); if (tfm != null && tfm instanceof TotalFreedomMod) { - tfmPlugin = (TotalFreedomMod) tfm; + tfmPlugin = (TotalFreedomMod)tfm; } } catch (Exception ex) diff --git a/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java index 607daee..fd9d967 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java @@ -17,7 +17,10 @@ public class AddModSubcommand extends Common implements CommandExecutor public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length == 1 || args.length > 3) + { return false; + } + if (args.length == 3) { if (!plugin.bridge.isAdmin(sender)) @@ -25,77 +28,91 @@ public class AddModSubcommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } + Guild guild = Guild.getGuild(args[1]); if (guild == null) { sender.sendMessage(ChatColor.RED + "That guild doesn't exist!"); return true; } + Player player = Bukkit.getPlayer(args[2]); if (player == null) { sender.sendMessage(PNF); return true; } + if (!guild.hasMember(player.getName())) { sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!"); return true; } + if (guild.getOwner().equals(player.getName())) { sender.sendMessage(ChatColor.RED + "No need to make the owner a moderator!"); return true; } + if (guild.hasModerator(player.getName())) { sender.sendMessage(ChatColor.RED + "This member is already a moderator for this guild!"); return true; } + guild.addModerator(player.getName()); sender.sendMessage(tl(PREFIX + "Added %s%" + player.getName() + "%p% as a moderator for %s%" + GUtil.colorize(guild.getName()) + "%p%.")); guild.broadcast(tl("%s%" + player.getName() + " %p%has been made a moderator of your guild.")); guild.save(); return true; } + if (sender instanceof ConsoleCommandSender) { sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (!guild.getOwner().equals(player.getName())) { sender.sendMessage(ChatColor.RED + "You can't change who is a moderator in your guild!"); return true; } + Player n = Bukkit.getPlayer(args[1]); if (n == null) { sender.sendMessage(PNF); return true; } + if (guild.getOwner().equals(n.getName())) { sender.sendMessage(ChatColor.RED + "No need to make yourself a moderator!"); return true; } + if (!guild.hasMember(n.getName())) { sender.sendMessage(ChatColor.RED + "This player is not in your guild!"); return true; } + if (guild.hasModerator(n.getName())) { sender.sendMessage(ChatColor.RED + "This member is already a moderator for your guild!"); return true; } + guild.addModerator(n.getName()); sender.sendMessage(tl(PREFIX + "Added %s%" + n.getName() + "%p% as a moderator for your guild.")); guild.broadcast(tl("%s%" + n.getName() + " %p%has been made a moderator of your guild.")); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java index 30cf988..5a1f1e2 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java @@ -20,25 +20,29 @@ public class ChatSubcommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (args.length >= 2) { String message = StringUtils.join(args, " ", 1, args.length); guild.chat(player.getName(), message); return true; } + if (IN_GUILD_CHAT.contains(player)) { IN_GUILD_CHAT.remove(player); sender.sendMessage(tl("%p%Guild chat toggled off.")); return true; } + IN_GUILD_CHAT.add(player); sender.sendMessage(tl("%p%Guild chat toggled on.")); return true; diff --git a/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java index 35a4f1c..931baba 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java @@ -2,7 +2,6 @@ package me.totalfreedom.tfguilds.command; import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.guild.Guild; -import me.totalfreedom.tfguilds.util.GUtil; import org.apache.commons.lang3.StringUtils; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -21,26 +20,33 @@ public class CreateRankSubcommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } + if (args.length < 2) + { return false; - Player player = (Player) sender; + } + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (!guild.getOwner().equals(player.getName())) { sender.sendMessage(ChatColor.RED + "You can't create ranks for your guild!"); return true; } + String rank = StringUtils.join(args, " ", 1, args.length); if (guild.hasRank(rank)) { sender.sendMessage(ChatColor.RED + "A rank of that name already exists in the guild!"); return true; } + guild.addRank(rank); sender.sendMessage(tl(PREFIX + "Created a new rank named %s%" + rank + "%p% for your guild.")); guild.save(); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java index c682767..94b0afb 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java @@ -27,9 +27,11 @@ public class CreateSubcommand extends Common implements CommandExecutor } if (args.length < 2) + { return false; + } - Player player = (Player) sender; + Player player = (Player)sender; String name = StringUtils.join(args, " ", 1, args.length); String identifier = GUtil.flatten(name); @@ -77,4 +79,4 @@ public class CreateSubcommand extends Common implements CommandExecutor Bukkit.broadcastMessage(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/DeleteRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java index 9090502..e328472 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java @@ -20,26 +20,33 @@ public class DeleteRankSubcommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } + if (args.length < 2) + { return false; - Player player = (Player) sender; + } + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (!guild.getOwner().equals(player.getName())) { sender.sendMessage(ChatColor.RED + "You can't delete ranks from your guild!"); return true; } + String rank = StringUtils.join(args, " ", 1, args.length); if (!guild.hasRank(rank)) { sender.sendMessage(ChatColor.RED + "A rank of that name does not exist in the guild!"); return true; } + guild.removeRank(rank); sender.sendMessage(tl(PREFIX + "Deleted the rank named %s%" + rank + "%p% in your guild.")); guild.save(); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java index 5fca6cc..3752841 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java @@ -18,8 +18,10 @@ public class DisbandSubcommand extends Common implements CommandExecutor public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length > 2) + { return false; - + } + if (args.length == 2) { if (!plugin.bridge.isAdmin(sender)) @@ -49,7 +51,7 @@ public class DisbandSubcommand extends Common implements CommandExecutor return true; } - Player player = (Player) sender; + Player player = (Player)sender; if (!Guild.isInGuild(player)) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java index 9b90910..7a035c8 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java @@ -20,25 +20,29 @@ public class GuildChatCommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (args.length >= 1) { String message = StringUtils.join(args, " ", 0, args.length); guild.chat(player.getName(), message); return true; } + if (IN_GUILD_CHAT.contains(player)) { IN_GUILD_CHAT.remove(player); sender.sendMessage(tl("%p%Guild chat toggled off.")); return true; } + IN_GUILD_CHAT.add(player); sender.sendMessage(tl("%p%Guild chat toggled on.")); return true; diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildChatSpyCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildChatSpyCommand.java new file mode 100644 index 0000000..a05960e --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildChatSpyCommand.java @@ -0,0 +1,39 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +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 GuildChatSpyCommand 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; + } + + if (!plugin.bridge.isAdmin(sender)) + { + sender.sendMessage(NO_PERMS); + return true; + } + + Player player = (Player)sender; + if (CHAT_SPY.contains(player)) + { + CHAT_SPY.remove(player); + sender.sendMessage(tl(PREFIX + "%p%Global guild chat spy disabled.")); + return true; + } + + CHAT_SPY.add(player); + sender.sendMessage(tl(PREFIX + "%p%Global guild chat spy enabled.")); + 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 3f4f946..2965ebd 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java @@ -14,29 +14,52 @@ public class GuildCommand extends Common implements CommandExecutor { switch (args[0].toLowerCase()) { - case "list": return new ListSubcommand().onCommand(sender, command, label, args); - case "help": return new HelpSubcommand().onCommand(sender, command, label, args); - case "create": return new CreateSubcommand().onCommand(sender, command, label, args); - case "disband": return new DisbandSubcommand().onCommand(sender, command, label, args); - case "invite": return new InviteSubcommand().onCommand(sender, command, label, args); - case "addmod": return new AddModSubcommand().onCommand(sender, command, label, args); - case "removemod": return new RemoveModSubcommand().onCommand(sender, command, label, args); - case "setowner": return new SetOwnerSubcommand().onCommand(sender, command, label, args); - case "setstate": return new SetStateSubcommand().onCommand(sender, command, label, args); - case "kick": return new KickSubcommand().onCommand(sender, command, label, args); - case "leave": return new LeaveSubcommand().onCommand(sender, command, label, args); - case "tp": return new TPSubcommand().onCommand(sender, command, label, args); - case "info": return new InfoSubcommand().onCommand(sender, command, label, args); - case "tag": return new TagSubcommand().onCommand(sender, command, label, args); - case "chat": return new ChatSubcommand().onCommand(sender, command, label, args); - case "join": return new JoinSubcommand().onCommand(sender, command, label, args); - case "rename": return new RenameSubcommand().onCommand(sender, command, label, args); - case "createrank": return new CreateRankSubcommand().onCommand(sender, command, label, args); - case "deleterank": return new DeleteRankSubcommand().onCommand(sender, command, label, args); - case "setrank": return new SetRankSubcommand().onCommand(sender, command, label, args); - case "motd": return new MOTDSubcommand().onCommand(sender, command, label, args); - case "home": return new HomeSubcommand().onCommand(sender, command, label, args); - case "roster": return new RosterSubcommand().onCommand(sender, command, label, args); + case "list": + return new ListSubcommand().onCommand(sender, command, label, args); + case "help": + return new HelpSubcommand().onCommand(sender, command, label, args); + case "create": + return new CreateSubcommand().onCommand(sender, command, label, args); + case "disband": + return new DisbandSubcommand().onCommand(sender, command, label, args); + case "invite": + return new InviteSubcommand().onCommand(sender, command, label, args); + case "addmod": + return new AddModSubcommand().onCommand(sender, command, label, args); + case "removemod": + return new RemoveModSubcommand().onCommand(sender, command, label, args); + case "setowner": + return new SetOwnerSubcommand().onCommand(sender, command, label, args); + case "setstate": + return new SetStateSubcommand().onCommand(sender, command, label, args); + case "kick": + return new KickSubcommand().onCommand(sender, command, label, args); + case "leave": + return new LeaveSubcommand().onCommand(sender, command, label, args); + case "tp": + return new TPSubcommand().onCommand(sender, command, label, args); + case "info": + return new InfoSubcommand().onCommand(sender, command, label, args); + case "tag": + return new TagSubcommand().onCommand(sender, command, label, args); + case "chat": + return new ChatSubcommand().onCommand(sender, command, label, args); + case "join": + return new JoinSubcommand().onCommand(sender, command, label, args); + case "rename": + return new RenameSubcommand().onCommand(sender, command, label, args); + case "createrank": + return new CreateRankSubcommand().onCommand(sender, command, label, args); + case "deleterank": + return new DeleteRankSubcommand().onCommand(sender, command, label, args); + case "setrank": + return new SetRankSubcommand().onCommand(sender, command, label, args); + case "motd": + return new MOTDSubcommand().onCommand(sender, command, label, args); + case "home": + return new HomeSubcommand().onCommand(sender, command, label, args); + case "roster": + return new RosterSubcommand().onCommand(sender, command, label, args); } return false; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java index 3af3de1..cc29894 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java @@ -17,19 +17,24 @@ public class HomeSubcommand extends Common implements CommandExecutor public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length > 2) + { return false; + } + if (sender instanceof ConsoleCommandSender) { sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (args.length == 2) { if (args[1].equalsIgnoreCase("set")) @@ -39,6 +44,7 @@ public class HomeSubcommand extends Common implements CommandExecutor sender.sendMessage(ChatColor.RED + "You can't modify your guild's home!"); return true; } + guild.setHome(player.getLocation()); guild.save(); sender.sendMessage(tl(PREFIX + "Set your current location as the new home of your guild%p%.")); @@ -46,11 +52,13 @@ public class HomeSubcommand extends Common implements CommandExecutor } return false; } + if (!guild.hasHome()) { sender.sendMessage(ChatColor.RED + "Your guild doesn't have a home!"); return true; } + player.teleport(guild.getHome()); sender.sendMessage(tl("%p%Teleported you to your guild's home!")); return true; diff --git a/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java index 97d6706..938ab2a 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java @@ -29,26 +29,31 @@ public class InfoSubcommand extends Common implements CommandExecutor return true; } } + Guild guild = Guild.getGuild(GUtil.flatten(StringUtils.join(args, " ", 1, args.length))); if (guild == null) { sender.sendMessage(ChatColor.RED + "That guild doesn't exist!"); return true; } + sender.sendMessage(guild.getInformation()); return true; } + if (sender instanceof ConsoleCommandSender) { sender.sendMessage(NO_PERMS); return true; } - Guild guild = Guild.getGuild((Player) sender); + + Guild guild = Guild.getGuild((Player)sender); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + sender.sendMessage(guild.getInformation()); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java index 66e5f89..fd60780 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java @@ -23,11 +23,13 @@ public class InviteSubcommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } - + if (args.length != 2) + { return false; - - Player player = (Player) sender; + } + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); Player invitee = Bukkit.getPlayer(args[1]); if (invitee == null) @@ -35,37 +37,37 @@ public class InviteSubcommand extends Common implements CommandExecutor sender.sendMessage(PNF); return true; } - + if (Guild.getGuild(invitee) != null) { sender.sendMessage(ChatColor.RED + "This player is already in another guild!"); return true; } - + if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } - + if (guild.getState() == GuildState.CLOSED) { sender.sendMessage(ChatColor.RED + "The guild is currently closed!"); return true; } - + if (guild.getState() == GuildState.OPEN) { sender.sendMessage(ChatColor.RED + "The guild is open! Tell your friend to join using \"/g join\"!"); return true; } - + if (INVITES.containsKey(invitee)) { sender.sendMessage(ChatColor.RED + "They have already been invited to your guild!"); return true; } - + INVITES.put(invitee, guild); invitee.sendMessage(tl("%p%You have been invited to join %s%" + GUtil.colorize(guild.getName()) + "%p% through %s%" + player.getName() + "%p%'s invite!")); invitee.sendMessage(tl("%p%Do %s%/g join " + ChatColor.stripColor(GUtil.colorize(guild.getName())) + "%p% to join!")); @@ -76,7 +78,9 @@ public class InviteSubcommand extends Common implements CommandExecutor public void run() { if (!INVITES.containsKey(invitee)) + { return; + } INVITES.remove(player); invitee.sendMessage(ChatColor.RED + "Invite expired."); sender.sendMessage(ChatColor.RED + "Invite expired."); @@ -84,4 +88,4 @@ public class InviteSubcommand extends Common implements CommandExecutor }.runTaskLater(plugin, 20 * 90); return true; } -} +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java index 81cae35..bd6e52e 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java @@ -22,25 +22,32 @@ public class JoinSubcommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } + if (args.length < 2) + { return false; - Player player = (Player) sender; + } + + Player player = (Player)sender; if (Guild.getGuild(player) != null) { sender.sendMessage(ChatColor.RED + "You are already in a guild!"); return true; } + Guild guild = Guild.getGuild(GUtil.flatten(StringUtils.join(args, " ", 1, args.length))); if (guild == null) { sender.sendMessage(ChatColor.RED + "That guild doesn't exist!"); return true; } + if (guild.getState() == GuildState.CLOSED) { sender.sendMessage(ChatColor.RED + "That guild is currently closed!"); return true; } + if (guild.getState() == GuildState.INVITE_ONLY) { if (!INVITES.containsKey(player)) @@ -50,6 +57,7 @@ public class JoinSubcommand extends Common implements CommandExecutor } INVITES.remove(player); } + guild.addMember(player.getName()); guild.broadcast(tl("%s%" + player.getName() + " %p%has joined your guild!")); guild.save(); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java index 83f1f0e..5536269 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java @@ -17,7 +17,10 @@ public class KickSubcommand extends Common implements CommandExecutor public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length > 3) + { return false; + } + if (args.length == 3) { if (!plugin.bridge.isAdmin(sender)) @@ -25,28 +28,33 @@ public class KickSubcommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } + Guild guild = Guild.getGuild(args[1]); if (guild == null) { sender.sendMessage(ChatColor.RED + "That guild doesn't exist!"); return true; } + Player player = Bukkit.getPlayer(args[2]); if (player == null) { sender.sendMessage(PNF); return true; } + if (!guild.hasMember(player.getName())) { sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!"); return true; } + if (guild.getOwner().equals(player.getName()) || guild.hasModerator(player.getName())) { sender.sendMessage(ChatColor.RED + "You cannot kick the owner/moderator(s) of a guild!"); return true; } + guild.removeMember(player.getName()); sender.sendMessage(tl(PREFIX + "Kicked %s%" + player.getName() + "%p% from %s%" + GUtil.colorize(guild.getName()) + "%p%.")); player.sendMessage(tl("%s%You have been kicked from your guild.")); @@ -54,44 +62,52 @@ public class KickSubcommand extends Common implements CommandExecutor guild.save(); return true; } + if (sender instanceof ConsoleCommandSender) { sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (!guild.hasModerator(player.getName())) { sender.sendMessage(ChatColor.RED + "You can't kick people from your guild!"); return true; } + Player n = Bukkit.getPlayer(args[1]); if (n == null) { sender.sendMessage(PNF); return true; } + if (guild.getOwner().equals(n.getName())) { sender.sendMessage(ChatColor.RED + "No need to make yourself a moderator!"); return true; } + if (!guild.hasMember(n.getName())) { sender.sendMessage(ChatColor.RED + "This player is not in your guild!"); return true; } + if ((guild.getOwner().equals(n.getName()) || guild.hasModerator(n.getName())) && !guild.getOwner().equals(player.getName())) { sender.sendMessage(ChatColor.RED + "You cannot kick the owner/moderator(s) of a guild!"); return true; } + guild.removeMember(n.getName()); sender.sendMessage(tl(PREFIX + "Kicked %s%" + n.getName() + "%p% from your guild.")); n.sendMessage(tl("%s%You have been kicked from your guild.")); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java index ef3330f..812d924 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java @@ -15,24 +15,30 @@ public class LeaveSubcommand extends Common implements CommandExecutor public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length > 1) + { return false; + } + if (sender instanceof ConsoleCommandSender) { sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (guild.getOwner().equals(player.getName())) { sender.sendMessage(ChatColor.RED + "You cannot leave as you are the owner!"); return true; } + guild.removeModerator(player.getName()); guild.removeMember(player.getName()); guild.save(); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java index ac8ec67..a0eae58 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java @@ -2,10 +2,8 @@ package me.totalfreedom.tfguilds.command; import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.guild.Guild; -import me.totalfreedom.tfguilds.guild.GuildRank; import me.totalfreedom.tfguilds.util.GUtil; import org.apache.commons.lang3.StringUtils; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -19,24 +17,30 @@ public class MOTDSubcommand extends Common implements CommandExecutor public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length == 1) + { return false; + } + if (sender instanceof ConsoleCommandSender) { sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (!guild.hasModerator(player.getName())) { sender.sendMessage(ChatColor.RED + "You can't modify your guild's MOTD!"); return true; } + if (args.length >= 3) { if (args[1].equalsIgnoreCase("set")) @@ -49,8 +53,12 @@ public class MOTDSubcommand extends Common implements CommandExecutor } return false; } + if (!args[1].equalsIgnoreCase("clear")) + { return false; + } + guild.setMotd(null); guild.save(); sender.sendMessage(tl(PREFIX + "Cleared your guild's MOTD.")); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java index a041570..ef9e7af 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java @@ -17,7 +17,10 @@ public class RemoveModSubcommand extends Common implements CommandExecutor public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length == 1 || args.length > 3) + { return false; + } + if (args.length == 3) { if (!plugin.bridge.isAdmin(sender)) @@ -25,67 +28,79 @@ public class RemoveModSubcommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } + Guild guild = Guild.getGuild(args[1]); if (guild == null) { sender.sendMessage(ChatColor.RED + "That guild doesn't exist!"); return true; } + Player player = Bukkit.getPlayer(args[2]); if (player == null) { sender.sendMessage(PNF); return true; } + if (!guild.hasMember(player.getName())) { sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!"); return true; } + if (!guild.hasModerator(player.getName())) { sender.sendMessage(ChatColor.RED + "This member is not a moderator for this guild!"); return true; } + guild.removeModerator(player.getName()); sender.sendMessage(tl(PREFIX + "Removed %s%" + player.getName() + "%p% as a moderator for %s%" + GUtil.colorize(guild.getName()) + "%p%.")); guild.broadcast(tl("%s%" + player.getName() + " %p%has been made a member of your guild.")); guild.save(); return true; } + if (sender instanceof ConsoleCommandSender) { sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (!guild.getOwner().equals(player.getName())) { sender.sendMessage(ChatColor.RED + "You can't change who is a moderator in your guild!"); return true; } + Player n = Bukkit.getPlayer(args[1]); if (n == null) { sender.sendMessage(PNF); return true; } + if (!guild.hasMember(n.getName())) { sender.sendMessage(ChatColor.RED + "This player is not in your guild!"); return true; } + if (!guild.hasModerator(n.getName())) { sender.sendMessage(ChatColor.RED + "This member is not a moderator for your guild!"); return true; } + guild.removeModerator(n.getName()); sender.sendMessage(tl(PREFIX + "Removed %s%" + n.getName() + "%p% as a moderator for your guild.")); guild.broadcast(tl("%s%" + n.getName() + " %p%has been made a member of your guild.")); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java index f7c0b1e..dad1a80 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java @@ -20,13 +20,17 @@ public class RenameSubcommand extends Common implements CommandExecutor public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length < 2) + { return false; + } + if (sender instanceof ConsoleCommandSender) { sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); String newName = StringUtils.join(args, " ", 1, args.length); String identifier = GUtil.flatten(newName); @@ -35,6 +39,7 @@ public class RenameSubcommand extends Common implements CommandExecutor sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (!guild.getOwner().equals(player.getName())) { sender.sendMessage(ChatColor.RED + "You can't change the name of your guild!"); @@ -67,6 +72,7 @@ public class RenameSubcommand extends Common implements CommandExecutor } } } + guild.disband(); guild.setIdentifier(GUtil.flatten(newName)); guild.setName(newName); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java index 6d45c93..03be36f 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java @@ -47,7 +47,7 @@ public class RosterSubcommand extends Common implements CommandExecutor return true; } - Guild guild = Guild.getGuild((Player) sender); + Guild guild = Guild.getGuild((Player)sender); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java index e37805b..02a1629 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java @@ -17,7 +17,10 @@ public class SetOwnerSubcommand extends Common implements CommandExecutor public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length == 1 || args.length > 3) + { return false; + } + if (args.length == 3) { if (!plugin.bridge.isAdmin(sender)) @@ -25,23 +28,27 @@ public class SetOwnerSubcommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } + Guild guild = Guild.getGuild(args[1]); if (guild == null) { sender.sendMessage(ChatColor.RED + "That guild doesn't exist!"); return true; } + Player player = Bukkit.getPlayer(args[2]); if (player == null) { sender.sendMessage(PNF); return true; } + if (!guild.hasMember(player.getName())) { sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!"); return true; } + guild.removeModerator(player.getName()); guild.setOwner(player.getName()); sender.sendMessage(tl(PREFIX + "Ownership has been transferred to %s%" + player.getName() + "%p% in %s%" + GUtil.colorize(guild.getName()) + "%p%.")); @@ -49,34 +56,40 @@ public class SetOwnerSubcommand extends Common implements CommandExecutor guild.save(); return true; } + if (sender instanceof ConsoleCommandSender) { sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (!guild.getOwner().equals(player.getName())) { sender.sendMessage(ChatColor.RED + "You can't change who is the owner of your guild!"); return true; } + Player n = Bukkit.getPlayer(args[1]); if (n == null) { sender.sendMessage(PNF); return true; } + if (!guild.hasMember(n.getName())) { sender.sendMessage(ChatColor.RED + "This player is not in your guild!"); return true; } + guild.removeModerator(n.getName()); guild.setOwner(n.getName()); sender.sendMessage(tl(PREFIX + "Ownership has been transferred to %s%" + n.getName() + "%p% in your guild.")); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java index 783d9c9..80db8f8 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java @@ -18,55 +18,71 @@ public class SetRankSubcommand extends Common implements CommandExecutor public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length == 1) + { return false; + } + if (sender instanceof ConsoleCommandSender) { sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (!guild.hasModerator(player.getName())) { sender.sendMessage(ChatColor.RED + "You can't change the ranks of your guild members!"); return true; } + Player r = Bukkit.getPlayer(args[1]); if (r == null) { sender.sendMessage(PNF); return true; } + if (!guild.hasMember(r.getName())) { sender.sendMessage(ChatColor.RED + "This player is not in your guild!"); return true; } + String name = StringUtils.join(args, " ", 2, args.length); if (name.toLowerCase().equals("members") || name.toLowerCase().equals("member") || name.toLowerCase().equals("none")) { for (GuildRank gr : guild.getRanks()) + { gr.getMembers().remove(r.getName()); + } + sender.sendMessage(tl(PREFIX + "Removed the rank of %s%" + r.getName() + "%p% in your guild.")); r.sendMessage(tl("%p%Your rank in your guild has been removed.")); guild.save(); return true; } + GuildRank rank = guild.getRank(name); if (rank == null) { sender.sendMessage(ChatColor.RED + "A rank of that name does not exist in the guild!"); return true; } + for (GuildRank gr : guild.getRanks()) + { gr.getMembers().remove(r.getName()); + } + rank.getMembers().add(r.getName()); sender.sendMessage(tl(PREFIX + "Set the rank of %s%" + r.getName() + "%p% in your guild to %s%" + rank.getName() + "%p%.")); r.sendMessage(tl("%p%Your rank in your guild has been set to %s%" + rank.getName() + "%p%.")); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java index 07ee264..4b484ba 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java @@ -23,47 +23,55 @@ public class SetStateSubcommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } + Guild guild = Guild.getGuild(args[1]); if (guild == null) { sender.sendMessage(ChatColor.RED + "That guild doesn't exist!"); return true; } + GuildState state = GuildState.findState(args[2]); if (state == null) { sender.sendMessage(ChatColor.RED + "That is not a valid state!"); return true; } + guild.setState(state); sender.sendMessage(tl(PREFIX + "Set the guild state to %s%" + state.getDisplay().toLowerCase() + "%p% in %s%" + GUtil.colorize(guild.getName()) + "%p%.")); guild.broadcast(tl("%p%The guild is now %s%" + state.getDisplay().toLowerCase() + "%p%.")); guild.save(); return true; } + if (sender instanceof ConsoleCommandSender) { sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + if (!guild.hasModerator(player.getName())) { sender.sendMessage(ChatColor.RED + "You can't change the state of the guild!"); return true; } + GuildState state = GuildState.findState(args[1]); if (state == null) { sender.sendMessage(ChatColor.RED + "That is not a valid state!"); return true; } + guild.setState(state); sender.sendMessage(tl(PREFIX + "Set the guild state to %s%" + state.getDisplay().toLowerCase() + "%p% in your guild.")); guild.broadcast(tl("%p%The guild is now %s%" + state.getDisplay().toLowerCase() + "%p%.")); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java index 3e32cd2..188682e 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java @@ -16,7 +16,10 @@ public class TFGuildsCommand extends Common implements CommandExecutor public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length > 1) + { return false; + } + if (args.length == 1) { if (args[0].toLowerCase().equals("reload")) @@ -26,6 +29,7 @@ public class TFGuildsCommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } + try { plugin.config.load(); @@ -40,8 +44,8 @@ public class TFGuildsCommand extends Common implements CommandExecutor } return true; } - } + sender.sendMessage(tl("%p%TFGuilds %s%is a plugin which allows for players to make their own guilds, providing guild chat, guild teleportation, and more.")); sender.sendMessage(tl("%s%Version %p%v" + plugin.getDescription().getVersion())); OfflinePlayer sp = Bukkit.getOfflinePlayer(UUID.fromString("d018f2b8-ce60-4672-a45f-e580e0331299")); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java index 6daccf6..40ffdb2 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java @@ -20,26 +20,33 @@ public class TPSubcommand extends Common implements CommandExecutor sender.sendMessage(NO_PERMS); return true; } + if (args.length != 2) + { return false; - Player player = (Player) sender; + } + + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } + Player to = Bukkit.getPlayer(args[1]); if (to == null) { sender.sendMessage(PNF); return true; } + if (!guild.getMembers().contains(to.getName())) { sender.sendMessage(ChatColor.RED + "That player is not in your guild."); return true; } + player.teleport(to.getLocation()); sender.sendMessage(tl("%p%Teleported to %s%" + to.getName() + "%p%.")); to.sendMessage(tl("%s%" + sender.getName() + " %p%has teleported to you.")); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java index 186e50e..bdde8b7 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java @@ -23,9 +23,11 @@ public class TagSubcommand extends Common implements CommandExecutor } if (args.length < 2) + { return false; + } - Player player = (Player) sender; + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild == null) { diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java index 099f229..a2f91b4 100644 --- a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java +++ b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java @@ -95,7 +95,9 @@ public class Guild plugin.guilds.set(identifier + ".tag", tag); plugin.guilds.set(identifier + ".state", state.name()); for (GuildRank rank : ranks) + { rank.set(); + } plugin.guilds.set(identifier + ".motd", motd); plugin.guilds.set(identifier + ".home", home); plugin.guilds.set(identifier + ".creation", creation); @@ -111,7 +113,10 @@ public class Guild { Player player = Bukkit.getPlayer(name); if (player != null) + { Common.IN_GUILD_CHAT.remove(player); + } + members.remove(name); moderators.remove(name); } @@ -134,7 +139,10 @@ public class Guild public boolean hasModerator(String name) { if (owner.equals(name)) + { return true; + } + return moderators.contains(name); } @@ -149,10 +157,16 @@ public class Guild for (GuildRank rank : ranks) { if (GUtil.flatten(name).equals(rank.getIdentifier())) + { remove = rank; + } } + if (remove == null) + { return; + } + remove.delete(); ranks.remove(remove); } @@ -162,7 +176,9 @@ public class Guild for (GuildRank rank : ranks) { if (GUtil.flatten(name).equals(rank.getIdentifier())) + { return true; + } } return false; } @@ -172,7 +188,9 @@ public class Guild for (GuildRank rank : ranks) { if (GUtil.flatten(name).equals(rank.getIdentifier())) + { return rank; + } } return null; } @@ -209,7 +227,9 @@ public class Guild for (String member : members) { if (member.equals(owner) || moderators.contains(member)) + { continue; + } only.add(member); } return only; @@ -219,7 +239,9 @@ public class Guild { List names = new ArrayList<>(); for (GuildRank rank : ranks) + { names.add(rank.getName()); + } return names; } @@ -267,6 +289,14 @@ public class Guild { broadcast(Common.tl("%s%[%p%Guild Chat %s%| %p%" + GUtil.colorize(name) + "%s%] %p%" + as + ChatColor.WHITE + ": %p%" + msg)); GLog.info(Common.tl("%s%[%p%Guild Chat %s%| %p%" + GUtil.colorize(name) + "%s%] %p%" + as + ChatColor.WHITE + ": %p%" + msg)); + + for (Player player : Bukkit.getOnlinePlayers()) + { + if (Common.CHAT_SPY.contains(player)) + { + player.sendMessage(GUtil.colorize("&7[GUILD CHAT SPY | " + GUtil.colorize(name) + "] " + as + ": " + msg)); + } + } } public void disband() @@ -275,7 +305,9 @@ public class Guild { Player player = Bukkit.getPlayer(member); if (player == null) + { continue; + } Common.IN_GUILD_CHAT.remove(player); } plugin.guilds.set(identifier, null); @@ -296,7 +328,10 @@ public class Guild public static Guild createGuild(String identifier, String name, Player owner) { if (plugin.guilds.contains(identifier)) + { return getGuild(identifier); + } + Guild guild = new Guild(identifier, name, owner.getName(), @@ -316,7 +351,10 @@ public class Guild public static Guild getGuild(String identifier) { if (!plugin.guilds.contains(identifier)) + { return null; + } + List ranks = new ArrayList<>(); ConfigurationSection rankcs = plugin.guilds.getConfigurationSection(identifier + ".ranks"); if (rankcs != null) @@ -327,6 +365,7 @@ public class Guild plugin.guilds.getStringList(identifier + ".ranks." + key + ".members"))); } } + return new Guild(identifier, plugin.guilds.getString(identifier + ".name"), plugin.guilds.getString(identifier + ".owner"), @@ -347,7 +386,9 @@ public class Guild { Guild kg = getGuild(key); if (kg.getMembers().contains(player.getName())) + { guild = kg; + } } return guild; } @@ -363,7 +404,9 @@ public class Guild { Guild guild = getGuild(key); if (guild.getMembers().contains(player.getName())) + { return true; + } } return false; } diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/GuildState.java b/src/main/java/me/totalfreedom/tfguilds/guild/GuildState.java index 5013dba..1e69972 100644 --- a/src/main/java/me/totalfreedom/tfguilds/guild/GuildState.java +++ b/src/main/java/me/totalfreedom/tfguilds/guild/GuildState.java @@ -19,7 +19,10 @@ public enum GuildState public static GuildState findState(String string) { if (string == null) + { return null; + } + switch (string.toLowerCase()) { case "open": diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java index 0e61c64..d166b0e 100644 --- a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java +++ b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java @@ -18,16 +18,20 @@ public class ChatListener implements Listener Player player = e.getPlayer(); Guild guild = Guild.getGuild(player); if (guild == null) + { return; + } + if (Common.IN_GUILD_CHAT.contains(player)) { guild.chat(player.getName(), e.getMessage()); e.setCancelled(true); return; } + if (guild.hasTag()) { e.setFormat(GUtil.colorize(guild.getTag()) + ChatColor.RESET + " " + e.getFormat()); } } -} +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/JoinListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/JoinListener.java index 7161be3..1aabd3d 100644 --- a/src/main/java/me/totalfreedom/tfguilds/listener/JoinListener.java +++ b/src/main/java/me/totalfreedom/tfguilds/listener/JoinListener.java @@ -15,10 +15,13 @@ public class JoinListener implements Listener Player player = e.getPlayer(); Guild guild = Guild.getGuild(player); if (guild == null) + { return; + } + if (guild.hasMOTD()) { player.sendMessage(GUtil.colorize(guild.getMotd())); } } -} +} \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index a0d0462..37cc75e 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -2,7 +2,6 @@ name: TFGuilds version: ${project.version} main: me.totalfreedom.tfguilds.TFGuilds api-version: 1.16 -softdepend: [TotalFreedomMod] authors: [speed, super] description: A guilds plugin for the TotalFreedom server. commands: @@ -17,4 +16,8 @@ commands: tfguilds: description: Information about the plugin. usage: / - aliases: [tfg] \ No newline at end of file + aliases: [tfg] + guildchatspy: + description: An admin only command which allows for spying on guild chat. + usage: / + aliases: [gchatspy, gcs] \ No newline at end of file