From 6dfe38178712654c9be00823650e2c7b73b23d61 Mon Sep 17 00:00:00 2001 From: Super_ Date: Sun, 12 Jul 2020 20:40:11 -0400 Subject: [PATCH] complete overhaul --- TFGuilds.iml | 34 +-- pom.xml | 30 ++- .../java/me/totalfreedom/tfguilds/Common.java | 30 +++ .../me/totalfreedom/tfguilds/TFGuilds.java | 57 ++-- .../tfguilds/bridge/TFMBridge.java | 16 +- .../tfguilds/command/AddModSubcommand.java | 103 ++++++++ .../tfguilds/command/ChatSubcommand.java | 46 ++++ .../tfguilds/command/CreateGuildCommand.java | 84 ------ .../tfguilds/command/CreateSubcommand.java | 41 +++ .../tfguilds/command/DisbandGuildCommand.java | 56 ---- .../tfguilds/command/DisbandSubcommand.java | 57 ++++ .../tfguilds/command/GuildAdminCommand.java | 85 ------ .../tfguilds/command/GuildChatCommand.java | 42 +-- .../tfguilds/command/GuildCommand.java | 39 +++ .../tfguilds/command/GuildInfoCommand.java | 70 ----- .../tfguilds/command/GuildKickCommand.java | 86 ------ .../tfguilds/command/GuildListCommand.java | 31 --- .../command/GuildRemoveModeratorCommand.java | 86 ------ .../command/GuildSetModeratorCommand.java | 86 ------ .../tfguilds/command/GuildTagCommand.java | 70 ----- .../command/GuildTeleportCommand.java | 58 ----- .../tfguilds/command/HelpSubcommand.java | 29 +++ .../tfguilds/command/InfoSubcommand.java | 44 ++++ .../tfguilds/command/InviteGuildCommand.java | 85 ------ .../tfguilds/command/InviteSubcommand.java | 78 ++++++ .../tfguilds/command/JoinSubcommand.java | 58 +++++ .../tfguilds/command/KickSubcommand.java | 100 +++++++ .../tfguilds/command/LeaveGuildCommand.java | 66 ----- .../tfguilds/command/LeaveSubcommand.java | 43 +++ .../tfguilds/command/ListSubcommand.java | 44 ++++ .../tfguilds/command/RemoveModSubcommand.java | 93 +++++++ .../command/SaveConfigSubcommand.java | 32 +++ .../tfguilds/command/SetOwnerSubcommand.java | 85 ++++++ .../tfguilds/command/SetStateSubcommand.java | 73 ++++++ .../tfguilds/command/TFGuildsCommand.java | 26 ++ .../tfguilds/command/TPSubcommand.java | 48 ++++ .../tfguilds/command/TagSubcommand.java | 57 ++++ .../tfguilds/command/TfGuildsCommand.java | 50 ---- .../totalfreedom/tfguilds/config/Config.java | 4 +- .../tfguilds/config/ConfigEntry.java | 24 ++ .../me/totalfreedom/tfguilds/guild/Guild.java | 226 ++++++++++++++++ .../tfguilds/guild/GuildState.java | 36 +++ .../tfguilds/listener/ChatListener.java | 31 +++ .../tfguilds/listener/ChatManager.java | 31 --- .../me/totalfreedom/tfguilds/util/GBase.java | 8 - .../me/totalfreedom/tfguilds/util/GLog.java | 20 +- .../totalfreedom/tfguilds/util/GMessage.java | 14 - .../me/totalfreedom/tfguilds/util/GUtil.java | 244 ++---------------- src/main/resources/config.yml | 7 + src/main/resources/plugin.yml | 69 +---- 50 files changed, 1597 insertions(+), 1335 deletions(-) create mode 100644 src/main/java/me/totalfreedom/tfguilds/Common.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/CreateGuildCommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/DisbandGuildCommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/GuildAdminCommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/GuildInfoCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/GuildKickCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/GuildListCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/GuildRemoveModeratorCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/GuildSetModeratorCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/GuildTagCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/GuildTeleportCommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/InviteGuildCommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/LeaveGuildCommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SaveConfigSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/TfGuildsCommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/guild/Guild.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/guild/GuildState.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/listener/ChatManager.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/util/GBase.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/util/GMessage.java create mode 100644 src/main/resources/config.yml diff --git a/TFGuilds.iml b/TFGuilds.iml index 9f0e5a6..8955aea 100644 --- a/TFGuilds.iml +++ b/TFGuilds.iml @@ -15,24 +15,28 @@ + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index d641c6d..3d12df7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,16 +4,15 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - me.totalfreedom + TFGuilds TFGuilds - 0.1.8 + 0.2 jar TFGuilds - Plugin which allows for players to make their own guilds on the server + A guilds plugin for the TotalFreedom server. - 1.8 UTF-8 @@ -25,8 +24,8 @@ maven-compiler-plugin 3.7.0 - ${java.version} - ${java.version} + 1.8 + 1.8 @@ -45,6 +44,14 @@ + + org.apache.maven.plugins + maven-jar-plugin + 2.3.1 + + C:\Users\Jax\Desktop\STUFF\116test\plugins + + @@ -60,8 +67,8 @@ https://jitpack.io - spigotmc-repo - https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + bukkit-repo + http://repo.bukkit.org/content/groups/public/ sonatype @@ -71,8 +78,8 @@ - org.spigotmc - spigot-api + org.bukkit + bukkit 1.16.1-R0.1-SNAPSHOT provided @@ -80,7 +87,6 @@ com.github.TFPatches TotalFreedomMod development-SNAPSHOT - provided - \ No newline at end of file + diff --git a/src/main/java/me/totalfreedom/tfguilds/Common.java b/src/main/java/me/totalfreedom/tfguilds/Common.java new file mode 100644 index 0000000..2b66001 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/Common.java @@ -0,0 +1,30 @@ +package me.totalfreedom.tfguilds; + +import me.totalfreedom.tfguilds.config.ConfigEntry; +import me.totalfreedom.tfguilds.guild.Guild; +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Common +{ + protected static TFGuilds plugin = TFGuilds.getPlugin(); + + public static final ChatColor PRIMARY = ConfigEntry.SCHEME_PRIMARY.getChatColor(); + public static final ChatColor SECONDARY = ConfigEntry.SCHEME_SECONDARY.getChatColor(); + public static final String NO_PERMS = ChatColor.RED + "No permission."; + public static final String PREFIX = "%s%[%p%TFGuilds%s%] %p%"; + public static final String PNF = ChatColor.RED + "Player not found."; + + public static Map INVITES = new HashMap<>(); + public static List IN_GUILD_CHAT = new ArrayList<>(); + + public static String tl(String in) + { + return in.replaceAll("%p%", PRIMARY + "").replaceAll("%s%", SECONDARY + ""); + } +} \ 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 4c94a91..f5c6ceb 100644 --- a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java +++ b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java @@ -1,58 +1,53 @@ package me.totalfreedom.tfguilds; import me.totalfreedom.tfguilds.bridge.TFMBridge; -import me.totalfreedom.tfguilds.command.*; +import me.totalfreedom.tfguilds.command.GuildChatCommand; +import me.totalfreedom.tfguilds.command.GuildCommand; +import me.totalfreedom.tfguilds.command.TFGuildsCommand; +import me.totalfreedom.tfguilds.config.Config; +import me.totalfreedom.tfguilds.listener.ChatListener; import me.totalfreedom.tfguilds.util.GLog; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; -import me.totalfreedom.tfguilds.config.Config; -import me.totalfreedom.tfguilds.listener.ChatManager; public final class TFGuilds extends JavaPlugin { - public static TFGuilds plugin; - public TFMBridge tfmb; + private static TFGuilds plugin; + public static TFGuilds getPlugin() + { + return plugin; + } + + public Config config; public Config guilds; + public TFMBridge bridge; @Override public void onEnable() { plugin = this; - enableCommands(); - enableListeners(); - guilds = new Config(plugin, "guilds.yml"); - tfmb = new TFMBridge(); - GLog.info("Enabled"); + config = new Config("config.yml"); + guilds = new Config("guilds.yml"); + bridge = new TFMBridge(); + this.getCommand("guild").setExecutor(new GuildCommand()); + this.getCommand("guildchat").setExecutor(new GuildChatCommand()); + this.getCommand("tfguilds").setExecutor(new TFGuildsCommand()); + loadListeners(); + GLog.info("Enabled " + this.getDescription().getFullName()); } @Override public void onDisable() { + plugin = null; + config.save(); guilds.save(); - GLog.info("Disabled"); + GLog.info("Disabled " + this.getDescription().getFullName()); } - private void enableCommands() - { - this.getCommand("tfguilds").setExecutor(new TfGuildsCommand()); - this.getCommand("createguild").setExecutor(new CreateGuildCommand()); - this.getCommand("guildtag").setExecutor(new GuildTagCommand()); - this.getCommand("guildchat").setExecutor(new GuildChatCommand()); - this.getCommand("disbandguild").setExecutor(new DisbandGuildCommand()); - this.getCommand("guildteleport").setExecutor(new GuildTeleportCommand()); - this.getCommand("inviteguild").setExecutor(new InviteGuildCommand()); - this.getCommand("leaveguild").setExecutor(new LeaveGuildCommand()); - this.getCommand("guildkick").setExecutor(new GuildKickCommand()); - this.getCommand("guildinfo").setExecutor(new GuildInfoCommand()); - this.getCommand("guildadmin").setExecutor(new GuildAdminCommand()); - this.getCommand("guildsetmoderator").setExecutor(new GuildSetModeratorCommand()); - this.getCommand("guildremovemoderator").setExecutor(new GuildRemoveModeratorCommand()); - this.getCommand("guildlist").setExecutor(new GuildListCommand()); - } - - private void enableListeners() + private void loadListeners() { PluginManager manager = this.getServer().getPluginManager(); - manager.registerEvents(new ChatManager(), this); + manager.registerEvents(new ChatListener(), this); } } diff --git a/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java b/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java index dca3819..61be013 100644 --- a/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java +++ b/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java @@ -2,6 +2,7 @@ package me.totalfreedom.tfguilds.bridge; import me.totalfreedom.tfguilds.TFGuilds; import me.totalfreedom.totalfreedommod.TotalFreedomMod; +import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -12,7 +13,7 @@ public class TFMBridge public TFMBridge() { - this.plugin = TFGuilds.plugin; + this.plugin = TFGuilds.getPlugin(); this.tfmPlugin = null; } @@ -38,6 +39,19 @@ public class TFMBridge public boolean isAdmin(Player player) { + if (getTFM() == null) + { + return player.isOp(); + } return getTFM().al.isAdmin(player); } + + public boolean isAdmin(CommandSender sender) + { + if (getTFM() == null) + { + return sender.isOp(); + } + return getTFM().al.isAdmin(sender); + } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java new file mode 100644 index 0000000..042359a --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java @@ -0,0 +1,103 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.util.GUtil; +import org.bukkit.Bukkit; +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 AddModSubcommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length == 3) + { + if (!plugin.bridge.isAdmin(sender)) + { + 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; + 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.")); + guild.save(); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java new file mode 100644 index 0000000..30cf988 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java @@ -0,0 +1,46 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import org.apache.commons.lang.StringUtils; +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 ChatSubcommand 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; + } + 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; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/CreateGuildCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateGuildCommand.java deleted file mode 100644 index 6efba4e..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/CreateGuildCommand.java +++ /dev/null @@ -1,84 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.entity.Player; - -import java.util.Objects; - -public class CreateGuildCommand extends GBase implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - if (args.length == 0) - { - return false; - } - - if (GUtil.isConsole(sender)) - { - sender.sendMessage(GMessage.PLAYER_ONLY); - return true; - } - - Player player = (Player) sender; - - ConfigurationSection guildMembers = plugin.guilds.getConfigurationSection("guilds"); - - if (guildMembers != null) - { - try - { - for (String guild : guildMembers.getKeys(false)) - { - if (Objects.requireNonNull(plugin.guilds.getString("guilds." + guild + ".members")).contains(player.getName())) - { - player.sendMessage(GMessage.IN_GUILD); - return true; - } - - if (guild.equalsIgnoreCase(args[0])) - { - player.sendMessage(ChatColor.RED + "A guild with that name already exists."); - return true; - } - - if (args[0].length() > 24) - { - player.sendMessage(ChatColor.RED + "Guild name must not be over 24 characters."); - return true; - } - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - for (String blacklisted : GUtil.BLACKLISTED_NAMES_AND_TAGS) - { - if (args[0].equalsIgnoreCase(blacklisted)) - { - if (!plugin.tfmb.isAdmin(player)) - { - player.sendMessage(ChatColor.RED + "You may not use that name."); - return true; - } - } - } - - GUtil.createGuild(player, args[0]); - Bukkit.broadcastMessage(GUtil.color("&a" + player.getName() + " has created guild &a&l" + args[0])); - player.sendMessage(ChatColor.GREEN + "Successfully created a guild named " + args[0]); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java new file mode 100644 index 0000000..b8a8437 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java @@ -0,0 +1,41 @@ +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.lang.StringUtils; +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 CreateSubcommand 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; + String name = StringUtils.join(args, " ", 1, args.length); + String identifier = GUtil.flatten(name); + if (Guild.isInGuild(player)) + { + sender.sendMessage(ChatColor.RED + "You are already in a guild!"); + return true; + } + if (Guild.guildExists(identifier)) + { + sender.sendMessage(ChatColor.RED + "A guild with a name similar to yours already exists!"); + return true; + } + Guild.createGuild(identifier, name, player); + sender.sendMessage(tl(PREFIX + "Created a guild named \"" + GUtil.colorize(name) + "%p%\"!")); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DisbandGuildCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DisbandGuildCommand.java deleted file mode 100644 index 0e626e6..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/DisbandGuildCommand.java +++ /dev/null @@ -1,56 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GLog; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class DisbandGuildCommand implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - if (GUtil.isConsole(sender)) - { - sender.sendMessage(GMessage.PLAYER_ONLY); - return true; - } - - Player player = (Player) sender; - String guild = GUtil.getGuild(player); - - if (guild == null) - { - player.sendMessage(GMessage.NOT_IN_GUILD); - return true; - } - - String owner = GUtil.getOwner(guild); - if (!owner.equalsIgnoreCase(player.getName())) - { - player.sendMessage(GMessage.NOT_OWNER); - return true; - } - - if (args.length == 0) - { - player.sendMessage(ChatColor.RED + "Are you sure you want to delete your guild? Type '/disbandguild CONFIRM' or '/deleteguild CONFIRM' to continue."); - return true; - } - - if (args[0].equalsIgnoreCase("confirm")) - { - GUtil.deleteGuild(player, guild); - Bukkit.broadcastMessage(GUtil.color("&c&l" + guild + " &chas been disbanded")); - player.sendMessage(ChatColor.GREEN + "Successfully deleted and cleared data for " + guild + "."); - GLog.info(player.getName() + " deleted guild " + guild); - return true; - } - return false; - } -} \ 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 new file mode 100644 index 0000000..4865e6c --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java @@ -0,0 +1,57 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.util.GUtil; +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 DisbandSubcommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length == 2) + { + if (!plugin.bridge.isAdmin(sender)) + { + 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; + } + String n = guild.getName(); + guild.disband(); + sender.sendMessage(tl(PREFIX + "Disbanded \"" + GUtil.colorize(n) + "%p%\".")); + return true; + } + if (sender instanceof ConsoleCommandSender) + { + sender.sendMessage(NO_PERMS); + return true; + } + Player player = (Player) sender; + if (!Guild.isInGuild(player)) + { + sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + return true; + } + Guild guild = Guild.getGuild(player); + if (!guild.getOwner().equals(player.getName())) + { + sender.sendMessage(ChatColor.RED + "You are not the owner of this guild!"); + return true; + } + guild.disband(); + sender.sendMessage(tl(PREFIX + "You have disbanded your guild!")); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildAdminCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildAdminCommand.java deleted file mode 100644 index 54d13d9..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildAdminCommand.java +++ /dev/null @@ -1,85 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GLog; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.Bukkit; -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 java.util.List; - -public class GuildAdminCommand extends GBase implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - Player player = (Player) sender; - if (!plugin.tfmb.isAdmin(player)) - { - player.sendMessage(GMessage.NO_PERMISSION); - return true; - } - - if (args.length != 2) - { - return false; - } - - String guild = GUtil.getGuild(args[1]); - if (guild == null) - { - player.sendMessage(GMessage.GUILD_NOT_FOUND); - return true; - } - - if (args[0].equalsIgnoreCase("cleartag")) - { - GUtil.setTag(GUtil.color("&8[&7" + guild + "&8]&r "), guild); - player.sendMessage(ChatColor.GREEN + "Successfully cleared tag for guild " + guild); - return true; - } - - if (args[0].equalsIgnoreCase("disbandguild")) - { - GUtil.deleteGuild(guild); - Bukkit.broadcastMessage(GUtil.color("&c&l" + guild + " &chas been disbanded")); - player.sendMessage(ChatColor.GREEN + "Successfully deleted and cleared data for " + guild + "."); - GLog.info(player.getName() + " deleted guild " + guild); - return true; - } - - if (args[0].equalsIgnoreCase("join")) - { - if (GUtil.isConsole(sender)) - { - sender.sendMessage(GMessage.PLAYER_ONLY); - return true; - } - - if (GUtil.isGuildMember(player, GUtil.getGuild(player))) - { - player.sendMessage(GMessage.IN_GUILD); - return true; - } - - List players = plugin.guilds.getStringList("guilds." + guild + ".members"); - players.add(player.getName()); - plugin.guilds.set("guilds." + guild + ".members", players); - plugin.guilds.save(); - player.sendMessage(ChatColor.GREEN + "You have successfully joined " + guild); - for (Player p : Bukkit.getOnlinePlayers()) - { - if (GUtil.isGuildMember(p, guild)) - { - p.sendMessage(ChatColor.GREEN + player.getName() + " has joined the guild"); - } - } - } - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java index 3e39066..9b90910 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java @@ -1,40 +1,46 @@ package me.totalfreedom.tfguilds.command; -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; import org.apache.commons.lang.StringUtils; +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 GuildChatCommand extends GBase implements CommandExecutor +public class GuildChatCommand extends Common implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (args.length == 0) + if (sender instanceof ConsoleCommandSender) { - return false; - } - - if (GUtil.isConsole(sender)) - { - sender.sendMessage(GMessage.PLAYER_ONLY); + sender.sendMessage(NO_PERMS); return true; } - Player player = (Player) sender; - String guild = GUtil.getGuild(player); - + Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(GMessage.NOT_IN_GUILD); + sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); return true; } - - GUtil.guildChat(sender, StringUtils.join(args, " "), guild); + 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; } -} +} \ 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 new file mode 100644 index 0000000..760f237 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.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; + +public class GuildCommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length >= 1) + { + 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 "saveconfig": return new SaveConfigSubcommand().onCommand(sender, command, label, args); + case "join": return new JoinSubcommand().onCommand(sender, command, label, args); + } + return false; + } + return new HelpSubcommand().onCommand(sender, command, label, args); + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildInfoCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildInfoCommand.java deleted file mode 100644 index d0b1599..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildInfoCommand.java +++ /dev/null @@ -1,70 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.List; - -public class GuildInfoCommand extends GBase implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - if (args.length == 0) - { - if (GUtil.isConsole(sender) || GUtil.getGuild((Player) sender) == null) - { - sender.sendMessage(GUtil.color("&cProvide a guild name.")); - return true; - } - - Player player = (Player) sender; - String guild = GUtil.getGuild(player); - String owner = GUtil.getOwner(guild); - List moderators = GUtil.getModerators(guild); - String tag = GUtil.getTag(guild); - String creation = GUtil.getTimeCreated(guild); - List members = GUtil.getMember(guild); - - player.sendMessage(GUtil.color("&2-=-=-=- &aGuild Information &2-=-=-=-")); - player.sendMessage(GUtil.color("&2Guild Name: &a" + guild)); - player.sendMessage(GUtil.color("&2Guild Owner: &a" + owner)); - player.sendMessage(GUtil.color("&2Guild Moderators: &a" + moderators)); - player.sendMessage(GUtil.color("&2Guild Tag: &a" + tag)); - player.sendMessage(GUtil.color("&2Guild Creation Date: &a" + creation)); - player.sendMessage(GUtil.color("&2Member Count: &a" + members.size())); - player.sendMessage(GUtil.color("&2Members: &a" + members)); - player.sendMessage(GUtil.color("&2-=-=-=-=-=-=-=-=-=-=-=-=-=-=-")); - return true; - } - - String guild = GUtil.getGuild(args[0]); - if (guild == null) - { - sender.sendMessage(GMessage.GUILD_NOT_FOUND); - return true; - } - - String owner = GUtil.getOwner(guild); - List moderators = GUtil.getModerators(guild); - String tag = GUtil.getTag(guild); - String creation = GUtil.getTimeCreated(guild); - List members = GUtil.getMember(guild); - - sender.sendMessage(GUtil.color("&2-=-=-=- &aGuild Information &2-=-=-=-")); - sender.sendMessage(GUtil.color("&2Guild Name: &a" + guild)); - sender.sendMessage(GUtil.color("&2Guild Owner: &a" + owner)); - sender.sendMessage(GUtil.color("&2Guild Moderators: &a" + moderators)); - sender.sendMessage(GUtil.color("&2Guild Tag: &a" + tag)); - sender.sendMessage(GUtil.color("&2Guild Creation Date: &a" + creation)); - sender.sendMessage(GUtil.color("&2Member Count: &a" + members.size())); - sender.sendMessage(GUtil.color("&2Members: &a" + members)); - sender.sendMessage(GUtil.color("&2-=-=-=-=-=-=-=-=-=-=-=-=-=-=-")); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildKickCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildKickCommand.java deleted file mode 100644 index 8a8f18b..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildKickCommand.java +++ /dev/null @@ -1,86 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.Bukkit; -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 java.util.List; - -public class GuildKickCommand extends GBase implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - if (args.length == 0) - { - return false; - } - - if (GUtil.isConsole(sender)) - { - sender.sendMessage(GMessage.PLAYER_ONLY); - return true; - } - - Player player = (Player) sender; - String guild = GUtil.getGuild(player); - - if (guild == null) - { - player.sendMessage(GMessage.NOT_IN_GUILD); - return true; - } - - if (!GUtil.isGuildModerator(player, guild)) - { - player.sendMessage(ChatColor.RED + "You must be a guild moderator in order to kick members."); - return true; - } - - Player target = Bukkit.getPlayer(args[0]); - if (target == null) - { - player.sendMessage(GMessage.PLAYER_NOT_FOUND); - return true; - } - - if (!GUtil.isGuildMember(target, GUtil.getGuild(player))) - { - player.sendMessage(ChatColor.RED + "That player isn't in your guild."); - return true; - } - - if (GUtil.isGuildModerator(target, guild)) - { - player.sendMessage(ChatColor.RED + "This player is a moderator and therefore cannot be kicked."); - return true; - } - - if (target == player) - { - player.sendMessage(ChatColor.RED + "You may not kick yourself."); - return true; - } - - List players = plugin.guilds.getStringList("guilds." + guild + ".members"); - players.remove(target.getName()); - plugin.guilds.set("guilds." + guild + ".members", players); - plugin.guilds.save(); - for (Player p : Bukkit.getOnlinePlayers()) - { - if (GUtil.isGuildMember(p, guild)) - { - p.sendMessage(ChatColor.RED + target.getName() + " has been kicked from the guild"); - } - } - player.sendMessage(ChatColor.GREEN + "Successfully kicked " + target.getName() + " from the guild"); - target.sendMessage(ChatColor.RED + "You have been kicked from guild " + guild); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildListCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildListCommand.java deleted file mode 100644 index 55e8919..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildListCommand.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GUtil; -import org.apache.commons.lang.StringUtils; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; - -import java.util.List; - -public class GuildListCommand extends GBase implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - List guilds = GUtil.getGuilds(); - - if (guilds.isEmpty()) - { - sender.sendMessage(ChatColor.RED + "Nobody has made a guild yet."); - return true; - } - - sender.sendMessage(GUtil.color("&2-=-=-=- &aGuild List (Total: " + guilds.size() + ") &2-=-=-=-")); - sender.sendMessage(GUtil.color("&2- &a" + StringUtils.join(guilds, ",\n&2- &a"))); - sender.sendMessage(GUtil.color("&2-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-")); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildRemoveModeratorCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildRemoveModeratorCommand.java deleted file mode 100644 index 361e3a8..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildRemoveModeratorCommand.java +++ /dev/null @@ -1,86 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.Bukkit; -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 java.util.List; - -public class GuildRemoveModeratorCommand extends GBase implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - if (args.length == 0) - { - return false; - } - - if (GUtil.isConsole(sender)) - { - sender.sendMessage(GMessage.PLAYER_ONLY); - return true; - } - - Player player = (Player) sender; - String guild = GUtil.getGuild(player); - - if (guild == null) - { - player.sendMessage(GMessage.NOT_IN_GUILD); - return true; - } - String owner = GUtil.getOwner(guild); - if (!owner.equalsIgnoreCase(player.getName())) - { - player.sendMessage(GMessage.NOT_OWNER); - return true; - } - - Player target = Bukkit.getPlayer(args[0]); - if (target == null) - { - player.sendMessage(GMessage.PLAYER_NOT_FOUND); - return true; - } - - if (!GUtil.isGuildMember(target, GUtil.getGuild(player))) - { - player.sendMessage(ChatColor.RED + "That player isn't in your guild."); - return true; - } - - if (!GUtil.isGuildModerator(target, guild)) - { - player.sendMessage(ChatColor.RED + "This player isn't a guild moderator."); - return true; - } - - if (target == player) - { - player.sendMessage(ChatColor.RED + "You may not demote yourself."); - return true; - } - - List moderators = plugin.guilds.getStringList("guilds." + guild + ".moderators"); - moderators.remove(target.getName()); - plugin.guilds.set("guilds." + guild + ".moderators", moderators); - - for (Player p : Bukkit.getOnlinePlayers()) - { - if (GUtil.isGuildMember(p, guild)) - { - p.sendMessage(ChatColor.RED + target.getName() + " has been demoted to guild member"); - } - } - - player.sendMessage(ChatColor.GREEN + "Successfully demoted " + target.getName() + " to guild member"); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildSetModeratorCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildSetModeratorCommand.java deleted file mode 100644 index 44cf94c..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildSetModeratorCommand.java +++ /dev/null @@ -1,86 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.Bukkit; -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 java.util.List; - -public class GuildSetModeratorCommand extends GBase implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - if (args.length == 0) - { - return false; - } - - if (GUtil.isConsole(sender)) - { - sender.sendMessage(GMessage.PLAYER_ONLY); - return true; - } - - Player player = (Player) sender; - String guild = GUtil.getGuild(player); - - if (guild == null) - { - player.sendMessage(GMessage.NOT_IN_GUILD); - return true; - } - String owner = GUtil.getOwner(guild); - if (!owner.equalsIgnoreCase(player.getName())) - { - player.sendMessage(GMessage.NOT_OWNER); - return true; - } - - Player target = Bukkit.getPlayer(args[0]); - if (target == null) - { - player.sendMessage(GMessage.PLAYER_NOT_FOUND); - return true; - } - - if (!GUtil.isGuildMember(target, guild)) - { - player.sendMessage(ChatColor.RED + "That player isn't in your guild."); - return true; - } - - if (GUtil.isGuildModerator(target, guild)) - { - player.sendMessage(ChatColor.RED + "This player is already a guild moderator."); - return true; - } - - if (target == player) - { - player.sendMessage(ChatColor.RED + "You are already a moderator."); - return true; - } - - List moderators = plugin.guilds.getStringList("guilds." + guild + ".moderators"); - moderators.add(target.getName()); - plugin.guilds.set("guilds." + guild + ".moderators", moderators); - - for (Player p : Bukkit.getOnlinePlayers()) - { - if (GUtil.isGuildMember(p, guild)) - { - p.sendMessage(ChatColor.GREEN + target.getName() + " has been promoted to guild moderator"); - } - } - - player.sendMessage(ChatColor.GREEN + "Successfully promoted " + target.getName() + " to guild moderator"); - return true; - } -} diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildTagCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildTagCommand.java deleted file mode 100644 index c673dca..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildTagCommand.java +++ /dev/null @@ -1,70 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.apache.commons.lang.StringUtils; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class GuildTagCommand extends GBase implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - if (GUtil.isConsole(sender)) - { - sender.sendMessage(GMessage.PLAYER_ONLY); - return true; - } - - Player player = (Player) sender; - String guild = GUtil.getGuild(player); - - if (guild == null) - { - player.sendMessage(GMessage.NOT_IN_GUILD); - return true; - } - - String owner = GUtil.getOwner(guild); - if (!owner.equalsIgnoreCase(player.getName())) - { - player.sendMessage(GMessage.NOT_OWNER); - return true; - } - - if (args.length >= 2) - { - String tag = StringUtils.join(args, " ", 1, args.length); - if (args[0].equalsIgnoreCase("set")) - { - if (!tag.contains("%tag%")) - { - player.sendMessage(ChatColor.RED + "Your guild tag must contain your guild name. Use %tag% to specify where you want your tag."); - return true; - } - - tag = tag.replace("%tag%", guild); - - GUtil.setTag(GUtil.translateHexColorCodes(tag) + " ", guild); - player.sendMessage(ChatColor.GREEN + "Guild tag set to \"" + GUtil.translateHexColorCodes(tag) + ChatColor.GREEN + "\""); - return true; - } - } - - if (args.length == 1) - { - if (args[0].equalsIgnoreCase("clear")) - { - GUtil.setTag(GUtil.color("&8[&7" + guild + "&8]&r "), guild); - player.sendMessage(ChatColor.GREEN + "Removed your guild's tag."); - return true; - } - } - return false; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildTeleportCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildTeleportCommand.java deleted file mode 100644 index 3fd6fe1..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildTeleportCommand.java +++ /dev/null @@ -1,58 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class GuildTeleportCommand implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - if (args.length == 0) - { - return false; - } - - if (GUtil.isConsole(sender)) - { - sender.sendMessage(GMessage.PLAYER_ONLY); - return true; - } - - Player player = (Player) sender; - String guild = GUtil.getGuild(player); - - if (guild == null) - { - player.sendMessage(GMessage.NOT_IN_GUILD); - return true; - } - - Player target = Bukkit.getPlayer(args[0]); - if (target == null) - { - player.sendMessage(GMessage.PLAYER_NOT_FOUND); - return true; - } - - if (!GUtil.isGuildMember(target, GUtil.getGuild(player))) - { - player.sendMessage(ChatColor.RED + "That player isn't in your guild."); - return true; - } - - Location targetLoc = target.getLocation(); - player.teleport(targetLoc); - - sender.sendMessage(ChatColor.GREEN + "Teleported to " + target.getName() + " successfully."); - target.sendMessage(ChatColor.GREEN + player.getName() + " has teleported to you."); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java new file mode 100644 index 0000000..b12a896 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java @@ -0,0 +1,29 @@ +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; + +public class HelpSubcommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + sender.sendMessage(tl("%s%[%p%TFGuilds%s%] %p%Command List")); + sender.sendMessage(tl("%s% - %p%list [guild]")); + sender.sendMessage(tl("%s% - %p%help")); + sender.sendMessage(tl("%s% - %p%create ")); + sender.sendMessage(tl("%s% - %p%disband [name]")); + sender.sendMessage(tl("%s% - %p%invite ")); + sender.sendMessage(tl("%s% - %p%addmod | player>")); + sender.sendMessage(tl("%s% - %p%removemod | name>")); + sender.sendMessage(tl("%s% - %p%setowner | player>")); + sender.sendMessage(tl("%s% - %p%kick | player>")); + sender.sendMessage(tl("%s% - %p%leave")); + sender.sendMessage(tl("%s% - %p%tp ")); + sender.sendMessage(tl("%s% - %p%info [guild]")); + sender.sendMessage(tl("%s% - %p%tag | clear>")); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java new file mode 100644 index 0000000..fbea253 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java @@ -0,0 +1,44 @@ +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.lang.StringUtils; +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 InfoSubcommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length >= 2) + { + 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); + if (guild == null) + { + sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + return true; + } + sender.sendMessage(guild.getInformation()); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/InviteGuildCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/InviteGuildCommand.java deleted file mode 100644 index 1a057ff..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/InviteGuildCommand.java +++ /dev/null @@ -1,85 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.Bukkit; -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 java.util.List; - -public class InviteGuildCommand extends GBase implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - if (args.length != 1) - { - return false; - } - - if (GUtil.isConsole(sender)) - { - sender.sendMessage(GMessage.PLAYER_ONLY); - return true; - } - - Player player = (Player) sender; - Player target = Bukkit.getPlayer(args[0]); - - if (target != null) - { - if (!GUtil.isGuildModerator(player, GUtil.getGuild(player))) - { - player.sendMessage(ChatColor.RED + "You must be a guild moderator in order to invite players."); - return true; - } - - if (GUtil.isGuildMember(target, GUtil.getGuild(player))) - { - player.sendMessage(ChatColor.RED + "That player is already in a guild."); - return true; - } - - target.sendMessage(GUtil.color("&a" + player.getName() + " has invited you to join &a&l" + GUtil.getGuild(player) + "&a.")); - GUtil.invitePlayer(target, GUtil.getGuild(player), 60); - player.sendMessage(GUtil.color("&aSent an invitation to " + target.getName())); - return true; - } - - if (GUtil.invitedPlayers.containsKey(player.getName())) - { - String guild = GUtil.invitedPlayers.get(player.getName()); - if (args[0].equalsIgnoreCase("accept")) - { - List players = plugin.guilds.getStringList("guilds." + guild + ".members"); - players.add(player.getName()); - plugin.guilds.set("guilds." + guild + ".members", players); - plugin.guilds.save(); - GUtil.invitedPlayers.remove(player.getName()); - player.sendMessage(ChatColor.GREEN + "You have successfully joined " + guild); - for (Player p : Bukkit.getOnlinePlayers()) - { - if (GUtil.isGuildMember(p, guild)) - { - p.sendMessage(ChatColor.GREEN + player.getName() + " has joined the guild"); - } - } - } - - if (args[0].equalsIgnoreCase("deny")) - { - GUtil.invitedPlayers.remove(player.getName()); - player.sendMessage(ChatColor.GREEN + "You have declined to join " + guild); - } - return true; - } - - player.sendMessage(ChatColor.RED + "Player not found."); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java new file mode 100644 index 0000000..30af6eb --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java @@ -0,0 +1,78 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.guild.GuildState; +import me.totalfreedom.tfguilds.util.GUtil; +import org.bukkit.Bukkit; +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; +import org.bukkit.scheduler.BukkitRunnable; + +public class InviteSubcommand 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 (args.length < 2) + return false; + Player player = (Player) sender; + Guild guild = Guild.getGuild(player); + Player invitee = Bukkit.getPlayer(args[1]); + if (invitee == null) + { + sender.sendMessage(PNF); + return true; + } + if (Guild.getGuild(invitee) != null) + { + sender.sendMessage(ChatColor.RED + "This player is already in another guild!"); + } + 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!")); + invitee.sendMessage(tl("%p%This invite will expire in 90 seconds.")); + sender.sendMessage(tl("%p%Invite sent!")); + new BukkitRunnable() + { + public void run() + { + if (!INVITES.containsKey(invitee)) + return; + INVITES.remove(player); + invitee.sendMessage(ChatColor.RED + "Invite expired."); + sender.sendMessage(ChatColor.RED + "Invite expired."); + } + }.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 new file mode 100644 index 0000000..81cae35 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java @@ -0,0 +1,58 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.guild.GuildState; +import me.totalfreedom.tfguilds.util.GUtil; +import org.apache.commons.lang.StringUtils; +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 JoinSubcommand 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 (args.length < 2) + return false; + 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)) + { + sender.sendMessage(ChatColor.RED + "You have not been invited to this guild!"); + return true; + } + INVITES.remove(player); + } + guild.addMember(player.getName()); + guild.broadcast(tl("%s%" + player.getName() + " %p%has joined your guild!")); + guild.save(); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java new file mode 100644 index 0000000..8fc2080 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java @@ -0,0 +1,100 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.util.GUtil; +import org.bukkit.Bukkit; +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 KickSubcommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length == 3) + { + if (!plugin.bridge.isAdmin(sender)) + { + 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.")); + guild.broadcast(tl("%s%" + player.getName() + " %p%has been kicked from your guild.")); + guild.save(); + return true; + } + 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; + } + 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.")); + guild.broadcast(tl("%s%" + n.getName() + " %p%has been kicked from your guild.")); + guild.save(); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/LeaveGuildCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/LeaveGuildCommand.java deleted file mode 100644 index b8e4dd1..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/LeaveGuildCommand.java +++ /dev/null @@ -1,66 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.Bukkit; -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 java.util.List; - -public class LeaveGuildCommand extends GBase implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - if (GUtil.isConsole(sender)) - { - sender.sendMessage(GMessage.PLAYER_ONLY); - return true; - } - - Player player = (Player) sender; - String guild = GUtil.getGuild(player); - - if (guild == null) - { - player.sendMessage(GMessage.NOT_IN_GUILD); - return true; - } - - String owner = GUtil.getOwner(guild); - if (owner.equalsIgnoreCase(player.getName())) - { - player.sendMessage(ChatColor.RED + "You may not leave your guild. However, if you want to delete it run /disbandguild"); - return true; - } - - if (args.length == 0) - { - player.sendMessage(ChatColor.RED + "Are you sure you want to leave your guild? Type '/leaveguild CONFIRM' or '/guildleave CONFIRM' to continue."); - return true; - } - - if (args[0].equalsIgnoreCase("confirm")) - { - List players = plugin.guilds.getStringList("guilds." + guild + ".members"); - players.remove(player.getName()); - plugin.guilds.set("guilds." + guild + ".members", players); - plugin.guilds.save(); - for (Player p : Bukkit.getOnlinePlayers()) - { - if (GUtil.isGuildMember(p, guild)) - { - p.sendMessage(ChatColor.RED + player.getName() + " has left the guild"); - } - } - player.sendMessage(ChatColor.GREEN + "Successfully left " + guild + "."); - return true; - } - return true; - } -} diff --git a/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java new file mode 100644 index 0000000..061815e --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java @@ -0,0 +1,43 @@ +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 LeaveSubcommand 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 (args.length > 1) + return false; + 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(); + sender.sendMessage(tl("%p%You left your guild.")); + guild.broadcast(tl("%s%" + sender.getName() + " %p%left the guild.")); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java new file mode 100644 index 0000000..24a7e92 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java @@ -0,0 +1,44 @@ +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.lang.StringUtils; +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 ListSubcommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length >= 2) + { + 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.getList()); + return true; + } + if (sender instanceof ConsoleCommandSender) + { + sender.sendMessage(NO_PERMS); + return true; + } + Guild guild = Guild.getGuild((Player) sender); + if (guild == null) + { + sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + return true; + } + sender.sendMessage(guild.getList()); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java new file mode 100644 index 0000000..3bb665f --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java @@ -0,0 +1,93 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.util.GUtil; +import org.bukkit.Bukkit; +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 RemoveModSubcommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length == 3) + { + if (!plugin.bridge.isAdmin(sender)) + { + 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; + 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.")); + guild.save(); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SaveConfigSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SaveConfigSubcommand.java new file mode 100644 index 0000000..661baae --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/SaveConfigSubcommand.java @@ -0,0 +1,32 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import org.bukkit.Bukkit; +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 SaveConfigSubcommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length != 1) + return false; + if (!plugin.bridge.isAdmin(sender)) + { + sender.sendMessage(NO_PERMS); + return true; + } + plugin.config.load(); + plugin.guilds.load(); + plugin.config.save(); + plugin.guilds.save(); + sender.sendMessage(tl(PREFIX + "Saved all configuration files in their current state.")); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java new file mode 100644 index 0000000..4b4c98b --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java @@ -0,0 +1,85 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.util.GUtil; +import org.bukkit.Bukkit; +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 SetOwnerSubcommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length == 3) + { + if (!plugin.bridge.isAdmin(sender)) + { + 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%.")); + guild.broadcast(tl("%s%" + player.getName() + " %p%has been made the owner of your guild.")); + guild.save(); + return true; + } + 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; + } + 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.")); + guild.broadcast(tl("%s%" + n.getName() + " %p%has been made the owner of your guild.")); + guild.save(); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java new file mode 100644 index 0000000..07ee264 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java @@ -0,0 +1,73 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.guild.GuildState; +import me.totalfreedom.tfguilds.util.GUtil; +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 SetStateSubcommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length == 3) + { + if (!plugin.bridge.isAdmin(sender)) + { + 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; + 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%.")); + guild.save(); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java new file mode 100644 index 0000000..38a6a41 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java @@ -0,0 +1,26 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import org.apache.commons.lang.StringUtils; +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 TFGuildsCommand extends Common implements CommandExecutor +{ + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) + { + if (args.length != 0) + return false; + sender.sendMessage(tl(PREFIX + "Plugin Information")); + sender.sendMessage(tl("%s%Programmers%p%: speed and super")); + sender.sendMessage(tl("%s%Version%p%: " + plugin.getDescription().getVersion())); + sender.sendMessage(tl("%s%Special Thanks%p%: ron (testing)")); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java new file mode 100644 index 0000000..6daccf6 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java @@ -0,0 +1,48 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import org.bukkit.Bukkit; +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 TPSubcommand 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 (args.length != 2) + return false; + 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.")); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java new file mode 100644 index 0000000..86de36c --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java @@ -0,0 +1,57 @@ +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.lang.StringUtils; +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 TagSubcommand 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; + } + if (!guild.getOwner().equals(player.getName())) + { + sender.sendMessage(ChatColor.RED + "You can't modify your guild's tag!"); + return true; + } + if (args.length >= 3) + { + if (args[1].toLowerCase().equals("set")) + { + String tag = StringUtils.join(args, " ", 2, args.length); + guild.setTag(tag); + guild.save(); + sender.sendMessage(tl("%p%Your guild tag has been changed to be \"" + GUtil.colorize(tag) + "%p%\".")); + return true; + } + return false; + } + if (args[1].toLowerCase().equals("clear")) + { + guild.setTag(null); + guild.save(); + sender.sendMessage(tl("%p%Your guild tag has been cleared.")); + return true; + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TfGuildsCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TfGuildsCommand.java deleted file mode 100644 index 75e1710..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/command/TfGuildsCommand.java +++ /dev/null @@ -1,50 +0,0 @@ -package me.totalfreedom.tfguilds.command; - -import me.totalfreedom.tfguilds.util.GBase; -import me.totalfreedom.tfguilds.util.GLog; -import me.totalfreedom.tfguilds.util.GMessage; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class TfGuildsCommand extends GBase implements CommandExecutor -{ - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) - { - if (args.length == 0) - { - sender.sendMessage(GUtil.color("&aTFGuilds &2is a plugin which allows for players to make their own guilds, providing guild chat, guild teleportation, and more.")); - sender.sendMessage(String.format(GUtil.color("&2Version &av%s"), plugin.getDescription().getVersion())); - sender.sendMessage(GUtil.color("&2Developed by &aspeednt")); - sender.sendMessage(GUtil.color("&2Contributors")); - sender.sendMessage(GUtil.color("&a- supernt")); - sender.sendMessage(GUtil.color("&2https://github.com/TFPatches/TFGuilds")); - return true; - } - - if (args[0].toLowerCase().equals("reload")) - { - if (!plugin.tfmb.isAdmin((Player) sender)) - { - sender.sendMessage(GMessage.NO_PERMISSION); - return true; - } - try - { - plugin.guilds.load(); - GLog.info("All configs reloaded successfully"); - sender.sendMessage(GUtil.color("&aAll configuration files have been reloaded successfully.")); - return true; - } - catch (Exception ex) - { - ex.printStackTrace(); - } - return true; - } - return false; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/config/Config.java b/src/main/java/me/totalfreedom/tfguilds/config/Config.java index 8aa9218..c577ca6 100644 --- a/src/main/java/me/totalfreedom/tfguilds/config/Config.java +++ b/src/main/java/me/totalfreedom/tfguilds/config/Config.java @@ -10,9 +10,9 @@ public class Config extends YamlConfiguration private final TFGuilds plugin; private final File file; - public Config(TFGuilds plugin, String name) + public Config(String name) { - this.plugin = plugin; + this.plugin = TFGuilds.getPlugin(); this.file = new File(plugin.getDataFolder(), name); if (!file.exists()) diff --git a/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java b/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java new file mode 100644 index 0000000..6329439 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java @@ -0,0 +1,24 @@ +package me.totalfreedom.tfguilds.config; + +import me.totalfreedom.tfguilds.TFGuilds; +import org.bukkit.ChatColor; + +public enum ConfigEntry +{ + SCHEME_PRIMARY("scheme.primary"), + SCHEME_SECONDARY("scheme.secondary"); + + private final String path; + + ConfigEntry(String path) + { + this.path = path; + } + + private static Config config = TFGuilds.getPlugin().config; + + public ChatColor getChatColor() + { + return ChatColor.valueOf(config.getString(path).toUpperCase()); + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java new file mode 100644 index 0000000..fdffb70 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java @@ -0,0 +1,226 @@ +package me.totalfreedom.tfguilds.guild; + +import lombok.Getter; +import lombok.Setter; +import me.totalfreedom.tfguilds.TFGuilds; +import me.totalfreedom.tfguilds.Common; +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; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class Guild +{ + private static TFGuilds plugin = TFGuilds.getPlugin(); + + @Getter + private final String identifier; + + @Getter + private final String name; + + @Getter + @Setter + private String owner; + + @Getter + private List moderators; + + @Getter + private List members; + + @Getter + @Setter + private String tag; + + @Getter + @Setter + private GuildState state; + + @Getter + private final long creation; + + public Guild(String identifier, String name, String owner, List members, List moderators, String tag, GuildState state, long creation) + { + this.identifier = identifier; + this.name = name; + this.owner = owner; + this.members = members; + this.moderators = moderators; + this.tag = tag; + this.state = state; + this.creation = creation; + } + + public void save() + { + plugin.guilds.set(identifier + ".name", name); + plugin.guilds.set(identifier + ".owner", owner); + plugin.guilds.set(identifier + ".members", members); + plugin.guilds.set(identifier + ".moderators", moderators); + plugin.guilds.set(identifier + ".tag", tag); + plugin.guilds.set(identifier + ".state", state.name()); + plugin.guilds.set(identifier + ".creation", creation); + plugin.guilds.save(); + } + + public void addMember(String name) + { + members.add(name); + } + + public void removeMember(String name) + { + Player player = Bukkit.getPlayer(name); + if (player != null) + Common.IN_GUILD_CHAT.remove(player); + members.remove(name); + moderators.remove(name); + } + + public boolean hasMember(String name) + { + return members.contains(name); + } + + public void addModerator(String name) + { + moderators.add(name); + } + + public void removeModerator(String name) + { + moderators.remove(name); + } + + public boolean hasModerator(String name) + { + if (owner.equals(name)) + return true; + return moderators.contains(name); + } + + public boolean hasTag() + { + return tag != null; + } + + public void broadcast(String message) + { + for (Player player : Bukkit.getOnlinePlayers()) + { + if (members.contains(player.getName())) + { + player.sendMessage(message); + } + } + } + + public List getOnlyMembers() + { + List only = new ArrayList<>(); + for (String member : members) + { + if (member.equals(owner) || moderators.contains(member)) + continue; + only.add(member); + } + return only; + } + + public String getList() + { + return Common.tl(Common.PREFIX + "Guild Roster\n" + + "%s%Owner%p% - " + owner + "\n" + + "%s%Moderators%p% - " + StringUtils.join(moderators, ", ") + "\n" + + "%s%Members%p% - " + StringUtils.join(getOnlyMembers(), ", ") + "\n"); + } + + public String getInformation() + { + return Common.tl(Common.PREFIX + "Guild Information\n" + + "%s%Name%p%: " + GUtil.colorize(name) + "\n" + + "%s%Owner%p%: " + owner + "\n" + + "%s%Moderators%p%: " + StringUtils.join(moderators, ", ") + "\n" + + "%s%Members%p%: " + StringUtils.join(getOnlyMembers(), ", ") + "\n" + + "%s%Tag%p%: " + (tag == null ? "None" : GUtil.colorize(tag)) + "\n" + + "%s%State%p%: " + state.getDisplay() + "\n" + + "%s%Creation%p%: " + GUtil.format(creation) + "\n" + + "%s%Identifier (Technical)%p%: " + identifier + "\n"); + } + + public void chat(String as, String msg) + { + broadcast(Common.tl("%s%[%p%Guild Chat %s%| %p%" + GUtil.colorize(name) + "%s%] %p%" + as + ChatColor.WHITE + ": %p%" + msg)); + } + + public void disband() + { + for (String member : members) + { + Player player = Bukkit.getPlayer(member); + if (player == null) + continue; + Common.IN_GUILD_CHAT.remove(player); + } + plugin.guilds.set(identifier, null); + plugin.guilds.save(); + } + + 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(), Collections.singletonList(owner.getName()), new ArrayList<>(), null, GuildState.INVITE_ONLY, System.currentTimeMillis()); + guild.save(); + return guild; + } + + public static Guild getGuild(String identifier) + { + if (!plugin.guilds.contains(identifier)) + return null; + return new Guild(identifier, + plugin.guilds.getString(identifier + ".name"), + plugin.guilds.getString(identifier + ".owner"), + plugin.guilds.getStringList(identifier + ".members"), + plugin.guilds.getStringList(identifier + ".moderators"), + plugin.guilds.getString(identifier + ".tag"), + GuildState.valueOf(plugin.guilds.getString(identifier + ".state")), + plugin.guilds.getLong(identifier + ".creation")); + } + + public static Guild getGuild(Player player) + { + Guild guild = null; + for (String key : plugin.guilds.getKeys(false)) + { + Guild kg = getGuild(key); + if (kg.getMembers().contains(player.getName())) + guild = kg; + } + return guild; + } + + public static boolean guildExists(String identifier) + { + return plugin.guilds.contains(identifier); + } + + public static boolean isInGuild(Player player) + { + for (String key : plugin.guilds.getKeys(false)) + { + Guild guild = getGuild(key); + if (guild.getMembers().contains(player.getName())) + return true; + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/GuildState.java b/src/main/java/me/totalfreedom/tfguilds/guild/GuildState.java new file mode 100644 index 0000000..c4318cd --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/guild/GuildState.java @@ -0,0 +1,36 @@ +package me.totalfreedom.tfguilds.guild; + +import lombok.Getter; + +public enum GuildState +{ + OPEN("Open"), + INVITE_ONLY("Invite-only"), + CLOSED("Closed"); + + @Getter + private final String display; + + GuildState(String display) + { + this.display = display; + } + + public static GuildState findState(String string) + { + switch (string.toLowerCase()) + { + case "open": + case "opened": + return OPEN; + case "invite": + case "inviteonly": + case "invite_only": + return INVITE_ONLY; + case "closed": + case "close": + return CLOSED; + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java new file mode 100644 index 0000000..0ee3d00 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java @@ -0,0 +1,31 @@ +package me.totalfreedom.tfguilds.listener; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.util.GUtil; +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; + +public class ChatListener implements Listener +{ + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent e) + { + Player player = e.getPlayer(); + Guild guild = Guild.getGuild(player); + if (guild == null) + return; + if (Common.IN_GUILD_CHAT.contains(player)) + { + e.setCancelled(true); + guild.chat(player.getName(), e.getMessage()); + } + 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/ChatManager.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatManager.java deleted file mode 100644 index 32edeb3..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/listener/ChatManager.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.totalfreedom.tfguilds.listener; - -import me.totalfreedom.tfguilds.TFGuilds; -import me.totalfreedom.tfguilds.util.GUtil; -import org.bukkit.ChatColor; -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; - -public class ChatManager implements Listener -{ - private final TFGuilds plugin; - public ChatManager() - { - this.plugin = TFGuilds.plugin; - } - - @EventHandler(priority = EventPriority.HIGHEST) - public void onPlayerChat(AsyncPlayerChatEvent e) - { - Player player = e.getPlayer(); - String guild = GUtil.getGuild(player); - if (guild == null) - { - return; - } - e.setFormat(GUtil.color(GUtil.getTag(guild)) + ChatColor.RESET + e.getFormat()); - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/util/GBase.java b/src/main/java/me/totalfreedom/tfguilds/util/GBase.java deleted file mode 100644 index 415625d..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/util/GBase.java +++ /dev/null @@ -1,8 +0,0 @@ -package me.totalfreedom.tfguilds.util; - -import me.totalfreedom.tfguilds.TFGuilds; - -public class GBase -{ - protected static TFGuilds plugin = TFGuilds.plugin; -} diff --git a/src/main/java/me/totalfreedom/tfguilds/util/GLog.java b/src/main/java/me/totalfreedom/tfguilds/util/GLog.java index 3b6ab26..76eeee0 100644 --- a/src/main/java/me/totalfreedom/tfguilds/util/GLog.java +++ b/src/main/java/me/totalfreedom/tfguilds/util/GLog.java @@ -5,26 +5,26 @@ import java.util.logging.Logger; public class GLog { - private static final Logger log = Logger.getLogger("Minecraft"); - private static final String prefix = "[TFGuilds] "; + private static final Logger LOGGER = Logger.getLogger("Minecraft"); + private static final String PREFIX = "[TFGuilds]"; - private static void log(String s, Level l) + private static void log(Object o, Level l) { - log.log(l, prefix + s); + LOGGER.log(l, PREFIX + " " + o); } - public static void info(String s) + public static void info(Object o) { - log(s, Level.INFO); + log(o, Level.INFO); } - public static void warn(String s) + public static void warn(Object o) { - log(s, Level.WARNING); + log(o, Level.WARNING); } - public static void severe(String s) + public static void severe(Object o) { - log(s, Level.SEVERE); + log(o, Level.SEVERE); } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/util/GMessage.java b/src/main/java/me/totalfreedom/tfguilds/util/GMessage.java deleted file mode 100644 index 5496ca6..0000000 --- a/src/main/java/me/totalfreedom/tfguilds/util/GMessage.java +++ /dev/null @@ -1,14 +0,0 @@ -package me.totalfreedom.tfguilds.util; - -import org.bukkit.ChatColor; - -public class GMessage -{ - public static String NO_PERMISSION = ChatColor.RED + "No permission."; - public static String PLAYER_ONLY = ChatColor.RED + "You are not allowed to run this command."; - public static String IN_GUILD = ChatColor.RED + "You are already in a guild!"; - public static String NOT_OWNER = ChatColor.RED + "You aren't the owner of your guild."; - public static String GUILD_NOT_FOUND = ChatColor.RED + "Guild not found."; - public static String NOT_IN_GUILD = ChatColor.RED + "You aren't in a guild!"; - public static String PLAYER_NOT_FOUND = ChatColor.RED + "Player not found."; -} diff --git a/src/main/java/me/totalfreedom/tfguilds/util/GUtil.java b/src/main/java/me/totalfreedom/tfguilds/util/GUtil.java index 01f85a0..dd9a61d 100644 --- a/src/main/java/me/totalfreedom/tfguilds/util/GUtil.java +++ b/src/main/java/me/totalfreedom/tfguilds/util/GUtil.java @@ -1,249 +1,43 @@ package me.totalfreedom.tfguilds.util; -import org.bukkit.Bukkit; +import org.apache.commons.lang.StringUtils; 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 me.totalfreedom.tfguilds.TFGuilds; -import org.bukkit.scheduler.BukkitRunnable; -import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.Arrays; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class GUtil { - public static TFGuilds plugin = TFGuilds.plugin; - public static HashMap invitedPlayers = new HashMap<>(); + private static final SimpleDateFormat STANDARD = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z"); - public static boolean isConsole(CommandSender sender) + public static String flatten(String s) { - return sender instanceof ConsoleCommandSender; - } - - public static void createGuild(CommandSender owner, String guildName) - { - // Set guild name & owner - plugin.guilds.set("guilds." + guildName, guildName); - plugin.guilds.set("guilds." + guildName + ".owner", owner.getName()); - - // Set guild moderator - List moderators = plugin.guilds.getStringList("guilds." + guildName + ".moderators"); - moderators.add(owner.getName()); - plugin.guilds.set("guilds." + guildName + ".moderators", moderators); - - // Set guild player - List players = plugin.guilds.getStringList("guilds." + guildName + ".members"); - players.add(owner.getName()); - plugin.guilds.set("guilds." + guildName + ".members", players); - plugin.guilds.set("guilds." + guildName + ".tag", GUtil.color("&8[&7" + guildName + "&8]&r ")); - - // Set time guild was created - DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); - Date date = new Date(); - plugin.guilds.set("guilds." + guildName + ".created", dateFormat.format(date)); - - // Add guild to guild list - List guilds = plugin.guilds.getStringList("list"); - guilds.add(guildName); - plugin.guilds.set("list", guilds); - - // Save everything & log guild creation - plugin.guilds.save(); - GLog.info(owner.getName() + " has created a new guild: " + guildName); - } - - public static void deleteGuild(CommandSender owner, String guildName) - { - GLog.info("Removing guilds.yml data for " + guildName); - plugin.guilds.set("guilds." + guildName, null); - List guilds = plugin.guilds.getStringList("list"); - guilds.remove(guildName); - plugin.guilds.set("list", guilds); - plugin.guilds.save(); - } - - public static void deleteGuild(String guildName) - { - GLog.info("Removing guilds.yml data for " + guildName); - plugin.guilds.set("guilds." + guildName, null); - List guilds = plugin.guilds.getStringList("list"); - guilds.remove(guildName); - plugin.guilds.set("list", guilds); - plugin.guilds.save(); - } - - public static void invitePlayer(Player player, String guild, int seconds) - { - if (seconds > 0) + String[] split = s.split(" "); + for (int i = 0; i < split.length; i++) { - invitedPlayers.put(player.getName(), guild); - player.sendMessage(ChatColor.GREEN + "To accept or decline, type /inviteguild accept or /inviteguild deny"); - player.sendMessage(ChatColor.GREEN + "You have " + seconds + " seconds to accept the request before it gets declined automatically."); + split[i] = ChatColor.stripColor(colorize(split[i].toLowerCase())); } - new BukkitRunnable() - { - public void run() - { - if (!invitedPlayers.containsKey(player.getName())) - { - return; - } - invitedPlayers.remove(player.getName()); - player.sendMessage(ChatColor.RED + "Your invitation has expired."); - } - }.runTaskLater(plugin, seconds * 20); + return StringUtils.join(split, "_"); } - public static void setTag(String tag, String guildName) + public static String colorize(String string) { - 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 String getTimeCreated(String guildName) - { - return plugin.guilds.getString("guilds." + guildName + ".created"); - } - - 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"); - if (guildMembers != null) - { - try - { - for (String guild : guildMembers.getKeys(false)) - { - List members = plugin.guilds.getStringList("guilds." + guild + ".members"); - if (members.contains(player.getName())) - { - a = true; - g = guild; - } - } - } - catch (Exception e) - { - e.fillInStackTrace(); - } - } - if (!a) - return null; - return g; - } - - public static String getGuild(String arg) - { - String g = ""; - boolean a = false; - ConfigurationSection guildMembers = plugin.guilds.getConfigurationSection("guilds"); - if (guildMembers != null) - { - try - { - for (String guild : guildMembers.getKeys(false)) - { - if (guild.equals(arg)) - { - a = true; - g = guild; - } - } - } - catch (Exception e) - { - e.fillInStackTrace(); - } - } - if (!a) - return null; - return g; - } - - public static List getGuilds() - { - return plugin.guilds.getStringList("list"); - } - - public static String getOwner(String guildName) - { - return plugin.guilds.getString("guilds." + guildName + ".owner"); - } - - public static List getModerators(String guildName) - { - return plugin.guilds.getStringList("guilds." + guildName + ".moderators"); - } - - public static List getMember(String guildName) - { - return plugin.guilds.getStringList("guilds." + guildName + ".members"); - } - - public static boolean isGuildMember(Player player, String guildName) - { - return getMember(guildName).contains(player.getName()); - } - - public static boolean isGuildModerator(Player player, String guildName) - { - return getModerators(guildName).contains(player.getName()); - } - - public static void guildChat(CommandSender sender, String message, String guildName) - { - String sent = ChatColor.DARK_GRAY + "[" + ChatColor.BLUE + "GC" + ChatColor.DARK_GRAY + "] " + getTag(guildName) + ChatColor.BLUE + sender - .getName() + ChatColor.GRAY + ": " + ChatColor.AQUA + message; - GLog.info(sent); - for (Player player : Bukkit.getOnlinePlayers()) - { - if (isGuildMember(player, guildName)) - { - player.sendMessage(sent); - } - } - } - - public static List BLACKLISTED_NAMES_AND_TAGS = Arrays.asList( - "admin", "owner", "moderator", "developer", "console", "dev", "staff", "mod", "sra", "tca", "sta", "sa"); - - public static String color(String s) - { - return ChatColor.translateAlternateColorCodes('&', s); - } - - public static String translateHexColorCodes(String message) - { - Pattern pattern = Pattern.compile("&#[a-f0-9A-F]{6}"); - Matcher matcher = pattern.matcher(message); - + Matcher matcher = Pattern.compile("&#[a-f0-9A-F]{6}").matcher(string); while (matcher.find()) { - String color = matcher.group().replace("&", ""); - message = message.replace("&" + color, net.md_5.bungee.api.ChatColor.of(color) + ""); + String code = matcher.group().replace("&", ""); + string = string.replace("&" + code, net.md_5.bungee.api.ChatColor.of(code) + ""); } - message = ChatColor.translateAlternateColorCodes('&', message); - return message; + string = ChatColor.translateAlternateColorCodes('&', string); + return string; + } + + public static String format(long time) + { + Date date = new Date(time); + return STANDARD.format(date); } } \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..86cbe2f --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,7 @@ +# +# TFGuilds - Configuration +# + +scheme: + primary: GREEN + secondary: DARK_GREEN \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 531f195..786b26d 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,61 +1,20 @@ name: TFGuilds version: ${project.version} main: me.totalfreedom.tfguilds.TFGuilds -api-version: 1.15 -authors: [speednt] -description: Plugin which allows for players to make their own guilds on the server -depend: [TotalFreedomMod] +api-version: 1.13 +softdepend: [TotalFreedomMod] +authors: [speed, super] +description: A guilds plugin for the TotalFreedom server. commands: - tfguilds: - description: Plugin info - usage: / - aliases: [guilds, tfguildsinfo, tfginfo, guildsinfo] - createguild: - description: Creates a guild - usage: / - aliases: [guildcreate] - guildtag: - description: Modify your guild's tag - usage: / | clear> - aliases: [gtag] + guild: + description: The main command of TFGuilds. + usage: / [list [guild] | help | create | disband [name] | invite | addmod | player> | removemod | name> | createrole | setowner | player> | kick | player> | leave | setstate | state> | tp | info [guild] | tag | clear> | join | chat [message] | saveconfig] + aliases: [g] guildchat: - description: Speak to your guild - usage: / - aliases: [gchat] - disbandguild: - description: Deletes your guild - usage: / - aliases: [deleteguild] - guildteleport: - description: Teleport to other guild members - usage: / - aliases: [guildtp, tpguild] - inviteguild: - description: If invited, allows you to join a guild - usage: / - aliases: [guildinvite] - leaveguild: - description: Leave your guild - usage: / - aliases: [guildleave] - guildkick: - description: Kicks a player from the guild - usage: / - guildinfo: - description: Gives you information about any guild - usage: / - guildadmin: - description: Guild commands only for admins - usage: / - guildsetmoderator: - description: Promotes a player to guild mod - usage: / - aliases: [gsetmod, setguildmod, setguildmoderator, guildsetmod, guildpromote, gpromote] - guildremovemoderator: - description: Demotes a guild mod - usage: / - aliases: [gremovemod, removeguildmod, removeguildmoderator, guildremovemod, guilddemote, gdemote] - guildlist: - description: Lists all guilds + description: Talk in chat with your guild. + usage: / [message] + aliases: [gchat, gc] + tfguilds: + description: Information about the plugin. usage: / - aliases: [listguilds] + aliases: [tfg] \ No newline at end of file