diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 86bb373..9898a0e 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -9,24 +9,6 @@
-
-
-
-
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index b4f03dc..e67be4a 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -11,7 +11,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index bcc693d..b008060 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -6,35 +6,35 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TFGuilds.iml b/TFGuilds.iml
index d0c8bd9..f2e91f0 100644
--- a/TFGuilds.iml
+++ b/TFGuilds.iml
@@ -9,7 +9,7 @@
-
+
@@ -19,26 +19,13 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -68,6 +55,7 @@
+
@@ -87,6 +75,7 @@
+
@@ -105,6 +94,13 @@
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index d54f138..c7b46d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,29 +63,19 @@
spigotmc-repo
https://hub.spigotmc.org/nexus/content/repositories/snapshots/
-
- sonatype
- https://oss.sonatype.org/content/groups/public/
-
org.spigotmc
spigot-api
- 1.16.4-R0.1-SNAPSHOT
+ 1.16.5-R0.1-SNAPSHOT
provided
com.github.AtlasMediaGroup
TotalFreedomMod
- development-0be2aa718f-1
- provided
-
-
- org.projectlombok
- lombok
- 1.18.16
+ main-SNAPSHOT
provided
diff --git a/src/main/java/me/totalfreedom/tfguilds/Common.java b/src/main/java/me/totalfreedom/tfguilds/Common.java
index 1d036a7..ffd279a 100644
--- a/src/main/java/me/totalfreedom/tfguilds/Common.java
+++ b/src/main/java/me/totalfreedom/tfguilds/Common.java
@@ -1,37 +1,23 @@
package me.totalfreedom.tfguilds;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-import me.totalfreedom.tfguilds.config.ConfigEntry;
-import me.totalfreedom.tfguilds.guild.Guild;
-import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
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 final String NG = ChatColor.RED + "You aren't in a guild!";
+ public static final String PREFIX = ChatColor.AQUA + "TFGuilds " + ChatColor.DARK_GRAY + "\u00BB " + ChatColor.GRAY;
+ public static final String NOT_IN_GUILD = PREFIX + "You are not in a guild.";
+ public static final String IN_GUILD = PREFIX + "You are already in a guild.";
+ public static final String PLAYER_NOT_FOUND = PREFIX + "That player is not online.";
+ public static final String PLAYER_NOT_IN_GUILD = PREFIX + "That player is not in your guild.";
+ public static final String IN_GAME_ONLY = PREFIX + "You must be in-game to interact with guilds";
+ public static final String USAGE = PREFIX + "Correct usage: " + ChatColor.GOLD;
- public static Map INVITES = new HashMap<>();
- public static List IN_GUILD_CHAT = new ArrayList<>();
- public static List CHAT_SPY = new ArrayList<>();
+ public static final TFMBridge tfmBridge = TFGuilds.getPlugin().getTfmBridge();
- public static String tl(String in)
- {
- return in.replaceAll("%p%", PRIMARY + "").replaceAll("%s%", SECONDARY + "");
- }
-
- public static void broadcast(String msg)
- {
- Bukkit.broadcastMessage(msg);
- }
-}
\ No newline at end of file
+ public static List GUILD_CHAT = new ArrayList<>();
+ public static List GUILD_CHAT_SPY = new ArrayList<>();
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java
index c68d26b..25b2f96 100644
--- a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java
+++ b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java
@@ -1,91 +1,115 @@
package me.totalfreedom.tfguilds;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
-import me.totalfreedom.tfguilds.bridge.TFMBridge;
-import me.totalfreedom.tfguilds.command.GuildChatCommand;
-import me.totalfreedom.tfguilds.command.GuildChatSpyCommand;
-import me.totalfreedom.tfguilds.command.GuildCommand;
-import me.totalfreedom.tfguilds.command.TFGuildsCommand;
+import me.totalfreedom.tfguilds.command.*;
import me.totalfreedom.tfguilds.config.Config;
import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.guild.GuildWarp;
+import me.totalfreedom.tfguilds.guild.User;
import me.totalfreedom.tfguilds.listener.ChatListener;
import me.totalfreedom.tfguilds.listener.JoinListener;
import me.totalfreedom.tfguilds.sql.SQLDatabase;
-import me.totalfreedom.tfguilds.sql.SQLGuildData;
-import me.totalfreedom.tfguilds.sql.SQLRankData;
-import me.totalfreedom.tfguilds.sql.SQLUserData;
-import me.totalfreedom.tfguilds.sql.SQLWarpData;
-import me.totalfreedom.tfguilds.sql.SQLWorldData;
-import me.totalfreedom.tfguilds.util.GLog;
-import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
-public final class TFGuilds extends JavaPlugin
+public class TFGuilds extends JavaPlugin
{
- // TEMP FIX UNTIL REWRITE
- public Map guilds;
- public Map warps;
-
private static TFGuilds plugin;
+ private Config config;
+ private SQLDatabase sqlDatabase;
+ private TFMBridge tfmBridge;
+ private Map subCommands = new HashMap<>();
public static TFGuilds getPlugin()
{
return plugin;
}
- public Config config;
- public TFMBridge bridge;
- public SQLDatabase sql;
- public SQLGuildData guildData;
- public SQLRankData rankData;
- public SQLUserData userData;
- public SQLWarpData warpData;
- public SQLWorldData worldData;
-
@Override
public void onEnable()
{
- plugin = this;
+ this.plugin = this;
config = new Config("config.yml");
- bridge = new TFMBridge();
- guilds = new HashMap<>();
- warps = new HashMap<>();
- sql = new SQLDatabase();
- guildData = new SQLGuildData();
- rankData = new SQLRankData();
- userData = new SQLUserData();
- warpData = new SQLWarpData();
- worldData = new SQLWorldData();
- guildData.getAll();
- warpData.getAll();
- loadCommands();
- loadListeners();
- GLog.info("Enabled " + this.getDescription().getFullName());
+ sqlDatabase = new SQLDatabase(this);
+ User.loadAll();
+ Guild.loadAll();
+ tfmBridge = new TFMBridge();
+ tfmBridge.getTfm();
+ new JoinListener(this);
+ new ChatListener(this);
+ loadSubCommands();
+ getCommand("tfguilds").setExecutor(new TFGuildsCommand());
+ getCommand("guild").setExecutor(new GuildCommand());
+ getCommand("guildchatspy").setExecutor(new GuildChatSpyCommand());
}
@Override
public void onDisable()
{
- plugin = null;
config.save();
- GLog.info("Disabled " + this.getDescription().getFullName());
+ this.plugin = null;
}
- private void loadCommands()
+ public Config getConfig()
{
- this.getCommand("guild").setExecutor(new GuildCommand());
- this.getCommand("guildchat").setExecutor(new GuildChatCommand());
- this.getCommand("tfguilds").setExecutor(new TFGuildsCommand());
- this.getCommand("guildchatspy").setExecutor(new GuildChatSpyCommand());
+ return config;
}
- private void loadListeners()
+ public SQLDatabase getSQL()
{
- PluginManager manager = this.getServer().getPluginManager();
- manager.registerEvents(new ChatListener(), this);
- manager.registerEvents(new JoinListener(), this);
+ return sqlDatabase;
}
-}
\ No newline at end of file
+
+ public TFMBridge getTfmBridge()
+ {
+ return tfmBridge;
+ }
+
+ public SubCommand getSubCommand(String name)
+ {
+ return subCommands.get(name);
+ }
+
+ public List getSubCommands()
+ {
+ List commands = new ArrayList<>(subCommands.keySet());
+ Collections.sort(commands);
+ return commands;
+ }
+
+ private void loadSubCommands()
+ {
+ subCommands.put("create", new CreateSubCommand());
+ subCommands.put("info", new InfoSubCommand());
+ subCommands.put("disband", new DisbandSubCommand());
+ subCommands.put("invite", new InviteSubCommand());
+ subCommands.put("join", new JoinSubCommand());
+ subCommands.put("leave", new LeaveSubCommand());
+ subCommands.put("warps", new WarpsSubCommand());
+ subCommands.put("setwarp", new SetWarpSubCommand());
+ subCommands.put("addmod", new AddModSubCommand());
+ subCommands.put("removemod", new RemoveModSubCommand());
+ subCommands.put("createrank", new CreateRankSubCommand());
+ subCommands.put("deleterank", new DeleteRankSubCommand());
+ subCommands.put("warp", new WarpSubCommand());
+ subCommands.put("setrank", new SetRankSubCommand());
+ subCommands.put("deletewarp", new DeleteWarpSubCommand());
+ subCommands.put("kick", new KickSubCommand());
+ subCommands.put("setowner", new SetOwnerSubCommand());
+ subCommands.put("setstate", new SetStateSubCommand());
+ subCommands.put("setdefaultrank", new SetDefaultRankSubCommand());
+ subCommands.put("home", new HomeSubCommand());
+ subCommands.put("tp", new TpSubCommand());
+ subCommands.put("roster", new RosterSubCommand());
+ subCommands.put("toggletag", new ToggleTagSubCommand());
+ subCommands.put("chat", new ChatSubCommand());
+ subCommands.put("motd", new MotdSubCommand());
+ subCommands.put("toggletags", new ToggleTagsSubCommand());
+ subCommands.put("tag", new TagSubCommand());
+ subCommands.put("list", new ListSubCommand());
+ subCommands.put("help", new HelpSubCommand());
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/TFMBridge.java b/src/main/java/me/totalfreedom/tfguilds/TFMBridge.java
new file mode 100644
index 0000000..f440b74
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/TFMBridge.java
@@ -0,0 +1,64 @@
+package me.totalfreedom.tfguilds;
+
+import me.totalfreedom.totalfreedommod.TotalFreedomMod;
+import org.bukkit.Bukkit;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.Plugin;
+
+public class TFMBridge
+{
+
+ private final TFGuilds plugin = TFGuilds.getPlugin();
+ private TotalFreedomMod tfm = null;
+
+ public TotalFreedomMod getTfm()
+ {
+ if (tfm == null)
+ {
+ try
+ {
+ final Plugin tfmPlugin = plugin.getServer().getPluginManager().getPlugin("TotalFreedomMod");
+ if (tfmPlugin != null && tfmPlugin.isEnabled() && tfmPlugin instanceof TotalFreedomMod)
+ {
+ tfm = (TotalFreedomMod)tfmPlugin;
+ }
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ return tfm;
+ }
+
+ public boolean isAdmin(Player player)
+ {
+ if (getTfm() == null)
+ {
+ Bukkit.getLogger().warning("TotalFreedomMod not detected, checking operator status instead.");
+ return player.isOp();
+ }
+ return getTfm().al.isAdmin(player);
+ }
+
+ public boolean isAdmin(CommandSender sender)
+ {
+ if (getTfm() == null)
+ {
+ Bukkit.getLogger().warning("TotalFreedomMod not detected, checking operator status instead.");
+ return sender.isOp();
+ }
+ return getTfm().al.isAdmin(sender);
+ }
+
+ public boolean isVanished(Player player)
+ {
+ if (getTfm() == null)
+ {
+ Bukkit.getLogger().warning("TotalFreedomMod not detected, vanish will return false.");
+ return false;
+ }
+ return getTfm().al.isVanished(player.getName());
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java b/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java
deleted file mode 100644
index d63ef18..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package me.totalfreedom.tfguilds.bridge;
-
-import me.totalfreedom.tfguilds.TFGuilds;
-import me.totalfreedom.tfguilds.util.GLog;
-import me.totalfreedom.totalfreedommod.TotalFreedomMod;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-import org.bukkit.plugin.Plugin;
-
-public class TFMBridge
-{
- private final TFGuilds plugin;
- private TotalFreedomMod tfmPlugin;
-
- public TFMBridge()
- {
- this.plugin = TFGuilds.getPlugin();
- this.tfmPlugin = null;
- }
-
- public TotalFreedomMod getTFM()
- {
- if (tfmPlugin == null)
- {
- try
- {
- final Plugin tfm = plugin.getServer().getPluginManager().getPlugin("TotalFreedomMod");
- if (tfm != null && tfm instanceof TotalFreedomMod)
- {
- tfmPlugin = (TotalFreedomMod)tfm;
- }
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
- return tfmPlugin;
- }
-
- public boolean isAdmin(Player player)
- {
- if (getTFM() == null)
- {
- GLog.warn("TFM not detected on the server. Checking if player is OP...");
- return player.isOp();
- }
-
- return getTFM().al.isAdmin(player);
- }
-
- public boolean isAdmin(CommandSender sender)
- {
- if (getTFM() == null)
- {
- GLog.warn("TFM not detected on the server. Checking if sender is OP...");
- return sender.isOp();
- }
-
- return getTFM().al.isAdmin(sender);
- }
-
- public boolean isVanished(Player player)
- {
- if (getTFM() == null)
- {
- GLog.warn("TFM not detected on the server.");
- return false;
- }
- return getTFM().al.isVanished(player.getName());
- }
-}
\ 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..843f850
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/AddModSubCommand.java
@@ -0,0 +1,70 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class AddModSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length != 2)
+ {
+ sender.sendMessage(USAGE + "/g addmod ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ Player player = Bukkit.getPlayer(args[1]);
+ if (player == null || tfmBridge.isVanished(player))
+ {
+ sender.sendMessage(PLAYER_NOT_FOUND);
+ return;
+ }
+
+ if (!guild.getOwner().equals(playerSender.getUniqueId()))
+ {
+ sender.sendMessage(PREFIX + "You must be the guild owner to add moderators!");
+ return;
+ }
+
+ if (playerSender.equals(player))
+ {
+ sender.sendMessage(PREFIX + "You are the owner of your guild, you are already a moderator.");
+ return;
+ }
+
+ if (!guild.isMember(player))
+ {
+ sender.sendMessage(PLAYER_NOT_IN_GUILD);
+ return;
+ }
+
+ if (guild.isModerator(player))
+ {
+ sender.sendMessage(PREFIX + "That player is already a moderator!");
+ return;
+ }
+
+ guild.addModerator(player);
+ sender.sendMessage(PREFIX + "Successfully added " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " as a moderator.");
+ player.sendMessage(PREFIX + "You are now a guild moderator for your guild!");
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java
deleted file mode 100644
index 81c37d0..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java
+++ /dev/null
@@ -1,123 +0,0 @@
-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 == 1 || args.length > 3)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g addmod | player>"));
- return true;
- }
-
- 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.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
- return true;
- }
-
- if (guild.getOwner().equals(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "No need to make the owner a moderator!");
- return true;
- }
-
- if (guild.hasModerator(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This member is already a moderator for this guild!");
- return true;
- }
-
- guild.addModerator(player.getUniqueId());
- 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(NG);
- return true;
- }
-
- if (!guild.getOwner().equals(player.getUniqueId()))
- {
- 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.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "No need to make yourself a moderator!");
- return true;
- }
-
- if (!guild.hasMember(n.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
- return true;
- }
-
- if (guild.hasModerator(n.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This member is already a moderator for your guild!");
- return true;
- }
-
- guild.addModerator(n.getUniqueId());
- 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..bd2fa2c
--- /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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class ChatSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (args.length >= 2)
+ {
+ String message = StringUtils.join(args, " ", 1, args.length);
+ guild.chat(playerSender, message);
+ return;
+ }
+
+ if (GUILD_CHAT.contains(playerSender))
+ {
+ GUILD_CHAT.remove(playerSender);
+ sender.sendMessage(PREFIX + "Guild chat " + ChatColor.GOLD + "disabled");
+ return;
+ }
+
+ GUILD_CHAT.add(playerSender);
+ sender.sendMessage(PREFIX + "Guild chat " + ChatColor.GOLD + "enabled");
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java
deleted file mode 100644
index 427036a..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java
+++ /dev/null
@@ -1,50 +0,0 @@
-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(NG);
- 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/CreateRankSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubCommand.java
new file mode 100644
index 0000000..4413ca9
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubCommand.java
@@ -0,0 +1,70 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class CreateRankSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 2)
+ {
+ sender.sendMessage(USAGE + " /g createrank ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.getOwner().equals(playerSender.getUniqueId()))
+ {
+ sender.sendMessage(PREFIX + "Only the guild owner can create ranks for the guild!");
+ return;
+ }
+
+ String name = StringUtils.join(args, " ", 1, args.length);
+ if (!StringUtils.isAlphanumericSpace(name) || name.isBlank())
+ {
+ sender.sendMessage(PREFIX + "The rank name must be alphanumeric!");
+ return;
+ }
+
+ if (name.length() > 15)
+ {
+ sender.sendMessage(PREFIX + "The rank name cannot go over 15 characters limit.");
+ return;
+ }
+
+ if (GUtil.containsBlacklistedWord(name))
+ {
+ sender.sendMessage(PREFIX + "The guild name contains a blacklisted word.");
+ return;
+ }
+
+ if (guild.hasRank(name))
+ {
+ sender.sendMessage(PREFIX + "That rank already exists!");
+ return;
+ }
+
+ guild.createRank(name);
+ sender.sendMessage(PREFIX + "Successfully created a new rank " + ChatColor.GOLD + name);
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java
deleted file mode 100644
index a8021ed..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package me.totalfreedom.tfguilds.command;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-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 CreateRankSubcommand 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)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g createrank "));
- return true;
- }
-
- Player player = (Player)sender;
- Guild guild = Guild.getGuild(player);
- if (guild == null)
- {
- sender.sendMessage(NG);
- return true;
- }
-
- if (!guild.getOwner().equals(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You can't create ranks for your guild!");
- return true;
- }
-
- String rank = StringUtils.join(args, " ", 1, args.length);
-
- for (String blacklisted : GUtil.BLACKLISTED_NAMES_AND_TAGS)
- {
- if (rank.equalsIgnoreCase(blacklisted))
- {
- if (!plugin.bridge.isAdmin(player))
- {
- player.sendMessage(ChatColor.RED + "You may not use that name.");
- return true;
- }
- }
- }
-
- Pattern pattern = Pattern.compile("^[A-Za-z0-9? ,_-]+$");
- Matcher matcher = pattern.matcher(rank);
-
- if (!matcher.matches())
- {
- sender.sendMessage(ChatColor.RED + "Guild rank names must be alphanumeric.");
- return true;
- }
-
- if (rank.length() > 15)
- {
- sender.sendMessage(ChatColor.RED + "Guild rank names may not be over 15 characters.");
- return true;
- }
-
- if (guild.hasRank(rank))
- {
- sender.sendMessage(ChatColor.RED + "A rank of that name already exists in the guild!");
- return true;
- }
-
- guild.addRank(rank);
- sender.sendMessage(tl(PREFIX + "Created a new rank named %s%" + rank + "%p% for your guild."));
- guild.save();
- 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..39314bb
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubCommand.java
@@ -0,0 +1,65 @@
+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.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class CreateSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 2)
+ {
+ sender.sendMessage(USAGE + "/g create ");
+ return;
+ }
+
+ if (Guild.isAlreadyMember(playerSender))
+ {
+ sender.sendMessage(IN_GUILD);
+ return;
+ }
+
+ String name = StringUtils.join(args, " ", 1, args.length);
+ if (!StringUtils.isAlphanumericSpace(name) || name.isBlank())
+ {
+ sender.sendMessage(PREFIX + "The guild name must be alphanumeric.");
+ return;
+ }
+
+ if (name.length() > 30)
+ {
+ sender.sendMessage(PREFIX + "The guild name cannot go over 30 characters limit.");
+ return;
+ }
+
+ if (Guild.hasGuild(name))
+ {
+ sender.sendMessage(PREFIX + "The guild name is already taken.");
+ return;
+ }
+
+ if (GUtil.containsBlacklistedWord(name))
+ {
+ sender.sendMessage(PREFIX + "The guild name contains a blacklisted word.");
+ return;
+ }
+
+ Guild.create(playerSender, name);
+ sender.sendMessage(PREFIX + "The guild " + ChatColor.GOLD + name + ChatColor.GRAY + " has been created.");
+ Bukkit.broadcastMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has created a guild " + ChatColor.GOLD + name);
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java
deleted file mode 100644
index 23212cb..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package me.totalfreedom.tfguilds.command;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-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;
- }
-
- if (args.length < 2)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g create "));
- 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;
- }
-
- Pattern pattern = Pattern.compile("^[A-Za-z0-9? ,_-]+$");
- Matcher matcher = pattern.matcher(name);
-
- if (!matcher.matches())
- {
- sender.sendMessage(ChatColor.RED + "Guild names must be alphanumeric.");
- return true;
- }
-
- if (name.length() > 30)
- {
- sender.sendMessage(ChatColor.RED + "Your guild name may not be over 30 characters.");
- return true;
- }
-
- if (Guild.guildExists(identifier))
- {
- sender.sendMessage(ChatColor.RED + "A guild with a name similar to yours already exists!");
- return true;
- }
-
- for (String blacklisted : GUtil.BLACKLISTED_NAMES_AND_TAGS)
- {
- if (name.equalsIgnoreCase(blacklisted))
- {
- if (!plugin.bridge.isAdmin(player))
- {
- player.sendMessage(ChatColor.RED + "You may not use that name.");
- return true;
- }
- }
- }
-
- Guild.createGuild(identifier, name, player);
- sender.sendMessage(tl(PREFIX + "Created a guild named \"" + GUtil.colorize(name) + "%p%\"!"));
- broadcast(GUtil.colorize(tl("%p%" + sender.getName() + " has created guild %p%&l" + name)));
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubCommand.java
new file mode 100644
index 0000000..d41a270
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubCommand.java
@@ -0,0 +1,51 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class DeleteRankSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 2)
+ {
+ sender.sendMessage(USAGE + "/g deleterank ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(PREFIX + "You are not in a guild!");
+ return;
+ }
+
+ if (!guild.getOwner().equals(playerSender.getUniqueId()))
+ {
+ sender.sendMessage(PREFIX + "Only the guild owner can delete ranks for the guild!");
+ return;
+ }
+
+ String name = StringUtils.join(args, " ", 1, args.length);
+ if (!guild.hasRank(name))
+ {
+ sender.sendMessage(PREFIX + "That rank does not exist!");
+ return;
+ }
+
+ guild.deleteRank(name);
+ sender.sendMessage(PREFIX + "Successfully deleted a rank " + ChatColor.GOLD + name);
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java
deleted file mode 100644
index e006e93..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java
+++ /dev/null
@@ -1,63 +0,0 @@
-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 DeleteRankSubcommand 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)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g deleterank "));
- return true;
- }
-
- Player player = (Player)sender;
- Guild guild = Guild.getGuild(player);
- if (guild == null)
- {
- sender.sendMessage(NG);
- return true;
- }
-
- if (!guild.getOwner().equals(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You can't delete ranks from your guild!");
- return true;
- }
-
- String rank = StringUtils.join(args, " ", 1, args.length);
- if (!guild.hasRank(rank))
- {
- sender.sendMessage(ChatColor.RED + "A rank of that name does not exist in the guild!");
- return true;
- }
-
- guild.removeRank(rank);
-
- if (guild.hasDefaultRank() && rank.equals(guild.getDefaultRank()))
- {
- guild.setDefaultRank(null);
- guild.save();
- }
-
- sender.sendMessage(tl(PREFIX + "Deleted the rank named %s%" + rank + "%p% in your guild."));
- guild.save();
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubCommand.java
new file mode 100644
index 0000000..9cd8f88
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubCommand.java
@@ -0,0 +1,51 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class DeleteWarpSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 2)
+ {
+ sender.sendMessage(USAGE + "/g deletewarp ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.isModerator(playerSender))
+ {
+ sender.sendMessage(PREFIX + "You must be a guild moderator or owner to create a warp for the guild.");
+ return;
+ }
+
+ String name = StringUtils.join(args, " ", 1, args.length);
+ if (!guild.hasWarp(name))
+ {
+ sender.sendMessage(PREFIX + "That warp does not exist.");
+ return;
+ }
+
+ guild.removeWarp(name);
+ sender.sendMessage(PREFIX + "Successfully removed a warp " + ChatColor.GOLD + name);
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubcommand.java
deleted file mode 100644
index 9d284f1..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubcommand.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package me.totalfreedom.tfguilds.command;
-
-import me.totalfreedom.tfguilds.Common;
-import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.guild.GuildWarp;
-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 DeleteWarpSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length < 2)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g deletewarp "));
- 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(NG);
- return true;
- }
-
- if (!guild.hasModerator(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "Only guild moderators and guild owners are allowed to create guild warps.");
- return true;
- }
-
- String warpName = StringUtils.join(args, " ", 1, args.length);
- if (!guild.warpExists(warpName))
- {
- sender.sendMessage(ChatColor.RED + "Warp not found.");
- return true;
- }
-
- GuildWarp warp = plugin.warpData.get(guild.getIdentifier(), warpName);
- plugin.warpData.delete(warp);
- sender.sendMessage(tl(PREFIX + "Deleted guild warp \"" + warpName + "\"."));
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubCommand.java
new file mode 100644
index 0000000..e26b6b9
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubCommand.java
@@ -0,0 +1,60 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class DisbandSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length >= 2)
+ {
+ if (!tfmBridge.isAdmin(sender))
+ {
+ sender.sendMessage(PREFIX + "You do not have permission.");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(PREFIX + "That guild does not exist.");
+ return;
+ }
+
+ guild.disband();
+ sender.sendMessage(PREFIX + "The guild " + ChatColor.GOLD + guild.getName() + ChatColor.GRAY + " has been disbanded.");
+ Bukkit.broadcastMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has disbanded the guild " + ChatColor.GOLD + guild.getName());
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.getOwner().equals(playerSender.getUniqueId()))
+ {
+ sender.sendMessage(PREFIX + "You are not the guild owner!");
+ return;
+ }
+
+ sender.sendMessage(PREFIX + "The guild " + ChatColor.GOLD + guild.getName() + ChatColor.GRAY + " has been disbanded.");
+ Bukkit.broadcastMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has disbanded the guild " + ChatColor.GOLD + guild.getName());
+ guild.disband();
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java
deleted file mode 100644
index c72c460..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package me.totalfreedom.tfguilds.command;
-
-import me.totalfreedom.tfguilds.Common;
-import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.util.GLog;
-import me.totalfreedom.tfguilds.util.GUtil;
-import org.apache.commons.lang.StringUtils;
-import org.bukkit.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)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g disband [name]"));
- return true;
- }
-
- if (args.length == 2)
- {
- if (!plugin.bridge.isAdmin(sender))
- {
- sender.sendMessage(NO_PERMS);
- 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;
- }
-
- String n = guild.getName();
- GLog.info("Removing guild data for " + n);
- guild.disband();
- GLog.info(sender.getName() + " deleted guild " + guild.getName());
- sender.sendMessage(tl(PREFIX + "Disbanded \"" + GUtil.colorize(n) + "%p%\"."));
- broadcast(GUtil.colorize(tl("%p%" + sender.getName() + " has disbanded guild %p%&l" + guild.getName())));
- return true;
- }
-
- if (sender instanceof ConsoleCommandSender)
- {
- sender.sendMessage(NO_PERMS);
- return true;
- }
-
- Player player = (Player)sender;
- if (!Guild.isInGuild(player))
- {
- sender.sendMessage(NG);
- return true;
- }
-
- Guild guild = Guild.getGuild(player);
- if (!guild.getOwner().equals(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You are not the owner of this guild!");
- return true;
- }
-
- GLog.info("Removing guild data for " + guild.getName());
- guild.disband();
- GLog.info(player.getName() + " deleted guild " + guild.getName());
- sender.sendMessage(tl(PREFIX + "You have disbanded your guild!"));
- broadcast(GUtil.colorize(tl("%p%&l" + guild.getName() + "%p% has been disbanded")));
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java
deleted file mode 100644
index 428f42b..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java
+++ /dev/null
@@ -1,50 +0,0 @@
-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 GuildChatCommand 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(NG);
- return true;
- }
-
- if (args.length >= 1)
- {
- String message = StringUtils.join(args, " ", 0, args.length);
- guild.chat(player.getName(), message);
- return true;
- }
-
- if (IN_GUILD_CHAT.contains(player))
- {
- IN_GUILD_CHAT.remove(player);
- sender.sendMessage(tl("%p%Guild chat toggled off."));
- return true;
- }
-
- IN_GUILD_CHAT.add(player);
- sender.sendMessage(tl("%p%Guild chat toggled on."));
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildChatSpyCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildChatSpyCommand.java
index a05960e..286d672 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/GuildChatSpyCommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildChatSpyCommand.java
@@ -1,39 +1,40 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
+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 GuildChatSpyCommand extends Common implements CommandExecutor
{
+
@Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
+ public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
- if (sender instanceof ConsoleCommandSender)
+ if (!(sender instanceof Player))
{
- sender.sendMessage(NO_PERMS);
+ sender.sendMessage(PREFIX + "Console can already view guild chat.");
return true;
}
- if (!plugin.bridge.isAdmin(sender))
+ if (!tfmBridge.isAdmin(sender))
{
- sender.sendMessage(NO_PERMS);
+ sender.sendMessage(PREFIX + "You do not have the permission.");
return true;
}
Player player = (Player)sender;
- if (CHAT_SPY.contains(player))
+ if (GUILD_CHAT_SPY.contains(player))
{
- CHAT_SPY.remove(player);
- sender.sendMessage(tl(PREFIX + "%p%Global guild chat spy disabled."));
+ GUILD_CHAT_SPY.remove(player);
+ sender.sendMessage(PREFIX + ChatColor.GOLD + "Disabled " + ChatColor.GRAY + "guild chat spy.");
return true;
}
- CHAT_SPY.add(player);
- sender.sendMessage(tl(PREFIX + "%p%Global guild chat spy enabled."));
+ GUILD_CHAT_SPY.add(player);
+ sender.sendMessage(PREFIX + ChatColor.GOLD + "Enabled " + ChatColor.GRAY + "guild chat spy.");
return true;
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java
index 60a4e99..13af0f3 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java
@@ -1,11 +1,10 @@
package me.totalfreedom.tfguilds.command;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import me.totalfreedom.tfguilds.Common;
-import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.util.GUtil;
+import me.totalfreedom.tfguilds.TFGuilds;
+import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
@@ -14,209 +13,36 @@ import org.bukkit.entity.Player;
public class GuildCommand extends Common implements CommandExecutor, TabCompleter
{
+
@Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
+ public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
+ Player playerSender = null;
+ if (sender instanceof Player)
+ {
+ playerSender = (Player)sender;
+ }
+
if (args.length >= 1)
{
- switch (args[0].toLowerCase())
+ String name = args[0].toLowerCase();
+ SubCommand command = TFGuilds.getPlugin().getSubCommand(name);
+ if (command != null)
{
- // Please keep the commands here & in HelpSubcommand.java in alphabetical order
- case "addmod":
- return new AddModSubcommand().onCommand(sender, command, label, args);
- case "chat":
- return new ChatSubcommand().onCommand(sender, command, label, args);
- case "createrank":
- return new CreateRankSubcommand().onCommand(sender, command, label, args);
- case "create":
- return new CreateSubcommand().onCommand(sender, command, label, args);
- case "deleterank":
- return new DeleteRankSubcommand().onCommand(sender, command, label, args);
- case "deletewarp":
- return new DeleteWarpSubcommand().onCommand(sender, command, label, args);
- case "disband":
- return new DisbandSubcommand().onCommand(sender, command, label, args);
- case "help":
- return new HelpSubcommand().onCommand(sender, command, label, args);
- case "home":
- return new HomeSubcommand().onCommand(sender, command, label, args);
- case "info":
- return new InfoSubcommand().onCommand(sender, command, label, args);
- case "invite":
- return new InviteSubcommand().onCommand(sender, command, label, args);
- case "join":
- return new JoinSubcommand().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 "list":
- return new ListSubcommand().onCommand(sender, command, label, args);
- case "motd":
- return new MOTDSubcommand().onCommand(sender, command, label, args);
- case "removemod":
- return new RemoveModSubcommand().onCommand(sender, command, label, args);
- case "rename":
- return new RenameSubcommand().onCommand(sender, command, label, args);
- case "roster":
- return new RosterSubcommand().onCommand(sender, command, label, args);
- case "setdefaultrank":
- return new SetDefaultRankSubcommand().onCommand(sender, command, label, args);
- case "setmember":
- return new SetMemberSubcommand().onCommand(sender, command, label, args);
- case "setowner":
- return new SetOwnerSubcommand().onCommand(sender, command, label, args);
- case "setrank":
- return new SetRankSubcommand().onCommand(sender, command, label, args);
- case "setstate":
- return new SetStateSubcommand().onCommand(sender, command, label, args);
- case "setwarp":
- return new SetWarpSubcommand().onCommand(sender, command, label, args);
- case "tag":
- return new TagSubcommand().onCommand(sender, command, label, args);
- case "toggletags":
- return new ToggleTagsSubcommand().onCommand(sender, command, label, args);
- case "toggletag":
- return new ToggleTagSubcommand().onCommand(sender, command, label, args);
- case "tp":
- return new TPSubcommand().onCommand(sender, command, label, args);
- case "warps":
- return new WarpsSubcommand().onCommand(sender, command, label, args);
- case "warp":
- return new WarpSubcommand().onCommand(sender, command, label, args);
+ command.execute(sender, playerSender, args);
+ }
+ else
+ {
+ sender.sendMessage(PREFIX + "Unknown subcommand, do " + ChatColor.GOLD + "/g help" + ChatColor.GRAY + " for help.");
}
- sender.sendMessage(tl(PREFIX + "Unknown command - Run /g help if you need help"));
return true;
}
- return new HelpSubcommand().onCommand(sender, command, label, args);
+ return true;
}
@Override
- public List onTabComplete(CommandSender sender, Command command, String label, String[] args)
+ public List onTabComplete(CommandSender sender, Command cmd, String label, String[] args)
{
- if (args.length == 1)
- {
- return Arrays.asList("addmod", "chat", "createrank", "create",
- "deleterank", "deletewarp", "disband", "help", "home", "info", "invite",
- "join", "kick", "leave", "list", "motd", "removemod", "rename",
- "roster", "setdefaultrank", "setmember", "setowner", "setrank", "setstate",
- "setwarp", "tag", "toggletags", "toggletag", "tp", "warps", "warp");
- }
- else if (args.length == 2)
- {
- switch (args[0])
- {
- case "home":
- {
- return Arrays.asList("set");
- }
-
- case "info":
- case "join":
- case "roster":
- case "setmember":
- {
- return Guild.getGuildList();
- }
-
- case "toggletag":
- {
- if (!plugin.bridge.isAdmin(sender))
- {
- return Collections.emptyList();
- }
-
- return GUtil.getPlayerList();
- }
-
- case "motd":
- case "tag":
- {
- return Arrays.asList("set", "clear");
- }
-
- case "setstate":
- {
- return Arrays.asList("OPEN", "INVITE", "CLOSED");
- }
-
- case "invite":
- {
- return GUtil.getPlayerList();
- }
-
- case "deleterank":
- case "setdefaultrank":
- {
- if (sender instanceof Player)
- {
- Player player = (Player)sender;
- Guild guild = Guild.getGuild(player);
- if (guild.getOwner().equals(player.getUniqueId()))
- {
- return guild.getRankNames();
- }
- }
- }
-
- case "tp":
- {
- if (sender instanceof Player)
- {
- Player player = (Player)sender;
- Guild guild = Guild.getGuild(player);
- return guild.getOnlyMembers();
- }
- }
-
- case "disband":
- {
- if (!plugin.bridge.isAdmin(sender))
- {
- return Collections.emptyList();
- }
-
- return Guild.getGuildList();
- }
-
- case "kick":
- {
- if (sender instanceof Player)
- {
- Player player = (Player)sender;
- Guild guild = Guild.getGuild(player);
- if (guild.hasModerator(player.getUniqueId()))
- {
- return guild.getOnlyMembers();
- }
- }
- }
-
- case "removemod":
- case "addmod":
- case "setowner":
- {
- if (sender instanceof Player)
- {
- Player player = (Player)sender;
- Guild guild = Guild.getGuild(player);
- if (guild.getOwner().equals(player.getUniqueId()))
- {
- return guild.getOnlyMembers();
- }
- }
- }
-
- case "deletewarp":
- case "warp":
- {
- if (sender instanceof Player)
- {
- return Guild.getGuildWarps();
- }
- }
- }
- }
return Collections.emptyList();
}
-}
\ 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..838be05
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/HelpSubCommand.java
@@ -0,0 +1,22 @@
+package me.totalfreedom.tfguilds.command;
+
+import me.totalfreedom.tfguilds.Common;
+import me.totalfreedom.tfguilds.TFGuilds;
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class HelpSubCommand extends Common implements SubCommand
+{
+
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ sender.sendMessage(PREFIX + "Command List");
+ for (String command : TFGuilds.getPlugin().getSubCommands())
+ {
+ sender.sendMessage(ChatColor.GRAY + " - " + ChatColor.GOLD + command);
+ }
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java
deleted file mode 100644
index 4ae36a2..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java
+++ /dev/null
@@ -1,48 +0,0 @@
-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)
- {
- // Please keep the commands here & in GuildCommand.java in alphabetical order
- sender.sendMessage(tl("%s%[%p%TFGuilds%s%] %p%Command List"));
- sender.sendMessage(tl("%s% - %p%addmod | player>"));
- sender.sendMessage(tl("%s% - %p%chat [message]"));
- sender.sendMessage(tl("%s% - %p%createrank "));
- sender.sendMessage(tl("%s% - %p%create "));
- sender.sendMessage(tl("%s% - %p%deleterank "));
- sender.sendMessage(tl("%s% - %p%deletewarp "));
- sender.sendMessage(tl("%s% - %p%disband [name]"));
- sender.sendMessage(tl("%s% - %p%help"));
- sender.sendMessage(tl("%s% - %p%home [set]"));
- sender.sendMessage(tl("%s% - %p%info [guild | player]"));
- sender.sendMessage(tl("%s% - %p%invite "));
- sender.sendMessage(tl("%s% - %p%join "));
- sender.sendMessage(tl("%s% - %p%kick | player>"));
- sender.sendMessage(tl("%s% - %p%leave"));
- sender.sendMessage(tl("%s% - %p%list [page]"));
- sender.sendMessage(tl("%s% - %p%motd | clear>"));
- sender.sendMessage(tl("%s% - %p%removemod | name>"));
- sender.sendMessage(tl("%s% - %p%rename "));
- sender.sendMessage(tl("%s% - %p%roster [guild | player]"));
- sender.sendMessage(tl("%s% - %p%setdefaultrank "));
- sender.sendMessage(tl("%s% - %p%setmember "));
- sender.sendMessage(tl("%s% - %p%setowner | player>"));
- sender.sendMessage(tl("%s% - %p%setrank "));
- sender.sendMessage(tl("%s% - %p%setstate "));
- sender.sendMessage(tl("%s% - %p%setwarp "));
- sender.sendMessage(tl("%s% - %p%tag | clear [guild]>>"));
- sender.sendMessage(tl("%s% - %p%toggletags"));
- sender.sendMessage(tl("%s% - %p%toggletag [player]"));
- sender.sendMessage(tl("%s% - %p%tp "));
- sender.sendMessage(tl("%s% - %p%warps"));
- sender.sendMessage(tl("%s% - %p%warp "));
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/HomeSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/HomeSubCommand.java
new file mode 100644
index 0000000..236cd56
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/HomeSubCommand.java
@@ -0,0 +1,56 @@
+package me.totalfreedom.tfguilds.command;
+
+import me.totalfreedom.tfguilds.Common;
+import me.totalfreedom.tfguilds.guild.Guild;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class HomeSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length > 2)
+ {
+ sender.sendMessage(USAGE + "/g home [set]");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (args.length == 2)
+ {
+ if (args[1].equalsIgnoreCase("set"))
+ {
+ if (!guild.isModerator(playerSender))
+ {
+ sender.sendMessage(PREFIX + "Only guild moderators can set guild's home location");
+ return;
+ }
+
+ guild.setHome(playerSender.getLocation());
+ sender.sendMessage(PREFIX + "Successfully set guild's home to your location");
+ }
+ else
+ {
+ sender.sendMessage(USAGE + "/g home [set]");
+ }
+ return;
+ }
+
+ playerSender.teleport(guild.getHome());
+ sender.sendMessage(PREFIX + "Teleported to your guild's home!");
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java
deleted file mode 100644
index 9f4c50b..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java
+++ /dev/null
@@ -1,65 +0,0 @@
-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 HomeSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length > 2)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g home [set]"));
- 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(NG);
- return true;
- }
-
- if (args.length == 2)
- {
- if (args[1].equalsIgnoreCase("set"))
- {
- if (!guild.hasModerator(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You can't modify your guild's home!");
- return true;
- }
-
- guild.setHome(player.getLocation());
- guild.save();
- sender.sendMessage(tl(PREFIX + "Set your current location as the new home of your guild%p%."));
- return true;
- }
- return false;
- }
-
- if (!guild.hasHome())
- {
- sender.sendMessage(ChatColor.RED + "Your guild doesn't have a home!");
- return true;
- }
-
- player.teleport(guild.getHome());
- sender.sendMessage(tl("%p%Teleported you to your guild's home!"));
- return true;
- }
-}
\ 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..b493428
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/InfoSubCommand.java
@@ -0,0 +1,55 @@
+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.Bukkit;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class InfoSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (args.length >= 2)
+ {
+ Player player = Bukkit.getPlayer(args[1]);
+ if (player != null && !tfmBridge.isVanished(player))
+ {
+ Guild guild = Guild.getGuild(player);
+ if (guild != null)
+ {
+ sender.sendMessage(guild.toString());
+ return;
+ }
+ }
+
+ Guild guild = Guild.getGuild(StringUtils.join(args, " ", 1, args.length));
+ if (guild == null)
+ {
+ sender.sendMessage(PREFIX + "That guild does not exist.");
+ return;
+ }
+
+ sender.sendMessage(guild.toString());
+ return;
+ }
+
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(USAGE + "/g info ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ sender.sendMessage(guild.toString());
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java
deleted file mode 100644
index fcd4ede..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java
+++ /dev/null
@@ -1,60 +0,0 @@
-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.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 InfoSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length >= 2)
- {
- Player player = Bukkit.getPlayer(args[1]);
- if (player != null)
- {
- Guild guild = Guild.getGuild(player);
- if (guild != null)
- {
- sender.sendMessage(guild.getInformation());
- return true;
- }
- }
-
- Guild guild = Guild.getGuild(GUtil.flatten(StringUtils.join(args, " ", 1, args.length)));
- if (guild == null)
- {
- sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
- return true;
- }
-
- sender.sendMessage(guild.getInformation());
- return true;
- }
-
- if (sender instanceof ConsoleCommandSender)
- {
- sender.sendMessage(NO_PERMS);
- return true;
- }
-
- Guild guild = Guild.getGuild((Player)sender);
- if (guild == null)
- {
- sender.sendMessage(NG);
- return true;
- }
-
- sender.sendMessage(guild.getInformation());
- 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..2dc73f2
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/InviteSubCommand.java
@@ -0,0 +1,98 @@
+package me.totalfreedom.tfguilds.command;
+
+import me.totalfreedom.tfguilds.Common;
+import me.totalfreedom.tfguilds.TFGuilds;
+import me.totalfreedom.tfguilds.guild.Guild;
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitRunnable;
+
+public class InviteSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length != 2)
+ {
+ sender.sendMessage(USAGE + "/g invite ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (guild.getState() == Guild.State.CLOSED)
+ {
+ sender.sendMessage(PREFIX + "The guild is closed.");
+ return;
+ }
+
+ if (guild.getState() == Guild.State.OPEN)
+ {
+ sender.sendMessage(PREFIX + "The guild is open to public, tell your friends to join by " + ChatColor.GOLD + "/g join " + guild.getName());
+ return;
+ }
+
+ Player player = Bukkit.getPlayer(args[1]);
+ if (player == null || tfmBridge.isVanished(player))
+ {
+ sender.sendMessage(PLAYER_NOT_FOUND);
+ return;
+ }
+
+ if (player.equals(playerSender))
+ {
+ sender.sendMessage(PREFIX + "You cannot invite yourself.");
+ return;
+ }
+
+ if (Guild.getGuild(player) != null)
+ {
+ sender.sendMessage(PREFIX + "That player is already in a guild.");
+ return;
+ }
+
+ if (guild.isInvited(player))
+ {
+ sender.sendMessage(PREFIX + "That player is already been invited.");
+ return;
+ }
+
+ guild.invite(player);
+ player.sendMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has sent you an invite to join " + ChatColor.GOLD + guild.getName());
+ player.sendMessage("Do " + ChatColor.GOLD + "/g join " + guild.getName() + ChatColor.GRAY + " to join!");
+ player.sendMessage(PREFIX + "The invite will expire in 90 seconds.");
+ sender.sendMessage(PREFIX + "The invite has been sent to " + ChatColor.GOLD + player.getName());
+
+ new BukkitRunnable()
+ {
+ @Override
+ public void run()
+ {
+ if (!guild.isInvited(player))
+ {
+ return;
+ }
+ guild.removeInvite(player);
+ if (player.isOnline())
+ {
+ player.sendMessage(PREFIX + "The invite to " + ChatColor.GOLD + guild.getName() + ChatColor.GRAY + " has expired!");
+ sender.sendMessage(PREFIX + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " has not accepted your invite.");
+ }
+ }
+ }.runTaskLater(TFGuilds.getPlugin(), 20 * 90);
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java
deleted file mode 100644
index 34dad7f..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java
+++ /dev/null
@@ -1,92 +0,0 @@
-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)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g invite "));
- return true;
- }
-
- Player player = (Player)sender;
- Guild guild = Guild.getGuild(player);
- Player invitee = Bukkit.getPlayer(args[1]);
- if (invitee == null || plugin.bridge.isVanished(invitee))
- {
- sender.sendMessage(PNF);
- return true;
- }
-
- if (Guild.getGuild(invitee) != null)
- {
- sender.sendMessage(ChatColor.RED + "This player is already in another guild!");
- return true;
- }
-
- if (guild == null)
- {
- sender.sendMessage(NG);
- 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 + "It has been 90 seconds and " + invitee.getName() + " did not accept your invitation.");
- }
- }.runTaskLater(plugin, 20 * 90);
- return true;
- }
-}
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..6780229
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/JoinSubCommand.java
@@ -0,0 +1,60 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class JoinSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 2)
+ {
+ sender.sendMessage(USAGE + "/g join ");
+ return;
+ }
+
+ if (Guild.getGuild(playerSender) != null)
+ {
+ sender.sendMessage(IN_GUILD);
+ return;
+ }
+
+ Guild guild = Guild.getGuild(StringUtils.join(args, " ", 1, args.length));
+ if (guild == null)
+ {
+ sender.sendMessage(PREFIX + "That guild does not exist.");
+ return;
+ }
+
+ if (guild.getState() == Guild.State.CLOSED)
+ {
+ sender.sendMessage(PREFIX + "That guild is currently closed.");
+ return;
+ }
+
+ if (guild.getState() == Guild.State.INVITE_ONLY)
+ {
+ if (guild.isInvited(playerSender))
+ {
+ sender.sendMessage(PREFIX + "You must be invited to join the guild.");
+ return;
+ }
+ guild.removeInvite(playerSender);
+ }
+
+ guild.addMember(playerSender);
+ guild.broadcast(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has joined the guild.");
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java
deleted file mode 100644
index 56a38a2..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java
+++ /dev/null
@@ -1,67 +0,0 @@
-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)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g join "));
- return true;
- }
-
- 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.getUniqueId());
- guild.broadcast(tl("%s%" + player.getName() + " %p%has joined the 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..f869833
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/KickSubCommand.java
@@ -0,0 +1,70 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class KickSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 2)
+ {
+ sender.sendMessage(USAGE + "/g kick ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.isModerator(playerSender))
+ {
+ sender.sendMessage(PREFIX + "Only the guild owner and moderators can kick members.");
+ return;
+ }
+
+ Player player = Bukkit.getPlayer(args[1]);
+ if (player == null || tfmBridge.isVanished(player))
+ {
+ sender.sendMessage(PLAYER_NOT_FOUND);
+ return;
+ }
+
+ if (playerSender.equals(player))
+ {
+ sender.sendMessage(PREFIX + "You cannot kick yourself.");
+ return;
+ }
+
+ if (guild.getOwner().equals(player.getUniqueId()) || guild.isModerator(player) && !guild.getOwner().equals(playerSender.getUniqueId()))
+ {
+ sender.sendMessage(PREFIX + "You may not kick the guild owner or moderators from your guild.");
+ return;
+ }
+
+ if (!guild.isMember(player))
+ {
+ sender.sendMessage(PLAYER_NOT_IN_GUILD);
+ return;
+ }
+
+ guild.removeMember(player);
+ sender.sendMessage(PREFIX + "Successfully kicked " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " from your guild.");
+ player.sendMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has kicked you from " + ChatColor.GOLD + guild.getName());
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java
deleted file mode 100644
index 9e4bc5a..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java
+++ /dev/null
@@ -1,113 +0,0 @@
-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)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g kick | player>"));
- return true;
- }
-
- 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.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
- return true;
- }
-
- if (guild.getOwner().equals(player.getUniqueId()) || guild.hasModerator(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You cannot kick the owner/moderator(s) of a guild!");
- return true;
- }
-
- guild.removeMember(player.getUniqueId());
- 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(NG);
- return true;
- }
-
- if (!guild.hasModerator(player.getUniqueId()))
- {
- 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.hasMember(n.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
- return true;
- }
-
- if (guild.getOwner().equals(n.getUniqueId()) || guild.hasModerator(n.getUniqueId()) && !guild.getOwner().equals(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You cannot kick the owner/moderator(s) of a guild!");
- return true;
- }
-
- guild.removeMember(n.getUniqueId());
- 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/LeaveSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubCommand.java
new file mode 100644
index 0000000..1663ffd
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubCommand.java
@@ -0,0 +1,38 @@
+package me.totalfreedom.tfguilds.command;
+
+import me.totalfreedom.tfguilds.Common;
+import me.totalfreedom.tfguilds.guild.Guild;
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class LeaveSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (guild.getOwner().equals(playerSender.getUniqueId()))
+ {
+ sender.sendMessage(PREFIX + "You may not leave your guild as the owner, please disband the guild instead.");
+ return;
+ }
+
+ guild.removeMember(playerSender);
+ guild.broadcast(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has left the guild.");
+ sender.sendMessage(PREFIX + "You have left the guild.");
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java
deleted file mode 100644
index 705755e..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java
+++ /dev/null
@@ -1,50 +0,0 @@
-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 (args.length > 1)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g leave"));
- 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(NG);
- return true;
- }
-
- if (guild.getOwner().equals(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You cannot leave as you are the owner!");
- return true;
- }
-
- guild.removeModerator(player.getUniqueId());
- guild.removeMember(player.getUniqueId());
- 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..10ef9f4
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/ListSubCommand.java
@@ -0,0 +1,60 @@
+package me.totalfreedom.tfguilds.command;
+
+import java.util.List;
+import me.totalfreedom.tfguilds.Common;
+import me.totalfreedom.tfguilds.guild.Guild;
+import me.totalfreedom.tfguilds.util.PaginationList;
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class ListSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (args.length > 2)
+ {
+ sender.sendMessage(USAGE + "/g list [page]");
+ return;
+ }
+
+ List guilds = Guild.getGuildNames();
+ if (guilds.isEmpty())
+ {
+ sender.sendMessage(PREFIX + "There are no guilds.");
+ return;
+ }
+
+ PaginationList pagination = new PaginationList<>(10);
+ pagination.addAll(guilds);
+ int index = 1;
+
+ if (args.length == 2)
+ {
+ try
+ {
+ index = Integer.parseInt(args[1]);
+ }
+ catch (NumberFormatException ex)
+ {
+ sender.sendMessage(PREFIX + ChatColor.GOLD + args[1] + ChatColor.GRAY + " is not a valid number.");
+ return;
+ }
+ }
+
+ if (index < 1 || index > pagination.getPageCount())
+ {
+ sender.sendMessage(PREFIX + "Please pick a number between 1 and " + pagination.getPageCount());
+ return;
+ }
+
+ List page = pagination.getPage(index);
+ sender.sendMessage(PREFIX + "Guild list (" + ChatColor.GOLD + index + "/" + pagination.getPageCount() + ChatColor.GRAY + ")");
+ for (String guild : page)
+ {
+ sender.sendMessage(ChatColor.GRAY + " - " + ChatColor.GOLD + guild);
+ }
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java
deleted file mode 100644
index 6b36298..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package me.totalfreedom.tfguilds.command;
-
-import java.util.List;
-import me.totalfreedom.tfguilds.Common;
-import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.util.PaginationList;
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-
-public class ListSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length > 2)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g list [page]"));
- return true;
- }
-
- List guilds = Guild.getGuildList();
- PaginationList paged = new PaginationList<>(10);
-
- if (guilds.isEmpty())
- {
- sender.sendMessage(ChatColor.RED + "Nobody has made a guild yet.");
- return true;
- }
-
- paged.addAll(guilds);
-
- int pageIndex = 1;
-
- if (args.length >= 2)
- {
- try
- {
- pageIndex = Integer.parseInt(args[1]);
- }
- catch (NumberFormatException e)
- {
- sender.sendMessage(ChatColor.RED + "Invalid number.");
- }
- }
-
- if (pageIndex < 1 || pageIndex > paged.getPageCount())
- {
- sender.sendMessage(ChatColor.RED + "Not a valid page number.");
- return true;
- }
-
- paged.getPage(pageIndex);
- List page = paged.getPage(pageIndex);
-
- sender.sendMessage(tl(PREFIX + "%s%Guild list (%p%" + guilds.size() + " total%s%) [%p%Page " + pageIndex + "%s%/%p%" + paged.getPageCount() + "%s%]"));
-
- for (String guild : page)
- {
- sender.sendMessage(tl("%s%- %p%" + guild));
- }
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java
deleted file mode 100644
index fcec983..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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 MOTDSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length == 1)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g motd | clear>"));
- 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(NG);
- return true;
- }
-
- if (!guild.hasModerator(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You can't modify your guild's MOTD!");
- return true;
- }
-
- if (args.length >= 3)
- {
- if (args[1].equalsIgnoreCase("set"))
- {
- String motd = StringUtils.join(args, " ", 2, args.length);
- guild.setMotd(motd);
- guild.save();
- sender.sendMessage(tl(PREFIX + "Set %s%" + GUtil.colorize(motd) + "%p% as the new MOTD of your guild%p%."));
- return true;
- }
- return false;
- }
-
- if (!args[1].equalsIgnoreCase("clear"))
- {
- return false;
- }
-
- guild.setMotd(null);
- guild.save();
- sender.sendMessage(tl(PREFIX + "Cleared your guild's MOTD."));
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/MotdSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/MotdSubCommand.java
new file mode 100644
index 0000000..0f38a2f
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/MotdSubCommand.java
@@ -0,0 +1,66 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class MotdSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length == 1)
+ {
+ sender.sendMessage(USAGE + "/g motd | clear>");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.isModerator(playerSender))
+ {
+ sender.sendMessage(PREFIX + "Only guild moderators can modify the guild's MOTD");
+ return;
+ }
+
+ if (args.length >= 3)
+ {
+ if (args[1].equalsIgnoreCase("set"))
+ {
+ String message = StringUtils.join(args, " ", 2, args.length);
+ guild.setMotd(message);
+ sender.sendMessage(PREFIX + "Set the guild's MOTD to " + ChatColor.GOLD + GUtil.colorize(message));
+ }
+ else
+ {
+ sender.sendMessage(USAGE + "/g motd | clear>");
+ }
+ return;
+ }
+
+ if (!args[1].equalsIgnoreCase("clear"))
+ {
+ sender.sendMessage(USAGE + "/g motd | clear>");
+ return;
+ }
+
+ guild.setMotd(null);
+ sender.sendMessage(PREFIX + "Successfully cleared the guild's MOTD");
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubCommand.java
new file mode 100644
index 0000000..2d741d6
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubCommand.java
@@ -0,0 +1,70 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class RemoveModSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length != 2)
+ {
+ sender.sendMessage(USAGE + "/g removemod ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ Player player = Bukkit.getPlayer(args[1]);
+ if (player == null || tfmBridge.isVanished(player))
+ {
+ sender.sendMessage(PLAYER_NOT_FOUND);
+ return;
+ }
+
+ if (!guild.getOwner().equals(playerSender.getUniqueId()))
+ {
+ sender.sendMessage(PREFIX + "You must be the guild owner to remove moderators.");
+ return;
+ }
+
+ if (guild.getOwner().equals(player.getUniqueId()))
+ {
+ sender.sendMessage(PREFIX + "You are the owner of your guild, you cannot remove yourself.");
+ return;
+ }
+
+ if (!guild.isMember(player))
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.isModerator(player))
+ {
+ sender.sendMessage(PREFIX + "That player is not a moderator.");
+ return;
+ }
+
+ guild.removeModerator(player);
+ sender.sendMessage(PREFIX + "Successfully removed " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " as a moderator.");
+ player.sendMessage(PREFIX + "You are no longer a guild moderator for your guild.");
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java
deleted file mode 100644
index 0b452af..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java
+++ /dev/null
@@ -1,126 +0,0 @@
-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 == 1 || args.length > 3)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g removemod | name>>"));
- return true;
- }
-
- 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 (sender instanceof Player)
- {
- if (guild.getModerators().contains(((Player)sender).getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You may not demote yourself.");
- return true;
- }
- }
-
- if (!guild.hasMember(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
- return true;
- }
-
- if (!guild.hasModerator(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This member is not a moderator for this guild!");
- return true;
- }
-
- guild.removeModerator(player.getUniqueId());
- 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(NG);
- return true;
- }
-
- if (!guild.getOwner().equals(player.getUniqueId()))
- {
- 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 (n == player)
- {
- sender.sendMessage(ChatColor.RED + "You may not demote yourself.");
- return true;
- }
-
- if (!guild.hasMember(n.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
- return true;
- }
-
- if (!guild.hasModerator(n.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This member is not a moderator for your guild!");
- return true;
- }
-
- guild.removeModerator(n.getUniqueId());
- 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/RenameSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java
deleted file mode 100644
index 4efc179..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package me.totalfreedom.tfguilds.command;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-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 RenameSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length < 2)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g rename "));
- return true;
- }
-
- if (sender instanceof ConsoleCommandSender)
- {
- sender.sendMessage(NO_PERMS);
- return true;
- }
-
- Player player = (Player)sender;
- Guild guild = Guild.getGuild(player);
- String newName = StringUtils.join(args, " ", 1, args.length);
- String identifier = GUtil.flatten(newName);
- if (guild == null)
- {
- sender.sendMessage(NG);
- return true;
- }
-
- if (!guild.getOwner().equals(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You can't change the name of your guild!");
- return true;
- }
-
- Pattern pattern = Pattern.compile("^[A-Za-z0-9? ,_-]+$");
- Matcher matcher = pattern.matcher(newName);
-
- if (!matcher.matches())
- {
- sender.sendMessage(ChatColor.RED + "Guild names must be alphanumeric.");
- return true;
- }
-
- if (identifier.length() > 30)
- {
- sender.sendMessage(ChatColor.RED + "Your new guild name may not be over 30 characters.");
- return true;
- }
-
- if (Guild.guildExists(identifier))
- {
- sender.sendMessage(ChatColor.RED + "A guild with a name similar to yours already exists!");
- return true;
- }
-
- for (String blacklisted : GUtil.BLACKLISTED_NAMES_AND_TAGS)
- {
- if (args[0].equalsIgnoreCase(blacklisted))
- {
- if (!plugin.bridge.isAdmin(player))
- {
- player.sendMessage(ChatColor.RED + "You may not use that name.");
- return true;
- }
- }
- }
-
- guild.rename(newName);
- sender.sendMessage(tl(PREFIX + "Set %s%" + GUtil.colorize(newName) + "%p% as the new name of your guild%p%."));
- guild.broadcast(tl("%p%Your guild has been renamed to " + GUtil.colorize(newName) + "%p%."));
- guild.save();
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RosterSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RosterSubCommand.java
new file mode 100644
index 0000000..ac349e9
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/RosterSubCommand.java
@@ -0,0 +1,59 @@
+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.Bukkit;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class RosterSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ Guild guild;
+ if (args.length >= 2)
+ {
+ Player player = Bukkit.getPlayer(args[1]);
+ if (player != null && !tfmBridge.isVanished(player))
+ {
+ guild = Guild.getGuild(player);
+ if (guild == null)
+ {
+ sender.sendMessage(PLAYER_NOT_IN_GUILD);
+ return;
+ }
+
+ sender.sendMessage(guild.getRoster());
+ return;
+ }
+
+ guild = Guild.getGuild(StringUtils.join(args, " ", 1, args.length));
+ if (guild == null)
+ {
+ sender.sendMessage(PREFIX + "That guild does not exist.");
+ return;
+ }
+
+ sender.sendMessage(guild.getRoster());
+ return;
+ }
+
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(USAGE + "/g roster ");
+ return;
+ }
+
+ guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ sender.sendMessage(guild.getRoster());
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java
deleted file mode 100644
index d297751..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java
+++ /dev/null
@@ -1,60 +0,0 @@
-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.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 RosterSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length >= 2)
- {
- Player player = Bukkit.getPlayer(args[1]);
- if (player != null)
- {
- Guild guild = Guild.getGuild(player);
- if (guild != null)
- {
- sender.sendMessage(guild.getRoster());
- return true;
- }
- }
-
- Guild guild = Guild.getGuild(GUtil.flatten(StringUtils.join(args, " ", 1, args.length)));
- if (guild == null)
- {
- sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
- return true;
- }
-
- sender.sendMessage(guild.getRoster());
- return true;
- }
-
- if (sender instanceof ConsoleCommandSender)
- {
- sender.sendMessage(NO_PERMS);
- return true;
- }
-
- Guild guild = Guild.getGuild((Player)sender);
- if (guild == null)
- {
- sender.sendMessage(NG);
- return true;
- }
-
- sender.sendMessage(guild.getRoster());
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubCommand.java
new file mode 100644
index 0000000..5b2a309
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubCommand.java
@@ -0,0 +1,71 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class SetDefaultRankSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 2)
+ {
+ sender.sendMessage(USAGE + "/g setdefaultrank ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.getOwner().equals(playerSender.getUniqueId()))
+ {
+ sender.sendMessage(PREFIX + "Only the guild owner can set default rank.");
+ return;
+ }
+
+ String name = StringUtils.join(args, " ", 1, args.length);
+ if (name.equalsIgnoreCase("none"))
+ {
+ guild.setDefaultRank(null);
+ sender.sendMessage(PREFIX + "Removed default rank.");
+ return;
+ }
+
+ if (!StringUtils.isAlphanumericSpace(name) || name.isBlank())
+ {
+ sender.sendMessage(PREFIX + "The name must be alphanumeric.");
+ return;
+ }
+
+ if (name.length() > 15)
+ {
+ sender.sendMessage(PREFIX + "The rank name cannot go over 15 characters limit.");
+ return;
+ }
+
+ if (GUtil.containsBlacklistedWord(name))
+ {
+ sender.sendMessage(PREFIX + "The guild name contains a blacklisted word.");
+ return;
+ }
+
+ guild.setDefaultRank(name);
+ sender.sendMessage(PREFIX + "Successfully set " + ChatColor.GOLD + name + ChatColor.GRAY + " as the default rank of your guild.");
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java
deleted file mode 100644
index 4056302..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java
+++ /dev/null
@@ -1,64 +0,0 @@
-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 SetDefaultRankSubcommand 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 == 0)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g setdefaultrank "));
- return true;
- }
-
- Player player = (Player)sender;
- Guild guild = Guild.getGuild(player);
- if (guild == null)
- {
- sender.sendMessage(NG);
- return true;
- }
-
- if (!guild.getOwner().equals(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You do not have permissions to manage ranks in your guild!");
- return true;
- }
-
- String rank = StringUtils.join(args, " ", 1, args.length);
- if (rank.equalsIgnoreCase("none"))
- {
- guild.setDefaultRank(null);
- guild.save();
- sender.sendMessage(tl(PREFIX + "Removed the default guild rank."));
- return true;
- }
-
- if (!guild.hasRank(rank))
- {
- sender.sendMessage(ChatColor.RED + "A rank of that name does not exist in the guild!");
- return true;
- }
-
- guild.setDefaultRank(rank);
- guild.save();
- sender.sendMessage(tl(PREFIX + "Set %s%\"" + rank + "\"%p% as the default rank for your guild."));
- return true;
- }
-}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetMemberSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetMemberSubcommand.java
deleted file mode 100644
index ae95a01..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/SetMemberSubcommand.java
+++ /dev/null
@@ -1,54 +0,0 @@
-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.entity.Player;
-
-public class SetMemberSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length == 1 || args.length == 2 || args.length > 3)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g setmember "));
- return true;
- }
-
- 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.getGuild(player) != null)
- {
- sender.sendMessage(ChatColor.RED + "This player is already in another guild!");
- return true;
- }
-
- guild.addMember(player.getUniqueId());
- guild.broadcast(tl("%s%" + player.getName() + " %p%has joined the guild."));
- guild.save();
- 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..93b005c
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubCommand.java
@@ -0,0 +1,65 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class SetOwnerSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 2)
+ {
+ sender.sendMessage(USAGE + "/g setowner ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.getOwner().equals(playerSender.getUniqueId()))
+ {
+ sender.sendMessage(PREFIX + "Only the guild owner can set the owner of the guild.");
+ return;
+ }
+
+ Player player = Bukkit.getPlayer(args[1]);
+ if (player == null || tfmBridge.isVanished(player))
+ {
+ sender.sendMessage(PLAYER_NOT_FOUND);
+ return;
+ }
+
+ if (playerSender.equals(player))
+ {
+ sender.sendMessage(PREFIX + "You are already the owner of the guild.");
+ return;
+ }
+
+ if (!guild.isMember(player))
+ {
+ sender.sendMessage(PREFIX + "That player is not in your guild.");
+ return;
+ }
+
+ guild.setOwner(player);
+ sender.sendMessage(PREFIX + "Successfully set " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " as the new owner of the guild.");
+ guild.broadcast(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has set " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " as the new owner of the guild.");
+ player.sendMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has set you as the owner of " + ChatColor.GOLD + guild.getName());
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java
deleted file mode 100644
index 1853f02..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java
+++ /dev/null
@@ -1,113 +0,0 @@
-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 == 1 || args.length > 3)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g setowner | player>"));
- return true;
- }
-
- 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.getOwner().equals(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This player is already the owner of that guild!");
- return true;
- }
-
- if (!guild.hasMember(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
- return true;
- }
-
- guild.removeModerator(player.getUniqueId());
- guild.setOwner(player.getUniqueId());
- 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(NG);
- return true;
- }
-
- if (!guild.getOwner().equals(player.getUniqueId()))
- {
- 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 (n == player)
- {
- sender.sendMessage(ChatColor.RED + "You are already the owner of your guild.");
- return true;
- }
-
- if (!guild.hasMember(n.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
- return true;
- }
-
- guild.removeModerator(n.getUniqueId());
- guild.setOwner(n.getUniqueId());
- 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/SetRankSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubCommand.java
new file mode 100644
index 0000000..51ed885
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubCommand.java
@@ -0,0 +1,66 @@
+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.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class SetRankSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 3)
+ {
+ sender.sendMessage(USAGE + "/g setrank ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.isModerator(playerSender))
+ {
+ sender.sendMessage(PREFIX + "You must be a guild moderator to set player's rank for your guild.");
+ return;
+ }
+
+ Player player = Bukkit.getPlayer(args[1]);
+ if (player == null || tfmBridge.isVanished(player))
+ {
+ sender.sendMessage(PLAYER_NOT_FOUND);
+ return;
+ }
+
+ if (!guild.isMember(player))
+ {
+ sender.sendMessage(PLAYER_NOT_IN_GUILD);
+ return;
+ }
+
+ String name = StringUtils.join(args, " ", 2, args.length);
+ if (!guild.hasRank(name))
+ {
+ sender.sendMessage(PREFIX + "That rank does not exist.");
+ return;
+ }
+
+ guild.setPlayerRank(player, name);
+ sender.sendMessage(PREFIX + "Successfully set " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + "'s guild rank to " + ChatColor.GOLD + name);
+ player.sendMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has set your guild rank to " + ChatColor.GOLD + name);
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java
deleted file mode 100644
index 967a3ec..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package me.totalfreedom.tfguilds.command;
-
-import me.totalfreedom.tfguilds.Common;
-import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.guild.GuildRank;
-import org.apache.commons.lang.StringUtils;
-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 SetRankSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length == 1)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g setrank "));
- 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(NG);
- return true;
- }
-
- if (!guild.hasModerator(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You can't change the ranks of your guild members!");
- return true;
- }
-
- Player r = Bukkit.getPlayer(args[1]);
- if (r == null)
- {
- sender.sendMessage(PNF);
- return true;
- }
-
- if (!guild.hasMember(r.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
- return true;
- }
-
- String name = StringUtils.join(args, " ", 2, args.length).toLowerCase();
- if (name.equals("none"))
- {
- for (GuildRank gr : guild.getRanks())
- {
- gr.getMembers().remove(r.getUniqueId());
- gr.save();
- }
-
- sender.sendMessage(tl(PREFIX + "Removed the rank of %s%" + r.getName() + "%p% in your guild."));
- r.sendMessage(tl("%p%Your rank in your guild has been removed."));
- guild.save();
- return true;
- }
-
- GuildRank rank = guild.getRank(name);
- if (rank == null)
- {
- sender.sendMessage(ChatColor.RED + "A rank of that name does not exist in the guild!");
- return true;
- }
-
- for (GuildRank gr : guild.getRanks())
- {
- gr.getMembers().remove(r.getUniqueId());
- gr.save();
- }
-
- rank.getMembers().add(r.getUniqueId());
- rank.save();
- sender.sendMessage(tl(PREFIX + "Set the rank of %s%" + r.getName() + "%p% in your guild to %s%" + rank.getName() + "%p%."));
- r.sendMessage(tl("%p%Your rank in your guild has been set to %s%" + rank.getName() + "%p%."));
- guild.save();
- return true;
- }
-}
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..3cae41b
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubCommand.java
@@ -0,0 +1,53 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class SetStateSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length != 2)
+ {
+ sender.sendMessage(USAGE + "/g setstate ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.isModerator(playerSender))
+ {
+ sender.sendMessage(PREFIX + "Only guild moderators can change the state.");
+ return;
+ }
+
+ Guild.State state = Guild.State.fromString(args[1]);
+ if (state == null)
+ {
+ sender.sendMessage(PREFIX + ChatColor.GOLD + args[1] + ChatColor.GRAY + " is not a valid state. Available options: "
+ + ChatColor.GOLD + StringUtils.join(Guild.State.values(), ", "));
+ return;
+ }
+
+ guild.setState(state);
+ sender.sendMessage(PREFIX + "Successfully set the guild state to " + ChatColor.GOLD + state.name());
+ guild.broadcast(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has set the guild state to " + ChatColor.GOLD + state.name());
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java
deleted file mode 100644
index 9e9fdae..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java
+++ /dev/null
@@ -1,87 +0,0 @@
-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 == 1)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g setstate "));
- return true;
- }
-
- 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(NG);
- return true;
- }
-
- if (!guild.hasModerator(player.getUniqueId()))
- {
- 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/SetWarpSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubCommand.java
new file mode 100644
index 0000000..755a03c
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubCommand.java
@@ -0,0 +1,57 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class SetWarpSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 2)
+ {
+ sender.sendMessage(USAGE + "/g setwarp ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.isModerator(playerSender))
+ {
+ sender.sendMessage(PREFIX + "You must be a guild moderator or owner to create a warp for the guild.");
+ return;
+ }
+
+ String name = StringUtils.join(args, " ", 1, args.length);
+ if (!StringUtils.isAlphanumericSpace(name))
+ {
+ sender.sendMessage(PREFIX + "The name must be alphanumeric.");
+ return;
+ }
+
+ if (guild.hasWarp(name))
+ {
+ sender.sendMessage(PREFIX + "A warp with that name already exist.");
+ return;
+ }
+
+ guild.addWarp(name, playerSender.getLocation());
+ sender.sendMessage(PREFIX + "A warp with the name " + ChatColor.GOLD + name + ChatColor.GRAY + " has been successfully created.");
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java
deleted file mode 100644
index e58860d..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java
+++ /dev/null
@@ -1,55 +0,0 @@
-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 SetWarpSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length < 2)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g setwarp "));
- 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(NG);
- return true;
- }
-
- if (!guild.hasModerator(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "Only guild moderators and guild owners are allowed to create guild warps.");
- return true;
- }
-
- String warpName = StringUtils.join(args, " ", 1, args.length);
- if (guild.warpExists(warpName))
- {
- sender.sendMessage(ChatColor.RED + "A warp with that name already exists.");
- return true;
- }
-
- Guild.createWarp(guild.getIdentifier(), warpName, player);
- sender.sendMessage(tl(PREFIX + "Successfully created new guild warp \"" + warpName + "\"."));
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SubCommand.java
new file mode 100644
index 0000000..2a131e7
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/SubCommand.java
@@ -0,0 +1,10 @@
+package me.totalfreedom.tfguilds.command;
+
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public interface SubCommand
+{
+
+ void execute(CommandSender sender, Player playerSender, String[] args);
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java
index 217ec7a..3d0973a 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java
@@ -1,55 +1,50 @@
package me.totalfreedom.tfguilds.command;
-import java.util.UUID;
import me.totalfreedom.tfguilds.Common;
-import me.totalfreedom.tfguilds.util.GLog;
-import org.bukkit.Bukkit;
-import org.bukkit.OfflinePlayer;
+import me.totalfreedom.tfguilds.TFGuilds;
+import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
public class TFGuildsCommand extends Common implements CommandExecutor
{
+
@Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
+ public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
if (args.length > 1)
{
return false;
}
- if (args.length == 1)
+ if (args.length == 1 && args[0].equalsIgnoreCase("reload"))
{
- if (args[0].toLowerCase().equals("reload"))
+ if (!tfmBridge.isAdmin(sender))
{
- if (!plugin.bridge.isAdmin(sender))
- {
- sender.sendMessage(NO_PERMS);
- return true;
- }
-
- try
- {
- plugin.config.load();
- GLog.info("All configs reloaded successfully");
- sender.sendMessage(tl(PREFIX + "All configuration files have been reloaded successfully."));
- return true;
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
+ sender.sendMessage(PREFIX + "You do not have the permission.");
return true;
}
+
+ try
+ {
+ TFGuilds.getPlugin().getConfig().load();
+ TFGuilds.getPlugin().getLogger().info("Successfully reload the configuration file.");
+ sender.sendMessage(PREFIX + "The configuration file have been reloaded successfully.");
+ return true;
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ return true;
}
- sender.sendMessage(tl("%p%TFGuilds %s%is a plugin which allows for players to make their own guilds, providing guild chat, guild teleportation, and more."));
- sender.sendMessage(tl("%s%Version %p%v" + plugin.getDescription().getVersion()));
- OfflinePlayer sp = Bukkit.getOfflinePlayer(UUID.fromString("d018f2b8-ce60-4672-a45f-e580e0331299"));
- OfflinePlayer su = Bukkit.getOfflinePlayer(UUID.fromString("53b1512e-3481-4702-9f4f-63cb9c8be6a1"));
- sender.sendMessage(tl("%s%Developed by %p%" + sp.getName() + " & " + su.getName()));
- sender.sendMessage(tl("%s%https://github.com/AtlasMediaGroup/TFGuilds"));
+ sender.sendMessage(ChatColor.AQUA + "TFGuilds " + ChatColor.GRAY + "is a plugin which allows players to create their own guilds, provide guild chat, guild teleportation and many more.");
+ sender.sendMessage(ChatColor.GRAY + "Version " + ChatColor.GOLD + TFGuilds.getPlugin().getDescription().getVersion());
+ sender.sendMessage(ChatColor.GRAY + "Originally created by " + ChatColor.GOLD + "speednt " + ChatColor.GRAY + "and " + ChatColor.GOLD + "supernt");
+ sender.sendMessage(ChatColor.GRAY + "Developed by " + ChatColor.GOLD + "NotInSync");
+ sender.sendMessage(ChatColor.GRAY + "Source code " + ChatColor.GOLD + "https://github.com/AtlasMediaGroup/TFGuilds");
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
deleted file mode 100644
index 0c95432..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java
+++ /dev/null
@@ -1,56 +0,0 @@
-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)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g tp "));
- return true;
- }
-
- Player player = (Player)sender;
- Guild guild = Guild.getGuild(player);
- if (guild == null)
- {
- sender.sendMessage(NG);
- return true;
- }
-
- Player to = Bukkit.getPlayer(args[1]);
- if (to == null)
- {
- sender.sendMessage(PNF);
- return true;
- }
-
- if (!guild.getMembers().contains(to.getUniqueId()))
- {
- 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..bb7f653
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/TagSubCommand.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.apache.commons.lang.StringUtils;
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class TagSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 2)
+ {
+ sender.sendMessage(USAGE + "/g tag | clear [guild]>");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (!guild.getOwner().equals(playerSender.getUniqueId()))
+ {
+ sender.sendMessage(PREFIX + "Only the guild owner can edit the guild's tag.");
+ return;
+ }
+
+ if (args.length >= 3)
+ {
+ if (args[1].equalsIgnoreCase("set"))
+ {
+ String tag = StringUtils.join(args, " ", 2, args.length);
+ tag = tag.replace("%tag%", guild.getName());
+ if (tag.length() > 15)
+ {
+ sender.sendMessage(PREFIX + "The guild tag cannot go over 15 characters limit.");
+ return;
+ }
+
+ if (GUtil.containsBlacklistedWord(tag) && tfmBridge.isAdmin(sender))
+ {
+ sender.sendMessage(PREFIX + "The guild tag contains forbidden word(s).");
+ return;
+ }
+
+ guild.setTag(tag);
+ sender.sendMessage(PREFIX + "The guild tag has been changed to " + ChatColor.GOLD + GUtil.colorize(tag).replace("%rank%", "Guild Owner"));
+ }
+ else
+ {
+ sender.sendMessage(USAGE + "/g tag | clear [guild]>");
+ }
+ return;
+ }
+
+ if (args[1].equalsIgnoreCase("clear"))
+ {
+ if (args.length >= 3)
+ {
+ if (!tfmBridge.isAdmin(sender))
+ {
+ sender.sendMessage(PREFIX + "You do not have the permission to use this command.");
+ return;
+ }
+
+ guild = Guild.getGuild(StringUtils.join(args, " ", 2, args.length));
+ if (guild == null)
+ {
+ sender.sendMessage(PREFIX + "That guild does not exist.");
+ return;
+ }
+
+ guild.setTag(null);
+ sender.sendMessage(PREFIX + "Successfully cleared the guild tag for " + ChatColor.GOLD + guild.getName());
+ return;
+ }
+
+ guild.setTag(null);
+ sender.sendMessage(PREFIX + "Successfully cleared the guild tag.");
+ }
+ else
+ {
+ sender.sendMessage(USAGE + "/g tag | clear [guild]>");
+ }
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java
deleted file mode 100644
index 9bdf5bb..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java
+++ /dev/null
@@ -1,107 +0,0 @@
-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;
- }
-
- if (args.length < 2)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g tag | clear [guild]>>"));
- return true;
- }
-
- Player player = (Player)sender;
- Guild guild = Guild.getGuild(player);
- if (guild == null)
- {
- sender.sendMessage(NG);
- return true;
- }
-
- if (!guild.getOwner().equals(player.getUniqueId()))
- {
- sender.sendMessage(ChatColor.RED + "You can't modify your guild's tag!");
- return true;
- }
-
- if (args.length >= 3)
- {
- if (args[1].equalsIgnoreCase("set"))
- {
- String tag = StringUtils.join(args, " ", 2, args.length);
-
- tag = tag.replace("%tag%", guild.getName());
-
- if (tag.length() > 30)
- {
- player.sendMessage(ChatColor.RED + "Your guild tag must not be over 30 characters.");
- return true;
- }
-
- for (String blacklisted : GUtil.BLACKLISTED_NAMES_AND_TAGS)
- {
- if (tag.equalsIgnoreCase(blacklisted))
- {
- if (!plugin.bridge.isAdmin(player))
- {
- player.sendMessage(ChatColor.RED + "You may not use that name.");
- return true;
- }
- }
- }
-
- guild.setTag(tag);
- guild.save();
- sender.sendMessage(tl("%p%Your guild tag has been changed to be \"" + GUtil.colorize(tag).replace("%rank%", "Guild Owner") + "%p%\"."));
- return true;
- }
- }
-
- if (args[1].equalsIgnoreCase("clear"))
- {
- if (args.length >= 3)
- {
- if (!plugin.bridge.isAdmin(sender))
- {
- sender.sendMessage(NO_PERMS);
- return true;
- }
-
- Guild g = Guild.getGuild(GUtil.flatten(StringUtils.join(args, " ", 2, args.length)));
- if (g == null)
- {
- sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
- return true;
- }
-
- g.setTag(null);
- g.save();
- sender.sendMessage(tl("%p%Cleared guild tag for " + g.getName() + "."));
- return true;
- }
-
- guild.setTag(null);
- guild.save();
- sender.sendMessage(tl("%p%Your guild tag has been cleared."));
- }
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubCommand.java
new file mode 100644
index 0000000..f4310fc
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubCommand.java
@@ -0,0 +1,36 @@
+package me.totalfreedom.tfguilds.command;
+
+import me.totalfreedom.tfguilds.Common;
+import me.totalfreedom.tfguilds.guild.User;
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class ToggleTagSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (args.length > 1)
+ {
+ sender.sendMessage(USAGE + "/g toggletag");
+ return;
+ }
+
+ User user = User.getUserFromPlayer(playerSender);
+ if (user == null)
+ {
+ user = User.create(playerSender);
+ }
+
+ user.setDisplayTag(!user.displayTag());
+ sender.sendMessage(PREFIX + ChatColor.GOLD + (user.displayTag() ? "Enabled" : "Disabled") + ChatColor.GRAY + " personal guild tag.");
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java
deleted file mode 100644
index 20901d5..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package me.totalfreedom.tfguilds.command;
-
-import me.totalfreedom.tfguilds.Common;
-import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.user.User;
-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 ToggleTagSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length > 2)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g toggletag [player]"));
- return true;
- }
-
- if (args.length == 2)
- {
- if (!plugin.bridge.isAdmin(sender))
- {
- sender.sendMessage(NO_PERMS);
- return true;
- }
-
- Player player = Bukkit.getPlayer(args[1]);
- if (player == null)
- {
- sender.sendMessage(PNF);
- return true;
- }
- User user = plugin.userData.get(player.getUniqueId());
- user.setTag(!user.isTag());
- user.save();
- sender.sendMessage(tl(PREFIX + (user.isTag() ? "Enabled" : "Disabled") + " personal guild tag for " + player.getName() + "."));
- 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(NG);
- return true;
- }
-
- User user = plugin.userData.get(player.getUniqueId());
- user.setTag(!user.isTag());
- user.save();
- sender.sendMessage(tl(PREFIX + (user.isTag() ? "Enabled" : "Disabled") + " personal guild tag."));
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubCommand.java
new file mode 100644
index 0000000..ebc589c
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubCommand.java
@@ -0,0 +1,36 @@
+package me.totalfreedom.tfguilds.command;
+
+import me.totalfreedom.tfguilds.Common;
+import me.totalfreedom.tfguilds.config.ConfigEntry;
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class ToggleTagsSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!tfmBridge.isAdmin(sender))
+ {
+ sender.sendMessage(PREFIX + "You do not have the permission.");
+ return;
+ }
+
+ boolean enabled = ConfigEntry.GUILD_TAGS.getBoolean();
+ if (enabled)
+ {
+ ConfigEntry.GUILD_TAGS.setBoolean(false);
+ sender.sendMessage(PREFIX + ChatColor.GOLD + "Disabled " + ChatColor.GRAY + "global guild tags.");
+ Bukkit.broadcastMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has globally disabled guild tags.");
+ }
+ else
+ {
+ ConfigEntry.GUILD_TAGS.setBoolean(true);
+ sender.sendMessage(PREFIX + ChatColor.GOLD + "Enabled " + ChatColor.GRAY + " global guild tags.");
+ Bukkit.broadcastMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has globally enabled guild tags.");
+ }
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubcommand.java
deleted file mode 100644
index 16a2982..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubcommand.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package me.totalfreedom.tfguilds.command;
-
-import me.totalfreedom.tfguilds.Common;
-import me.totalfreedom.tfguilds.config.ConfigEntry;
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-
-public class ToggleTagsSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (!plugin.bridge.isAdmin(sender))
- {
- sender.sendMessage(NO_PERMS);
- return true;
- }
-
- boolean enabled = ConfigEntry.GUILD_TAGS_ENABLED.getBoolean();
- if (enabled)
- {
- ConfigEntry.GUILD_TAGS_ENABLED.setBoolean(false);
- sender.sendMessage(tl(PREFIX + "Globally disabled guild tags."));
- broadcast(ChatColor.RED + sender.getName() + " - Globally disabling guild tags");
- }
- else
- {
- ConfigEntry.GUILD_TAGS_ENABLED.setBoolean(true);
- sender.sendMessage(tl(PREFIX + "Globally enabled guild tags."));
- broadcast(ChatColor.RED + sender.getName() + " - Globally enabling guild tags");
- }
- 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..b033154
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/TpSubCommand.java
@@ -0,0 +1,51 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class TpSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length != 2)
+ {
+ sender.sendMessage(USAGE + "/g tp ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ Player player = Bukkit.getPlayer(args[1]);
+ if (player == null || tfmBridge.isVanished(player))
+ {
+ sender.sendMessage(PLAYER_NOT_FOUND);
+ return;
+ }
+
+ if (!guild.isMember(player))
+ {
+ sender.sendMessage(PLAYER_NOT_IN_GUILD);
+ return;
+ }
+
+ playerSender.teleport(player);
+ sender.sendMessage(PREFIX + "Successfully teleported to " + ChatColor.GOLD + player.getName());
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/WarpSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/WarpSubCommand.java
new file mode 100644
index 0000000..9138933
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/WarpSubCommand.java
@@ -0,0 +1,47 @@
+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.Location;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class WarpSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ if (args.length < 2)
+ {
+ sender.sendMessage(USAGE + "/g warp ");
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ String name = StringUtils.join(args, " ", 1, args.length);
+ if (!guild.hasWarp(name))
+ {
+ sender.sendMessage(PREFIX + "The guild does not have the warp named " + ChatColor.GOLD + name);
+ return;
+ }
+
+ Location location = guild.getWarp(name);
+ playerSender.teleport(location);
+ sender.sendMessage(PREFIX + "Successfully warped to " + ChatColor.GOLD + name);
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/WarpSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/WarpSubcommand.java
deleted file mode 100644
index 245a11d..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/WarpSubcommand.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package me.totalfreedom.tfguilds.command;
-
-import me.totalfreedom.tfguilds.Common;
-import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.guild.GuildWarp;
-import org.apache.commons.lang.StringUtils;
-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.command.ConsoleCommandSender;
-import org.bukkit.entity.Player;
-
-public class WarpSubcommand extends Common implements CommandExecutor
-{
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
- {
- if (args.length < 2)
- {
- sender.sendMessage(tl(PREFIX + "Proper usage: /g warp "));
- 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(NG);
- return true;
- }
-
- String warpName = StringUtils.join(args, " ", 1, args.length);
- if (!guild.warpExists(warpName))
- {
- sender.sendMessage(ChatColor.RED + "Warp not found.");
- return true;
- }
-
- GuildWarp warp = guild.getWarp(warpName);
- Location warpLoc = new Location(warp.getWorld(), warp.getX(), warp.getY(), warp.getZ());
- player.teleport(warpLoc);
- sender.sendMessage(tl(PREFIX + "Warping to \"" + warpName + "\"."));
- return true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/WarpsSubCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/WarpsSubCommand.java
new file mode 100644
index 0000000..94d5eb9
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/command/WarpsSubCommand.java
@@ -0,0 +1,37 @@
+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.CommandSender;
+import org.bukkit.entity.Player;
+
+public class WarpsSubCommand extends Common implements SubCommand
+{
+
+ @Override
+ public void execute(CommandSender sender, Player playerSender, String[] args)
+ {
+ if (!(sender instanceof Player))
+ {
+ sender.sendMessage(IN_GAME_ONLY);
+ return;
+ }
+
+ Guild guild = Guild.getGuild(playerSender);
+ if (guild == null)
+ {
+ sender.sendMessage(NOT_IN_GUILD);
+ return;
+ }
+
+ if (guild.getWarps().isEmpty())
+ {
+ sender.sendMessage(PREFIX + "There are no warps.");
+ return;
+ }
+
+ sender.sendMessage(PREFIX + "Warps (" + guild.getWarps().size() + "): " + ChatColor.GOLD + StringUtils.join(guild.getWarpNames(), ", "));
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/WarpsSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/WarpsSubcommand.java
deleted file mode 100644
index 358261c..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/command/WarpsSubcommand.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package me.totalfreedom.tfguilds.command;
-
-import java.util.List;
-import me.totalfreedom.tfguilds.Common;
-import me.totalfreedom.tfguilds.guild.Guild;
-import org.apache.commons.lang.StringUtils;
-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 WarpsSubcommand 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(NG);
- return true;
- }
-
- List warps = Guild.getGuildWarps();
- sender.sendMessage(tl(PREFIX + "%s%Guild warps (%p%" + warps.size() + " total%s%)\n%p%" + StringUtils.join(warps, "%s%,%p% ")));
- return true;
- }
-}
\ 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 8e5e4fc..ac5daae 100644
--- a/src/main/java/me/totalfreedom/tfguilds/config/Config.java
+++ b/src/main/java/me/totalfreedom/tfguilds/config/Config.java
@@ -1,37 +1,29 @@
package me.totalfreedom.tfguilds.config;
import java.io.File;
+import java.io.IOException;
import me.totalfreedom.tfguilds.TFGuilds;
+import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
public class Config extends YamlConfiguration
{
+
private final TFGuilds plugin;
private final File file;
- public Config(String name)
+ public Config(String fileName)
{
this.plugin = TFGuilds.getPlugin();
- this.file = new File(plugin.getDataFolder(), name);
+ this.file = new File(plugin.getDataFolder(), fileName);
if (!file.exists())
{
options().copyDefaults(true);
- plugin.saveResource(name, false);
+ plugin.saveResource(fileName, false);
}
- load();
- }
- public void load()
- {
- try
- {
- super.load(file);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
+ load();
}
public void save()
@@ -40,9 +32,21 @@ public class Config extends YamlConfiguration
{
super.save(file);
}
- catch (Exception e)
+ catch (IOException ex)
{
- e.printStackTrace();
+ ex.printStackTrace();
}
}
-}
\ No newline at end of file
+
+ public void load()
+ {
+ try
+ {
+ super.load(file);
+ }
+ catch (IOException | InvalidConfigurationException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java b/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java
index bd8c900..89eaecf 100644
--- a/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java
+++ b/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java
@@ -1,22 +1,25 @@
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"),
- // Server
- GUILD_CHAT_LOGGING_ENABLED("server.guild_chat_logging.enabled"),
- GUILD_TAGS_ENABLED("server.guild_tags_enabled.enabled");
+
+ GUILD_CHAT_LOGGING("server.guild_chat_logging"),
+ GUILD_TAGS("server.guild_tags"),
+ MYSQL_HOST("mysql.host"),
+ MYSQL_PORT("mysql.port"),
+ MYSQL_USERNAME("mysql.username"),
+ MYSQL_PASSWORD("mysql.password"),
+ MYSQL_DATABASE("mysql.database");
private final String path;
private final Config config;
+
ConfigEntry(String path)
{
this.path = path;
- this.config = TFGuilds.getPlugin().config;
+ this.config = TFGuilds.getPlugin().getConfig();
}
public boolean getBoolean()
@@ -30,8 +33,13 @@ public enum ConfigEntry
config.save();
}
- public ChatColor getChatColor()
+ public int getInteger()
{
- return ChatColor.valueOf(config.getString(path).toUpperCase());
+ return config.getInt(path);
}
-}
\ No newline at end of file
+
+ public String getString()
+ {
+ return config.getString(path);
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java
index 52a060b..7691ba5 100644
--- a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java
+++ b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java
@@ -1,183 +1,117 @@
package me.totalfreedom.tfguilds.guild;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.UUID;
-import lombok.Getter;
-import lombok.Setter;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.TFGuilds;
import me.totalfreedom.tfguilds.config.ConfigEntry;
-import me.totalfreedom.tfguilds.util.GLog;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
-import org.bukkit.OfflinePlayer;
+import org.bukkit.World;
import org.bukkit.entity.Player;
public class Guild
{
- private static final TFGuilds plugin = TFGuilds.getPlugin();
- @Getter
- @Setter
- private String identifier;
-
- @Getter
- @Setter
- private String name;
-
- @Getter
- @Setter
+ private static Map guilds = new HashMap<>();
+ //
+ private final String id;
+ private final String name;
+ private final long createdAt;
+ private List invites = new ArrayList<>();
private UUID owner;
-
- @Getter
- private final List moderators;
-
- @Getter
- private final List members;
-
- @Getter
- @Setter
+ private List moderators;
+ private List members;
+ private Map> ranks;
+ private Map warps;
+ private String defaultRank;
private String tag;
-
- @Getter
- @Setter
- private GuildState state;
-
- @Getter
- private final List ranks;
-
- @Getter
- @Setter
+ private State state;
private String motd;
-
- @Getter
- @Setter
private Location home;
- @Getter
- @Setter
- private String defaultRank;
-
- @Getter
- private final long creation;
-
- public Guild(String identifier,
- String name,
+ public Guild(String name,
UUID owner,
- List members,
List moderators,
- String tag,
- GuildState state,
- List ranks,
+ List members,
+ Map> ranks,
+ Map warps,
+ String defaultRank,
+ State state,
String motd,
- Location home,
- long creation,
- String defaultrank)
+ double x,
+ double y,
+ double z,
+ String world,
+ long createdAt)
{
- this.identifier = identifier;
+ this.id = name.toLowerCase().replaceAll(" ", "_");
this.name = name;
this.owner = owner;
- this.members = members;
this.moderators = moderators;
- this.tag = tag;
- this.state = state;
+ this.members = members;
this.ranks = ranks;
+ this.warps = warps;
+ this.defaultRank = defaultRank;
+ this.state = state;
this.motd = motd;
- this.home = home;
- this.creation = creation;
- this.defaultRank = defaultrank;
- }
-
- public void save()
- {
- plugin.guildData.save(this);
- }
-
- public void addMember(UUID uuid)
- {
- if (hasDefaultRank())
+ World w;
+ if (world == null)
{
- getRank(defaultRank).getMembers().add(uuid);
+ w = Bukkit.getWorlds().get(0);
}
-
- members.add(uuid);
- }
-
- public void removeMember(UUID uuid)
- {
- Player player = Bukkit.getPlayer(uuid);
- if (player != null)
+ else
{
- Common.IN_GUILD_CHAT.remove(player);
+ w = Bukkit.getWorld(world);
}
-
- members.remove(uuid);
- for (GuildRank gr : getRanks())
+ if (w == null)
{
- getRank(gr.getName()).getMembers().remove(uuid);
+ w = Bukkit.getWorlds().get(0);
}
- moderators.remove(uuid);
+ this.home = new Location(w, x, y, z);
+ this.createdAt = createdAt;
}
- public boolean hasMember(UUID uuid)
+ public Guild(Player player, String name)
{
- return members.contains(uuid);
+ this(name,
+ player.getUniqueId(),
+ new ArrayList<>(),
+ new ArrayList<>(),
+ new HashMap<>(),
+ new HashMap<>(),
+ null,
+ State.OPEN,
+ null,
+ 0,
+ 50,
+ 0,
+ null,
+ System.currentTimeMillis());
+ save(true);
}
- public void addModerator(UUID uuid)
+ public static void create(Player player, String name)
{
- moderators.add(uuid);
+ guilds.put(name.toLowerCase().replaceAll(" ", "_"),
+ new Guild(player, name));
}
- public void removeModerator(UUID uuid)
+ public static boolean isAlreadyMember(Player player)
{
- moderators.remove(uuid);
- }
-
- public boolean hasModerator(UUID uuid)
- {
- if (owner.equals(uuid))
+ for (Guild guild : guilds.values())
{
- return true;
- }
-
- return moderators.contains(uuid);
- }
-
- public void addRank(String name)
- {
- ranks.add(GuildRank.createGuildRank(identifier, GUtil.flatten(name), name));
- }
-
- public void removeRank(String name)
- {
- GuildRank remove = null;
- for (GuildRank rank : ranks)
- {
- if (GUtil.flatten(name).equals(rank.getIdentifier()))
- {
- remove = rank;
- }
- }
-
- if (remove == null)
- {
- return;
- }
-
- remove.delete();
- ranks.remove(remove);
- }
-
- public boolean hasRank(String name)
- {
- for (GuildRank rank : ranks)
- {
- if (GUtil.flatten(name).equals(rank.getIdentifier()))
+ if (guild.isMember(player))
{
return true;
}
@@ -185,249 +119,747 @@ public class Guild
return false;
}
- public GuildRank getRank(String name)
+ public static void loadAll()
{
- for (GuildRank rank : ranks)
+ Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
+ try
{
- if (GUtil.flatten(name).equals(rank.getIdentifier()))
+ ResultSet set = connection.prepareStatement("SELECT * FROM guilds;").executeQuery();
+ while (set.next())
{
- return rank;
+ String id = set.getString("id");
+ UUID owner = User.getUserFromId(set.getInt("owner")).getUuid();
+ List moderators = new ArrayList<>();
+ if (set.getString("moderators") != null)
+ {
+ for (String string : set.getString("moderators").split(","))
+ {
+ User user = User.getUserFromId(Integer.parseInt(string));
+ if (user != null)
+ {
+ moderators.add(user.getUuid());
+ }
+ }
+ }
+ List members = new ArrayList<>();
+ members.add(owner);
+ if (set.getString("members") != null)
+ {
+ for (String string : set.getString("members").split(","))
+ {
+ User user = User.getUserFromId(Integer.parseInt(string));
+ if (user != null)
+ {
+ members.add(user.getUuid());
+ }
+ }
+ }
+ Map> ranks = new HashMap<>();
+ PreparedStatement rankStatement = connection.prepareStatement("SELECT * FROM ranks WHERE guild_id=?;");
+ rankStatement.setString(1, id);
+ ResultSet rankSet = rankStatement.executeQuery();
+ while (rankSet.next())
+ {
+ List rankMembers = new ArrayList<>();
+ if (rankSet.getString("members") != null)
+ {
+ for (String string : rankSet.getString("members").split(","))
+ {
+ if (string == null || string.isEmpty())
+ {
+ break;
+ }
+ User user = User.getUserFromId(Integer.parseInt(string));
+ if (user != null)
+ {
+ rankMembers.add(user.getUuid());
+ }
+ }
+ }
+ ranks.put(rankSet.getString("name"), rankMembers);
+ }
+ Map warps = new HashMap<>();
+ PreparedStatement warpStatement = connection.prepareStatement("SELECT * FROM warps WHERE guild_id=?;");
+ warpStatement.setString(1, id);
+ ResultSet warpSet = warpStatement.executeQuery();
+ while (warpSet.next())
+ {
+ World w = Bukkit.getWorld(warpSet.getString("world"));
+ if (w == null)
+ {
+ continue;
+ }
+ double x = warpSet.getDouble("x");
+ double y = warpSet.getDouble("y");
+ double z = warpSet.getDouble("z");
+ Location location = new Location(w, x, y, z);
+ warps.put(set.getString("name"), location);
+ }
+ Guild guild = new Guild(set.getString("name"),
+ owner,
+ moderators,
+ members,
+ ranks,
+ warps,
+ set.getString("default_rank"),
+ State.fromInt(set.getInt("state")),
+ set.getString("motd"),
+ set.getDouble("x"),
+ set.getDouble("y"),
+ set.getDouble("z"),
+ set.getString("world"),
+ set.getLong("creation"));
+ guilds.put(id, guild);
+ }
+ TFGuilds.getPlugin().getLogger().info(guilds.size() + " guilds loaded!");
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public static Guild getGuild(Player player)
+ {
+ for (Guild guild : guilds.values())
+ {
+ if (guild.isMember(player))
+ {
+ return guild;
}
}
return null;
}
- public boolean hasTag()
+ public static Guild getGuild(String string)
{
- return tag != null;
+ for (Guild guild : guilds.values())
+ {
+ if (guild.getName().equalsIgnoreCase(string))
+ {
+ return guild;
+ }
+ }
+ return guilds.get(string) != null ? guilds.get(string) : null;
}
- public boolean hasMOTD()
+ public static boolean hasGuild(String string)
{
- return motd != null;
+ for (Guild guild : guilds.values())
+ {
+ if (guild.getName().equalsIgnoreCase(string))
+ {
+ return true;
+ }
+ }
+ return guilds.get(string) != null;
}
- public boolean hasHome()
+ public static List getGuildNames()
{
- return home != null;
+ List names = new ArrayList<>();
+ guilds.values().forEach(guild ->
+ names.add(guild.getName()));
+ return names;
}
- public boolean hasDefaultRank()
+ public void addMember(Player player)
{
- return defaultRank != null;
+ if (!isMember(player))
+ {
+ members.add(player.getUniqueId());
+ save();
+ }
+ }
+
+ public void removeMember(Player player)
+ {
+ if (isMember(player))
+ {
+ if (isModerator(player))
+ {
+ moderators.remove(player);
+ }
+ members.remove(player.getUniqueId());
+ save();
+ }
+ }
+
+ public boolean isMember(Player player)
+ {
+ return members.contains(player.getUniqueId()) || owner.equals(player.getUniqueId());
+ }
+
+ public void addModerator(Player player)
+ {
+ if (!isModerator(player))
+ {
+ moderators.add(player.getUniqueId());
+ save();
+ }
+ }
+
+ public void removeModerator(Player player)
+ {
+ if (isModerator(player))
+ {
+ moderators.remove(player.getUniqueId());
+ save();
+ }
+ }
+
+ public boolean isModerator(Player player)
+ {
+ return moderators.contains(player.getUniqueId()) || owner.equals(player.getUniqueId());
+ }
+
+ public void addWarp(String name, Location location)
+ {
+ if (!hasWarp(name))
+ {
+ warps.put(name, location);
+ saveWarp(name);
+ }
+ }
+
+ public void removeWarp(String name)
+ {
+ if (hasWarp(name))
+ {
+ warps.remove(name);
+ Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
+ try
+ {
+ PreparedStatement statement = connection.prepareStatement("DELETE FROM warps WHERE guild_id=? AND name=?");
+ statement.setString(1, id);
+ statement.setString(2, name);
+ statement.execute();
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ public boolean hasWarp(String name)
+ {
+ return warps.get(name) != null;
+ }
+
+ public void createRank(String name)
+ {
+ ranks.put(name.toLowerCase().replaceAll(" ", "_"), new ArrayList<>());
+ Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
+ try
+ {
+ PreparedStatement statement = connection.prepareStatement("INSERT INTO ranks (guild_id, name, members) VALUES (?, ?, ?)");
+ statement.setString(1, id);
+ statement.setString(2, name);
+ statement.setString(3, null);
+ statement.execute();
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public void deleteRank(String name)
+ {
+ if (hasRank(name))
+ {
+ ranks.remove(name);
+ Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
+ try
+ {
+ PreparedStatement statement = connection.prepareStatement("DELETE FROM ranks WHERE guild_id=? AND name=?");
+ statement.setString(1, id);
+ statement.setString(2, name);
+ statement.execute();
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ public boolean hasRank(String name)
+ {
+ return ranks.get(name) != null;
+ }
+
+ public void setPlayerRank(Player player, String name)
+ {
+ if (hasRank(name))
+ {
+ String str = getPlayerRank(player);
+ if (!str.equals(name) && !str.equals(defaultRank))
+ {
+ removePlayerRank(player, str);
+ }
+ List list = ranks.get(name);
+ list.add(player.getUniqueId());
+ ranks.put(name, list);
+ saveRankMembers(name);
+ }
+ }
+
+ public void removePlayerRank(Player player, String name)
+ {
+ if (hasRank(name))
+ {
+ List list = ranks.get(name);
+ list.remove(player.getUniqueId());
+ ranks.put(name, list);
+ saveRankMembers(name);
+ }
+ }
+
+ public String getPlayerRank(Player player)
+ {
+ for (String rank : ranks.keySet())
+ {
+ if (ranks.get(rank).contains(player.getUniqueId()))
+ {
+ return rank;
+ }
+ }
+ return defaultRank;
+ }
+
+ public String getModeratorIds()
+ {
+ List mod = new ArrayList<>();
+ moderators.forEach(uuid ->
+ mod.add(User.getUserFromUuid(uuid).getId()));
+ return StringUtils.join(mod, ",");
+ }
+
+ public String getMemberIds()
+ {
+ List mem = new ArrayList<>();
+ members.forEach(member ->
+ mem.add(User.getUserFromUuid(member).getId()));
+ return StringUtils.join(mem, ",");
+ }
+
+ public String getMotd()
+ {
+ return GUtil.colorize(motd);
+ }
+
+ public void setMotd(String motd)
+ {
+ this.motd = motd;
+ }
+
+ public void invite(Player player)
+ {
+ invites.add(player);
+ }
+
+ public void removeInvite(Player player)
+ {
+ invites.remove(player);
+ }
+
+ public boolean isInvited(Player player)
+ {
+ return invites.contains(player);
+ }
+
+ public void save(boolean newSave)
+ {
+ Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
+ try
+ {
+ PreparedStatement statement = newSave ? connection.prepareStatement("INSERT INTO guilds VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
+ : connection.prepareStatement("UPDATE guilds SET owner=?," +
+ "moderators=?," +
+ "members=?," +
+ "tag=?," +
+ "default_rank=?," +
+ "state=?," +
+ "motd=?," +
+ "x=?," +
+ "y=?," +
+ "z=?," +
+ "world=? WHERE id=?");
+ if (newSave)
+ {
+ statement.setString(1, id);
+ statement.setString(2, name);
+ statement.setInt(3, User.getUserFromUuid(owner).getId());
+ statement.setString(4, null);
+ statement.setString(5, null);
+ statement.setString(6, tag);
+ statement.setString(7, defaultRank);
+ statement.setInt(8, state.ordinal());
+ statement.setString(9, motd);
+ statement.setDouble(10, home.getX());
+ statement.setDouble(11, home.getY());
+ statement.setDouble(12, home.getZ());
+ statement.setString(13, home.getWorld().getName());
+ statement.setLong(14, createdAt);
+ }
+ else
+ {
+ statement.setInt(1, User.getUserFromUuid(owner).getId());
+ statement.setString(2, moderators.isEmpty() ? null : getModeratorIds());
+ statement.setString(3, members.isEmpty() ? null : getMemberIds());
+ statement.setString(4, tag);
+ statement.setString(5, defaultRank);
+ statement.setInt(6, state.ordinal());
+ statement.setString(7, motd);
+ statement.setDouble(8, home.getX());
+ statement.setDouble(9, home.getY());
+ statement.setDouble(10, home.getZ());
+ statement.setString(11, home.getWorld().getName());
+ statement.setString(12, id);
+ }
+ statement.execute();
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public void save()
+ {
+ save(false);
+ }
+
+ public void saveRankMembers(String name)
+ {
+ if (hasRank(name))
+ {
+ Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
+ try
+ {
+ PreparedStatement statement = connection.prepareStatement("UPDATE ranks SET members=? WHERE guild_id=? AND name=?");
+ statement.setString(1, ranks.get(name).isEmpty() ? null : getMemberIdsByRank(name));
+ statement.setString(2, id);
+ statement.setString(3, name);
+ statement.execute();
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ public void saveWarp(String name)
+ {
+ if (hasWarp(name))
+ {
+ Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
+ try
+ {
+ PreparedStatement statement = connection.prepareStatement("INSERT INTO warps VALUES (?, ?, ?, ?, ?, ?)");
+ statement.setString(1, id);
+ statement.setString(2, name);
+ Location location = warps.get(name);
+ statement.setDouble(3, location.getX());
+ statement.setDouble(4, location.getY());
+ statement.setDouble(5, location.getZ());
+ statement.setString(6, location.getWorld().getName());
+ statement.execute();
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ public String getMemberIdsByRank(String name)
+ {
+ if (hasRank(name))
+ {
+ ArrayList rankMembers = new ArrayList<>();
+ ranks.get(name).forEach(uuid ->
+ rankMembers.add(User.getUserFromUuid(uuid).getId()));
+ return StringUtils.join(rankMembers, ",");
+ }
+ return null;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public UUID getOwner()
+ {
+ return owner;
+ }
+
+ public void setOwner(Player player)
+ {
+ members.add(owner);
+ owner = player.getUniqueId();
+ members.remove(player.getUniqueId());
+ save();
+ }
+
+ public List getModerators()
+ {
+ return moderators;
+ }
+
+ public List getModeratorNames()
+ {
+ List names = new ArrayList<>();
+ moderators.forEach(uuid ->
+ names.add(Bukkit.getOfflinePlayer(uuid).getName()));
+ return names;
+ }
+
+ public List getMembers()
+ {
+ return members;
+ }
+
+ public List getMemberOnlyNames()
+ {
+ List names = new ArrayList<>();
+ for (UUID uuid : members)
+ {
+ if (!moderators.contains(uuid) && !uuid.equals(owner))
+ {
+ names.add(Bukkit.getOfflinePlayer(uuid).getName());
+ }
+ }
+ return names;
+ }
+
+ public List getNamesByRank(String name)
+ {
+ List names = new ArrayList<>();
+ if (hasRank(name))
+ {
+ ranks.get(name).forEach(uuid ->
+ names.add(Bukkit.getOfflinePlayer(uuid).getName()));
+ }
+ return names;
+ }
+
+ public Map> getRanks()
+ {
+ return ranks;
+ }
+
+ public List getRankNames()
+ {
+ List names = new ArrayList<>();
+ ranks.keySet().forEach(rank ->
+ names.add(rank));
+ return names;
+ }
+
+ public Map getWarps()
+ {
+ return warps;
+ }
+
+ public List getWarpNames()
+ {
+ List names = new ArrayList<>();
+ warps.keySet().forEach(name ->
+ names.add(name));
+ return names;
+ }
+
+ public Location getWarp(String name)
+ {
+ if (hasWarp(name))
+ {
+ return warps.get(name);
+ }
+ return null;
+ }
+
+ public String getDefaultRank()
+ {
+ return defaultRank;
+ }
+
+ public void setDefaultRank(String defaultRank)
+ {
+ this.defaultRank = defaultRank;
+ save();
+ }
+
+ public String getTag()
+ {
+ return tag;
+ }
+
+ public void setTag(String tag)
+ {
+ this.tag = tag;
+ save();
+ }
+
+ public State getState()
+ {
+ return state;
+ }
+
+ public void setState(State state)
+ {
+ this.state = state;
+ save();
+ }
+
+ public Location getHome()
+ {
+ return home;
+ }
+
+ public void setHome(Location home)
+ {
+ this.home = home;
+ save();
+ }
+
+ public void disband()
+ {
+ if (hasGuild(name))
+ {
+ Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
+ try
+ {
+ PreparedStatement ranks = connection.prepareStatement("DELETE FROM ranks WHERE guild_id=?");
+ ranks.setString(1, id);
+ ranks.execute();
+ PreparedStatement warps = connection.prepareStatement("DELETE FROM warps WHERE guild_id=?");
+ warps.setString(1, id);
+ warps.execute();
+ PreparedStatement guild = connection.prepareStatement("DELETE FROM guilds WHERE id=?");
+ guild.setString(1, id);
+ guild.execute();
+ guilds.remove(id);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
}
public void broadcast(String message)
{
for (Player player : Bukkit.getOnlinePlayers())
{
- if (members.contains(player.getUniqueId()))
+ if (isMember(player))
{
player.sendMessage(message);
}
}
}
- public List getModeratorNames()
+ public void chat(Player player, String message)
{
- List only = new ArrayList<>();
- for (UUID moderator : moderators)
- {
- if (moderator.equals(owner))
- {
- continue;
- }
- OfflinePlayer player = Bukkit.getOfflinePlayer(moderator);
- only.add(player.getName());
- }
- return only;
- }
+ broadcast(GUtil.colorize("&7[&bGuild Chat &7| &b" + name + "&7] " + player.getName() + " &8\u00BB &6") + message);
- public List getOnlyMembers()
- {
- List only = new ArrayList<>();
- for (UUID member : members)
+ if (ConfigEntry.GUILD_CHAT_LOGGING.getBoolean())
{
- if (member.equals(owner) || moderators.contains(member))
- {
- continue;
- }
- OfflinePlayer player = Bukkit.getOfflinePlayer(member);
- only.add(player.getName());
+ Bukkit.getServer().getLogger().info("[Guild Chat | " + name + "] " + player.getName() + " \u00BB " + message);
}
- return only;
- }
- public List getRankNames()
- {
- List names = new ArrayList<>();
- for (GuildRank rank : ranks)
+ for (Player p : Bukkit.getOnlinePlayers())
{
- names.add(rank.getName());
+ if (Common.GUILD_CHAT_SPY.contains(p) && player != p)
+ {
+ p.sendMessage(GUtil.colorize("&7[&bGuild Chat Spy &7| &b" + name + "&7] " + player.getName() + " &8\u00BB &6") + message);
+ }
}
- return names;
}
public String getRoster()
{
- StringBuilder list = new StringBuilder(Common.PREFIX + "Guild Roster for " + name + "\n" +
- "%s%Owner%p% - " + Bukkit.getOfflinePlayer(owner).getName() + "\n" +
- "%s%Moderators%p% - " + StringUtils.join(getModeratorNames(), ", ") + "\n");
+ StringBuilder builder = new StringBuilder();
+ builder.append(ChatColor.AQUA).append("Guild Roster for ").append(ChatColor.GOLD).append(name).append("\n")
+ .append(ChatColor.GRAY).append("Owner: ")
+ .append(ChatColor.GOLD).append(Bukkit.getOfflinePlayer(owner).getName()).append("\n")
+ .append(ChatColor.GRAY).append("Moderators: ")
+ .append(ChatColor.GOLD).append(StringUtils.join(getModeratorNames(), ", ")).append("\n");
- for (GuildRank rank : ranks)
+ for (String rank : ranks.keySet())
{
- list.append("%s%")
- .append(rank.getName()).append("%p% - ")
- .append(StringUtils.join(rank.getMemberNames(), ", "))
- .append("\n");
+ builder.append(ChatColor.GRAY).append(rank).append(": ")
+ .append(ChatColor.GOLD).append(StringUtils.join(getNamesByRank(rank), ", ")).append("\n");
}
- return Common.tl(list +
- "%s%Members%p% - " + StringUtils.join(getOnlyMembers(), ", "));
+ builder.append(ChatColor.GRAY).append("Members: ")
+ .append(ChatColor.GOLD).append(StringUtils.join(getMemberOnlyNames(), ", "));
+ return builder.toString();
}
- public static List getGuildList()
+ @Override
+ public String toString()
{
- List g = new ArrayList<>();
- for (Guild guild : plugin.guilds.values())
- {
- g.add(guild.getName());
- }
- return g;
+ StringBuilder builder = new StringBuilder();
+ builder.append(ChatColor.AQUA).append("Guild Information").append("\n").append(ChatColor.GRAY)
+ .append(" Identifier: ").append(ChatColor.GOLD).append(id).append("\n")
+ .append(ChatColor.GRAY).append(" Name: ").append(ChatColor.GOLD).append(name).append("\n")
+ .append(ChatColor.GRAY).append(" Owner: ").append(ChatColor.GOLD).append(Bukkit.getOfflinePlayer(owner).getName()).append("\n")
+ .append(ChatColor.GRAY).append(" Moderators (").append(getModerators().size()).append("): ").append(ChatColor.GOLD).append(StringUtils.join(getModeratorNames(), ", ")).append("\n")
+ .append(ChatColor.GRAY).append(" Members (").append(getMembers().size()).append("): ").append(ChatColor.GOLD).append(StringUtils.join(getMemberOnlyNames(), ", ")).append("\n")
+ .append(ChatColor.GRAY).append(" Tag: ").append(ChatColor.GOLD).append(tag != null ? GUtil.colorize(tag) : "None").append("\n")
+ .append(ChatColor.GRAY).append(" State: ").append(ChatColor.GOLD).append(state.name()).append("\n")
+ .append(ChatColor.GRAY).append(" Ranks (").append(ranks.size()).append("): ").append(ChatColor.GOLD).append(StringUtils.join(getRankNames(), ", ")).append("\n")
+ .append(ChatColor.GRAY).append(" Created At: ").append(ChatColor.GOLD).append(GUtil.formatTime(createdAt));
+ return builder.toString();
}
- public static List getGuildWarps()
+ public long getCreatedAt()
{
- List warps = new ArrayList<>();
- for (GuildWarp warp : plugin.warps.values())
- {
- warps.add(warp.getWarpName());
- }
- return warps;
+ return createdAt;
}
- public GuildWarp getWarp(String warpName)
+ public enum State
{
- GuildWarp warp = plugin.warps.get(identifier);
- if (warp != null && warp.getWarpName().equalsIgnoreCase(warpName))
+ OPEN,
+ INVITE_ONLY,
+ CLOSED;
+
+ public static State fromString(String string)
{
- return warp;
- }
- return null;
- }
-
- public String getInformation()
- {
- return Common.tl(Common.PREFIX + "Guild Information\n" +
- "%s%Name%p%: " + name + "\n" +
- "%s%Owner%p%: " + Bukkit.getOfflinePlayer(owner).getName() + "\n" +
- "%s%Moderators%p%: " + StringUtils.join(getModeratorNames(), ", ") + "\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%Ranks%p%: " + StringUtils.join(getRankNames(), ", ") + "\n" +
- "%s%Creation%p%: " + GUtil.format(creation) + "\n" +
- "%s%Identifier (Technical)%p%: " + identifier);
- }
-
- 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));
-
- if (ConfigEntry.GUILD_CHAT_LOGGING_ENABLED.getBoolean())
- {
- GLog.info(Common.tl("%s%[%p%Guild Chat %s%| %p%" + GUtil.colorize(name) + "%s%] %p%" + as + ChatColor.WHITE + ": %p%" + msg));
- }
-
- Player sender = Bukkit.getPlayer(as);
-
- for (Player player : Bukkit.getOnlinePlayers())
- {
- if (Common.CHAT_SPY.contains(player))
+ if (string.contains(" "))
{
- if (sender != null)
+ string = string.replaceAll(" ", "_");
+ }
+ try
+ {
+ return valueOf(string.toUpperCase());
+ }
+ catch (Exception ex)
+ {
+ }
+ return null;
+ }
+
+ public static State fromInt(int value)
+ {
+ for (State state : values())
+ {
+ if (state.ordinal() == value)
{
- if (player == sender)
- {
- continue;
- }
+ return state;
}
- player.sendMessage(GUtil.colorize("&7[GUILD CHAT SPY | " + GUtil.colorize(name) + "] " + as + ": " + msg));
}
+ return null;
}
}
-
- public void disband()
- {
- for (UUID member : members)
- {
- Player player = Bukkit.getPlayer(member);
- if (player == null)
- {
- continue;
- }
- Common.IN_GUILD_CHAT.remove(player);
- }
- plugin.guildData.delete(this);
- }
-
- public void rename(String name)
- {
- String oldIdentifier = this.identifier;
- this.identifier = GUtil.flatten(name);
- updateRankIdentifiers();
- this.name = name;
- this.tag = GUtil.colorize("&8[&7" + name + "&8]");
- plugin.guildData.save(this, oldIdentifier);
- }
-
- public void updateRankIdentifiers()
- {
- for (GuildRank rank : ranks)
- {
- rank.updateGuildIdentifier(identifier);
- }
- }
-
- public static Guild createGuild(String identifier, String name, Player owner)
- {
- if (plugin.guildData.exists(identifier))
- {
- return getGuild(identifier);
- }
-
- Guild guild = plugin.guildData.create(identifier, name, owner);
- GLog.info(owner.getName() + " has created guild " + name);
- return guild;
- }
-
- public static Guild getGuild(String identifier)
- {
- return plugin.guilds.get(identifier);
- }
-
- public static Guild getGuild(Player player)
- {
- return plugin.guildData.get(player);
- }
-
- public static boolean guildExists(String identifier)
- {
- return plugin.guildData.exists(identifier);
- }
-
- public static boolean isInGuild(Player player)
- {
- return getGuild(player) != null;
- }
-
- public static GuildWarp createWarp(String identifier, String warpName, Player player)
- {
- return GuildWarp.createGuildWarp(identifier, warpName, player);
- }
-
- public boolean warpExists(String warpName)
- {
- return plugin.warpData.exists(identifier, warpName);
- }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java b/src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java
deleted file mode 100644
index cb8abac..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package me.totalfreedom.tfguilds.guild;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-import lombok.Getter;
-import me.totalfreedom.tfguilds.TFGuilds;
-import org.bukkit.Bukkit;
-import org.bukkit.OfflinePlayer;
-
-public class GuildRank
-{
- private static final TFGuilds plugin = TFGuilds.getPlugin();
-
- @Getter
- private String iguild;
-
- // identifier
- @Getter
- private final String identifier;
-
- // name
- @Getter
- private final String name;
-
- // members of this rank
- @Getter
- private final List members;
-
- public GuildRank(String iguild, String identifier, String name, List members)
- {
- this.iguild = iguild;
- this.identifier = identifier;
- this.name = name;
- this.members = members;
- }
-
- public List getMemberNames()
- {
- List only = new ArrayList<>();
- for (UUID member : members)
- {
- OfflinePlayer player = Bukkit.getOfflinePlayer(member);
- only.add(player.getName());
- }
- return only;
- }
-
- public static GuildRank createGuildRank(String guildIdentifier, String identifier, String name)
- {
- return plugin.rankData.create(guildIdentifier, identifier, name);
- }
-
- public void save()
- {
- plugin.rankData.save(this);
- }
-
- public void updateGuildIdentifier(String newIdentifier)
- {
- plugin.rankData.updateGuildIdentifier(this, newIdentifier);
- this.iguild = newIdentifier;
- }
-
- public void delete()
- {
- plugin.rankData.delete(this);
- }
-}
\ 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
deleted file mode 100644
index 1e69972..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/guild/GuildState.java
+++ /dev/null
@@ -1,41 +0,0 @@
-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)
- {
- if (string == null)
- {
- return null;
- }
-
- 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/guild/GuildWarp.java b/src/main/java/me/totalfreedom/tfguilds/guild/GuildWarp.java
deleted file mode 100644
index c31a8f9..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/guild/GuildWarp.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package me.totalfreedom.tfguilds.guild;
-
-import lombok.Getter;
-import me.totalfreedom.tfguilds.TFGuilds;
-import org.bukkit.World;
-import org.bukkit.entity.Player;
-
-@Getter
-public class GuildWarp
-{
- private static final TFGuilds plugin = TFGuilds.getPlugin();
-
- private final String iguild;
- private final String warpName;
- private final double x;
- private final double y;
- private final double z;
- private final World world;
-
- public GuildWarp(String iguild, String warpName, double x, double y, double z, World world)
- {
- this.iguild = iguild;
- this.warpName = warpName;
- this.x = x;
- this.y = y;
- this.z = z;
- this.world = world;
- }
-
- public static GuildWarp createGuildWarp(String identifier, String name, Player player)
- {
- return plugin.warpData.create(identifier, name, player);
- }
-
- public void save()
- {
- plugin.warpData.save(this);
- }
-
- public void delete()
- {
- plugin.warpData.delete(this);
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/User.java b/src/main/java/me/totalfreedom/tfguilds/guild/User.java
new file mode 100644
index 0000000..1e2fef1
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/guild/User.java
@@ -0,0 +1,141 @@
+package me.totalfreedom.tfguilds.guild;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import me.totalfreedom.tfguilds.TFGuilds;
+import org.bukkit.entity.Player;
+
+public class User
+{
+
+ private static Map users = new HashMap<>();
+ //
+ private final int id;
+ private final UUID uuid;
+ private boolean tag;
+
+ public User(int id, UUID uuid, boolean tag)
+ {
+ this.id = id;
+ this.uuid = uuid;
+ this.tag = tag;
+ }
+
+ public static User create(Player player)
+ {
+ int id = users.size() + 1;
+ User user = new User(id, player.getUniqueId(), true);
+ users.put(id, user);
+ user.save(true);
+ return user;
+ }
+
+ public static void loadAll()
+ {
+ Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
+ try
+ {
+ ResultSet set = connection.prepareStatement("SELECT * FROM users").executeQuery();
+ while (set.next())
+ {
+ int id = set.getInt("id");
+ UUID uuid = UUID.fromString(set.getString("uuid"));
+ boolean tag = set.getBoolean("tag");
+ users.put(id, new User(id, uuid, tag));
+ }
+ TFGuilds.getPlugin().getLogger().info(users.size() + " users loaded!");
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public static boolean hasUser(int id)
+ {
+ return users.get(id) != null;
+ }
+
+ public static User getUserFromId(int id)
+ {
+ if (hasUser(id))
+ {
+ return users.get(id);
+ }
+ return null;
+ }
+
+ public static User getUserFromUuid(UUID uuid)
+ {
+ for (User user : users.values())
+ {
+ if (user.getUuid().equals(uuid))
+ {
+ return user;
+ }
+ }
+ return null;
+ }
+
+ public static User getUserFromPlayer(Player player)
+ {
+ return getUserFromUuid(player.getUniqueId());
+ }
+
+ public int getId()
+ {
+ return id;
+ }
+
+ public UUID getUuid()
+ {
+ return uuid;
+ }
+
+ public boolean displayTag()
+ {
+ return tag;
+ }
+
+ public void setDisplayTag(boolean tag)
+ {
+ this.tag = tag;
+ save();
+ }
+
+ public void save(boolean newSave)
+ {
+ Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
+ try
+ {
+ PreparedStatement statement = newSave ? connection.prepareStatement("INSERT INTO users VALUES (?, ?, ?)")
+ : connection.prepareStatement("UPDATE users SET tag=? WHERE id=?");
+ if (newSave)
+ {
+ statement.setString(1, uuid.toString());
+ statement.setInt(2, id);
+ statement.setBoolean(3, tag);
+ }
+ else
+ {
+ statement.setBoolean(1, tag);
+ statement.setInt(2, id);
+ }
+ statement.execute();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public void save()
+ {
+ save(false);
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java
index bd3cc51..ab7bbb3 100644
--- a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java
+++ b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java
@@ -4,8 +4,7 @@ import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.TFGuilds;
import me.totalfreedom.tfguilds.config.ConfigEntry;
import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.guild.GuildRank;
-import me.totalfreedom.tfguilds.user.User;
+import me.totalfreedom.tfguilds.guild.User;
import me.totalfreedom.tfguilds.util.GUtil;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -16,75 +15,55 @@ import org.bukkit.event.player.AsyncPlayerChatEvent;
public class ChatListener implements Listener
{
- private static final TFGuilds plugin = TFGuilds.getPlugin();
+
+ public ChatListener(TFGuilds plugin)
+ {
+ plugin.getServer().getPluginManager().registerEvents(this, plugin);
+ }
@EventHandler(priority = EventPriority.HIGHEST)
- public void onPlayerChat(AsyncPlayerChatEvent e)
+ public void onPlayerChat(AsyncPlayerChatEvent event)
{
- Player player = e.getPlayer();
+ Player player = event.getPlayer();
Guild guild = Guild.getGuild(player);
if (guild == null)
{
return;
}
- if (Common.IN_GUILD_CHAT.contains(player))
+ if (Common.GUILD_CHAT.contains(player))
{
- guild.chat(player.getName(), e.getMessage());
- e.setCancelled(true);
+ event.setCancelled(true);
+ guild.chat(player, event.getMessage());
return;
}
- GuildRank rank = null;
- for (GuildRank r : guild.getRanks())
+ if (!ConfigEntry.GUILD_TAGS.getBoolean())
{
- if (r != null)
- {
- if (r.getMembers() != null)
- {
- if (r.getMembers().contains(player.getUniqueId()))
- {
- rank = r;
- }
- }
- }
+ return;
}
- String display;
- if (rank == null)
+ String display = guild.getPlayerRank(player);
+ if (display == guild.getDefaultRank())
{
if (guild.getOwner().equals(player.getUniqueId()))
{
display = "Guild Owner";
}
- else if (guild.hasModerator(player.getUniqueId()))
+ else if (guild.isModerator(player))
{
display = "Guild Moderator";
}
- else
- {
- display = "Guild Member";
- }
}
- else
+ else if (display == null)
{
- display = rank.getName();
+ display = "Guild Member";
}
- if (!ConfigEntry.GUILD_TAGS_ENABLED.getBoolean())
+ User user = User.getUserFromPlayer(player);
+ if (guild.getTag() != null && user.displayTag())
{
- return;
- }
-
- User user = plugin.userData.get(player.getUniqueId());
- if (!user.isTag())
- {
- return;
- }
-
- if (guild.hasTag())
- {
- e.setFormat(GUtil.colorize(guild.getTag().replace("%rank%", display)) + ChatColor.RESET + " " + e.getFormat());
+ event.setFormat(GUtil.colorize(guild.getTag().replace("%rank%", display)) + ChatColor.RESET + " " + event.getFormat());
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/JoinListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/JoinListener.java
index 1aabd3d..7297ed8 100644
--- a/src/main/java/me/totalfreedom/tfguilds/listener/JoinListener.java
+++ b/src/main/java/me/totalfreedom/tfguilds/listener/JoinListener.java
@@ -1,27 +1,42 @@
package me.totalfreedom.tfguilds.listener;
+import me.totalfreedom.tfguilds.TFGuilds;
import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.util.GUtil;
+import me.totalfreedom.tfguilds.guild.User;
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.PlayerJoinEvent;
public class JoinListener implements Listener
{
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent e)
+
+ public JoinListener(TFGuilds plugin)
{
- Player player = e.getPlayer();
+ plugin.getServer().getPluginManager().registerEvents(this, plugin);
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST)
+ public void onPlayerJoin(PlayerJoinEvent event)
+ {
+ Player player = event.getPlayer();
+
+ User user = User.getUserFromPlayer(player);
+ if (user == null)
+ {
+ User.create(player);
+ }
+
Guild guild = Guild.getGuild(player);
if (guild == null)
{
return;
}
- if (guild.hasMOTD())
+ if (guild.getMotd() != null && !guild.getMotd().isEmpty())
{
- player.sendMessage(GUtil.colorize(guild.getMotd()));
+ player.sendMessage(guild.getMotd());
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java
index 0926641..4a23839 100644
--- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java
+++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java
@@ -1,40 +1,39 @@
package me.totalfreedom.tfguilds.sql;
-import java.io.File;
-import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import me.totalfreedom.tfguilds.TFGuilds;
+import me.totalfreedom.tfguilds.config.ConfigEntry;
+import org.bukkit.Bukkit;
public class SQLDatabase
{
- private static final String DATABASE_FILENAME = "database.db";
+
private Connection connection;
- public SQLDatabase()
+ public SQLDatabase(TFGuilds plugin)
{
- File file = new File(TFGuilds.getPlugin().getDataFolder(), DATABASE_FILENAME);
- if (!file.exists())
+ String password = ConfigEntry.MYSQL_PASSWORD.getString();
+ if (password == null)
{
- try
- {
- file.createNewFile();
- TFGuilds.getPlugin().saveResource(DATABASE_FILENAME, false);
- }
- catch (IOException ex)
- {
- ex.printStackTrace();
- }
+ password = "";
}
try
{
- connection = DriverManager.getConnection("jdbc:sqlite:" + file.getAbsolutePath());
+ Bukkit.getLogger().info(ConfigEntry.MYSQL_USERNAME.getString());
+ connection = DriverManager.getConnection(String.format("jdbc:mysql://%s:%d/%s",
+ ConfigEntry.MYSQL_HOST.getString(),
+ ConfigEntry.MYSQL_PORT.getInteger(),
+ ConfigEntry.MYSQL_DATABASE.getString()),
+ ConfigEntry.MYSQL_USERNAME.getString(),
+ password);
createTables();
+ plugin.getLogger().info("Connection to the MySQL server established!");
}
catch (SQLException ex)
{
- ex.printStackTrace();
+ plugin.getLogger().severe("Could not connect to MySQL server!");
}
}
@@ -45,45 +44,39 @@ public class SQLDatabase
private void createTables() throws SQLException
{
- connection.prepareStatement("CREATE TABLE IF NOT EXISTS `users` (\n" +
- "\t`id` INT,\n" +
- "\t`uuid` TINYTEXT,\n" +
- "\t`tag` BOOL\n" +
- ");").execute();
- connection.prepareStatement("CREATE TABLE IF NOT EXISTS `worlds` (\n" +
- "\t`id` SMALLINT,\n" +
- "\t`name` TINYTEXT\n" +
- ");").execute();
- connection.prepareStatement("CREATE TABLE IF NOT EXISTS `ranks` (\n" +
- "\t`guild_identifier` TEXT,\n" +
- "\t`identifier` TEXT,\n" +
- "\t`name` TEXT,\n" +
- "\t`members` TEXT\n" +
- ");").execute();
- connection.prepareStatement("CREATE TABLE IF NOT EXISTS `guilds` (\n" +
- "\t`identifier` TEXT,\n" +
- "\t`name` TEXT,\n" +
- "\t`owner` INT,\n" +
- "\t`moderators` TEXT,\n" +
- "\t`members` TEXT,\n" +
- "\t`tag` TEXT,\n" +
- "\t`state` TINYINT,\n" +
- "\t`ranks` TEXT,\n" +
- "\t`motd` TEXT,\n" +
- "\t`x` DOUBLE,\n" +
- "\t`y` DOUBLE,\n" +
- "\t`z` DOUBLE,\n" +
- "\t`world` SMALLINT,\n" +
- "\t`default_rank` TEXT,\n" +
- "\t`creation` BIGINT\n" +
- ");").execute();
- connection.prepareStatement("CREATE TABLE IF NOT EXISTS `warps` (\n" +
- "\t`identifier` TEXT,\n" +
- "\t`warp_name` TEXT,\n" +
- "\t`x` DOUBLE,\n" +
- "\t`y` DOUBLE,\n" +
- "\t`z` DOUBLE,\n" +
- "\t`world` SMALLINT\n" +
- ");").execute();
+ connection.prepareStatement("CREATE TABLE IF NOT EXISTS `users` (" +
+ "`uuid` TEXT," +
+ "`id` INT," +
+ "`tag` BOOLEAN)")
+ .execute();
+ connection.prepareStatement("CREATE TABLE IF NOT EXISTS `warps` (" +
+ "`guild_id` TEXT," +
+ "`name` TEXT," +
+ "`x` DOUBLE," +
+ "`y` DOUBLE," +
+ "`z` DOUBLE," +
+ "`world` TEXT)")
+ .execute();
+ connection.prepareStatement("CREATE TABLE IF NOT EXISTS `guilds` (" +
+ "`id` TEXT," +
+ "`name` TEXT," +
+ "`owner` INT," +
+ "`moderators` TEXT," +
+ "`members` TEXT," +
+ "`tag` TEXT," +
+ "`default_rank` TEXT," +
+ "`state` INT," +
+ "`motd` TEXT," +
+ "`x` DOUBLE," +
+ "`y` DOUBLE," +
+ "`z` DOUBLE," +
+ "`world` TEXT," +
+ "`creation` LONG)")
+ .execute();
+ connection.prepareStatement("CREATE TABLE IF NOT EXISTS `ranks` (" +
+ "`guild_id` TEXT," +
+ "`name` TEXT," +
+ "`members` TEXT)")
+ .execute();
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java
deleted file mode 100644
index 6649083..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java
+++ /dev/null
@@ -1,229 +0,0 @@
-package me.totalfreedom.tfguilds.sql;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.UUID;
-import me.totalfreedom.tfguilds.TFGuilds;
-import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.guild.GuildRank;
-import me.totalfreedom.tfguilds.guild.GuildState;
-import org.apache.commons.lang.StringUtils;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
-import org.bukkit.entity.Player;
-
-public class SQLGuildData
-{
-
- private static final TFGuilds plugin = TFGuilds.getPlugin();
- private static final String TABLE_NAME = "guilds";
-
- private final String SELECT = "SELECT * FROM `" + TABLE_NAME + "` WHERE identifier=?";
- private final String SELECT_MEMBER = "SELECT * FROM `" + TABLE_NAME + "` WHERE members LIKE ?";
- private final String SELECT_ALL = "SELECT * FROM `" + TABLE_NAME + "`";
- private final String UPDATE = "UPDATE `" + TABLE_NAME + "` SET identifier=?, name=?, owner=?, members=?, moderators=?, tag=?, state=?, ranks=?, motd=?, x=?, y=?, z=?, world=?, default_rank=? WHERE identifier=?";
- private final String DELETE = "DELETE FROM `" + TABLE_NAME + "` WHERE identifier=?";
- private final String INSERT = "INSERT INTO `" + TABLE_NAME + "` (`identifier`, `name`, `owner`, `members`, " +
- "`moderators`, `tag`, `state`, `ranks`, `motd`, `x`, `y`, `z`, `world`, `default_rank`, `creation`) " +
- "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);";
-
- public boolean exists(String identifier)
- {
- return plugin.guilds.containsKey(identifier);
- }
-
- public Guild get(String identifier)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT);
- statement.setString(1, identifier);
- ResultSet set = statement.executeQuery();
- boolean next = set.next();
- if (!next)
- {
- return null;
- }
- String name = set.getString("name");
- UUID owner = plugin.userData.get(set.getInt("owner")).getUuid();
- List members = new ArrayList<>();
- for (String stringMember : set.getString("members").split(","))
- {
- members.add(plugin.userData.get(Integer.parseInt(stringMember)).getUuid());
- }
- List moderators = new ArrayList<>();
- if (set.getString("moderators") != null)
- {
- for (String stringModerator : set.getString("moderators").split(","))
- {
- moderators.add(plugin.userData.get(Integer.parseInt(stringModerator)).getUuid());
- }
- }
- String tag = set.getString("tag");
- GuildState state = GuildState.values()[set.getInt("state")];
- List ranks = new ArrayList<>();
- if (set.getString("ranks") != null)
- {
- for (String rankString : set.getString("ranks").split(","))
- {
- ranks.add(plugin.rankData.get(identifier, rankString));
- }
- }
- String motd = set.getString("motd");
- Location home = new Location(plugin.worldData.getWorld(set.getInt("world")),
- set.getDouble("x"),
- set.getDouble("y"),
- set.getDouble("z"));
- String defaultRank = set.getString("default_rank");
- long creation = set.getLong("creation");
- return new Guild(identifier, name, owner, members, moderators, tag, state, ranks, motd, home, creation, defaultRank);
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return null;
- }
-
- public Guild get(Player player)
- {
- for (Guild guild : plugin.guilds.values())
- {
- if (guild.getMembers().contains(player.getUniqueId()))
- {
- return guild;
- }
- }
- return null;
- }
-
- public void getAll()
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT_ALL);
- ResultSet set = statement.executeQuery();
- while (set.next())
- {
- String identifier = set.getString("identifier");
- plugin.guilds.put(identifier, get(identifier));
- }
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- }
-
- public Guild create(String identifier, String name, Player owner)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(INSERT);
- statement.setString(1, identifier);
- statement.setString(2, name);
- int ownerID = plugin.userData.get(owner.getUniqueId()).getId();
- statement.setInt(3, ownerID);
- statement.setString(4, "" + ownerID);
- statement.setString(5, null);
- statement.setString(6, "&8[&7" + name + "&8]");
- statement.setInt(7, GuildState.INVITE_ONLY.ordinal());
- statement.setString(8, null);
- statement.setString(9, null);
- statement.setDouble(10, 0.0);
- statement.setDouble(11, 100.0);
- statement.setDouble(12, 0.0);
- statement.setInt(13, plugin.worldData.getWorldID(Bukkit.getWorlds().get(0)));
- statement.setString(14, null);
- long creation = System.currentTimeMillis();
- statement.setLong(15, creation);
- statement.execute();
- Guild guild = new Guild(identifier, name, owner.getUniqueId(), Collections.singletonList(owner.getUniqueId()), new ArrayList<>(),
- ChatColor.DARK_GRAY + "[" + ChatColor.GRAY + name + ChatColor.DARK_GRAY + "]",
- GuildState.INVITE_ONLY, new ArrayList<>(), null, new Location(Bukkit.getWorlds().get(0), 0.0, 100.0, 0.0), creation, null);
- plugin.guilds.put(identifier, guild);
- return guild;
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return null;
- }
-
- public void save(Guild guild, String identifier)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(UPDATE);
- statement.setString(1, guild.getIdentifier());
- statement.setString(2, guild.getName());
- statement.setString(3, "" + plugin.userData.get(guild.getOwner()).getId());
- List members = new ArrayList<>();
- for (UUID member : guild.getMembers())
- {
- members.add("" + plugin.userData.get(member).getId());
- }
- statement.setString(4, members.size() == 0 ? null : StringUtils.join(members, ","));
- List moderators = new ArrayList<>();
- for (UUID moderator : guild.getModerators())
- {
- moderators.add("" + plugin.userData.get(moderator).getId());
- }
- statement.setString(5, moderators.size() == 0 ? null : StringUtils.join(moderators, ","));
- statement.setString(6, guild.getTag());
- statement.setInt(7, guild.getState().ordinal());
- List stringRanks = new ArrayList<>();
- for (GuildRank rank : guild.getRanks())
- {
- stringRanks.add(rank.getIdentifier());
- }
- statement.setString(8, stringRanks.size() == 0 ? null : StringUtils.join(stringRanks, ","));
- statement.setString(9, guild.getMotd());
- Location home = guild.getHome();
- statement.setDouble(10, home == null ? 0.0 : home.getX());
- statement.setDouble(11, home == null ? 100.0 : home.getY());
- statement.setDouble(12, home == null ? 0.0 : home.getZ());
- statement.setInt(13, home == null ? plugin.worldData.getWorldID(Bukkit.getWorlds().get(0)) : plugin.worldData.getWorldID(home.getWorld()));
- statement.setString(14, guild.getDefaultRank());
- statement.setString(15, identifier);
- statement.execute();
- plugin.guilds.put(identifier, guild);
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- }
-
- public void save(Guild guild)
- {
- save(guild, guild.getIdentifier());
- }
-
- public void delete(Guild guild)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(DELETE);
- statement.setString(1, guild.getIdentifier());
- statement.execute();
- plugin.guilds.remove(guild.getIdentifier());
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java
deleted file mode 100644
index 420dcc9..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package me.totalfreedom.tfguilds.sql;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-import me.totalfreedom.tfguilds.TFGuilds;
-import me.totalfreedom.tfguilds.guild.GuildRank;
-import org.apache.commons.lang.StringUtils;
-
-public class SQLRankData
-{
- private static final TFGuilds plugin = TFGuilds.getPlugin();
- private static final String TABLE_NAME = "ranks";
-
- private final String SELECT = "SELECT * FROM `" + TABLE_NAME + "` WHERE guild_identifier=? AND identifier=?";
- private final String UPDATE = "UPDATE `" + TABLE_NAME + "` SET name=?, members=? WHERE guild_identifier=? AND identifier=?";
- private final String UPDATE_GUILD = "UPDATE `" + TABLE_NAME + "` SET guild_identifier=? WHERE guild_identifier=? AND identifier=?";
- private final String DELETE = "DELETE FROM `" + TABLE_NAME + "` WHERE guild_identifier=? AND identifier=?";
- private final String INSERT = "INSERT INTO `" + TABLE_NAME + "` (`guild_identifier`, `identifier`, `name`, `members`) " +
- "VALUES (?, ?, ?, ?);";
-
- public boolean exists(String guildIdentifier, String identifier)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT);
- statement.setString(1, guildIdentifier);
- statement.setString(2, identifier);
- ResultSet set = statement.executeQuery();
- return set.next();
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return false;
- }
-
- public GuildRank get(String guildIdentifier, String identifier)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT);
- statement.setString(1, guildIdentifier);
- statement.setString(2, identifier);
- ResultSet set = statement.executeQuery();
- if (!set.next())
- {
- return null;
- }
- String name = set.getString("name");
- List members = new ArrayList<>();
- if (set.getString("members") != null)
- {
- for (String stringMember : set.getString("members").split(","))
- {
- members.add(plugin.userData.get(Integer.parseInt(stringMember)).getUuid());
- }
- }
- return new GuildRank(guildIdentifier, identifier, name, members);
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return null;
- }
-
- public GuildRank create(String guildIdentifier, String identifier, String name)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(INSERT);
- statement.setString(1, guildIdentifier);
- statement.setString(2, identifier);
- statement.setString(3, name);
- statement.setString(4, null);
- statement.execute();
- return new GuildRank(guildIdentifier, identifier, name, new ArrayList<>());
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return null;
- }
-
- public void save(GuildRank rank)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(UPDATE);
- statement.setString(1, rank.getName());
- List members = new ArrayList<>();
- for (UUID member : rank.getMembers())
- {
- members.add("" + plugin.userData.get(member).getId());
- }
- statement.setString(2, members.size() == 0 ? null : StringUtils.join(members, ","));
- statement.setString(3, rank.getIguild());
- statement.setString(4, rank.getIdentifier());
- statement.execute();
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- }
-
- public void updateGuildIdentifier(GuildRank rank, String newIdentifier)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(UPDATE_GUILD);
- statement.setString(1, newIdentifier);
- statement.setString(2, rank.getIguild());
- statement.setString(3, rank.getIdentifier());
- statement.execute();
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- }
-
- public void delete(GuildRank rank)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(DELETE);
- statement.setString(1, rank.getIguild());
- statement.setString(2, rank.getIdentifier());
- statement.execute();
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java
deleted file mode 100644
index af25ec0..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package me.totalfreedom.tfguilds.sql;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.UUID;
-import me.totalfreedom.tfguilds.TFGuilds;
-import me.totalfreedom.tfguilds.user.User;
-
-public class SQLUserData
-{
- private static final TFGuilds plugin = TFGuilds.getPlugin();
- private static final String TABLE_NAME = "users";
-
- private final String SELECT = "SELECT * FROM `" + TABLE_NAME + "` WHERE uuid=?";
- private final String SELECT_ID = "SELECT * FROM `" + TABLE_NAME + "` WHERE id=?";
- private final String UPDATE = "UPDATE `" + TABLE_NAME + "` SET tag=? WHERE uuid=?";
- private final String INSERT = "INSERT INTO `" + TABLE_NAME + "` (`id`, `uuid`, `tag`) " +
- "VALUES (?, ?, ?);";
- private final String COUNT = "SELECT COUNT(*) AS rows FROM `" + TABLE_NAME + "`";
-
- public boolean exists(UUID uuid)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT);
- statement.setString(1, uuid.toString());
- ResultSet set = statement.executeQuery();
- return set.next();
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return false;
- }
-
- public boolean existsID(int id)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT_ID);
- statement.setInt(1, id);
- ResultSet set = statement.executeQuery();
- return set.next();
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return false;
- }
-
- public User get(UUID uuid)
- {
- if (!exists(uuid))
- {
- create(uuid);
- }
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT);
- statement.setString(1, uuid.toString());
- ResultSet set = statement.executeQuery();
- set.next();
- int id = set.getInt("id");
- boolean tag = set.getBoolean("tag");
- return new User(id, uuid, tag);
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return null;
- }
-
- public User get(int id)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT_ID);
- statement.setInt(1, id);
- ResultSet set = statement.executeQuery();
- set.next();
- UUID uuid = UUID.fromString(set.getString("uuid"));
- boolean tag = set.getBoolean("tag");
- return new User(id, uuid, tag);
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return null;
- }
-
- public User create(UUID uuid)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(INSERT);
- int id = getUserCount() + 1;
- statement.setInt(1, id);
- statement.setString(2, uuid.toString());
- statement.setBoolean(3, true);
- statement.execute();
- return new User(id, uuid, true);
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return null;
- }
-
- public void save(User user)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(UPDATE);
- statement.setBoolean(1, user.isTag());
- statement.setString(2, user.getUuid().toString());
- statement.execute();
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- }
-
- public int getUserCount()
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(COUNT);
- ResultSet set = statement.executeQuery();
- set.next();
- int count = set.getInt("rows");
- set.close();
- return count;
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return 0;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java
deleted file mode 100644
index 0cec480..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package me.totalfreedom.tfguilds.sql;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-import me.totalfreedom.tfguilds.TFGuilds;
-import me.totalfreedom.tfguilds.guild.GuildWarp;
-import org.bukkit.World;
-import org.bukkit.entity.Player;
-
-public class SQLWarpData
-{
- private static final TFGuilds plugin = TFGuilds.getPlugin();
- private static final String TABLE_NAME = "warps";
-
- private final String SELECT = "SELECT * FROM `" + TABLE_NAME + "` WHERE identifier=? AND warp_name=?";
- private final String SELECT_ALL = "SELECT * FROM `" + TABLE_NAME + "`";
- private final String UPDATE = "UPDATE `" + TABLE_NAME + "` WHERE identifier=? AND warp_name=? SET x=?, y=?, z=?, world=?";
- private final String DELETE = "DELETE FROM `" + TABLE_NAME + "` WHERE identifier=? AND warp_name=?";
- private final String INSERT = "INSERT INTO `" + TABLE_NAME + "` (`identifier`, `warp_name`, `x`, `y`, `z`, `world`) VALUES (?, ?, ?, ?, ?, ?);";
-
- public boolean exists(String identifier, String warpName)
- {
- GuildWarp warp = plugin.warps.get(identifier);
- return warp != null && warp.getWarpName().equalsIgnoreCase(warpName);
- }
-
- public GuildWarp get(String identifier, String warpName)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT);
- statement.setString(1, identifier);
- statement.setString(2, warpName);
- ResultSet set = statement.executeQuery();
- double x = set.getDouble("x");
- double y = set.getDouble("y");
- double z = set.getDouble("z");
- World world = plugin.worldData.getWorld(set.getInt("world"));
- return new GuildWarp(identifier, warpName, x, y, z, world);
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return null;
- }
-
- public void getAll()
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT_ALL);
- ResultSet set = statement.executeQuery();
- while (set.next())
- {
- String identifier = set.getString("identifier");
- plugin.warps.put(identifier, get(identifier, set.getString("warp_name")));
- }
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- }
-
- public GuildWarp create(String identifier, String warpName, Player player)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(INSERT);
- statement.setString(1, identifier);
- statement.setString(2, warpName);
- statement.setDouble(3, player.getLocation().getX());
- statement.setDouble(4, player.getLocation().getY());
- statement.setDouble(5, player.getLocation().getZ());
- statement.setInt(6, plugin.worldData.getWorldID(player.getWorld()));
- statement.execute();
- GuildWarp warp = new GuildWarp(identifier, warpName, player.getLocation().getX(), player.getLocation().getY(),
- player.getLocation().getZ(), player.getWorld());
- plugin.warps.put(identifier, warp);
- return warp;
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return null;
- }
-
- public void save(GuildWarp warp)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(UPDATE);
- statement.setString(1, warp.getIguild());
- statement.setString(2, warp.getWarpName());
- statement.setDouble(3, warp.getX());
- statement.setDouble(4, warp.getY());
- statement.setDouble(5, warp.getZ());
- statement.setInt(6, plugin.worldData.getWorldID(warp.getWorld()));
- statement.execute();
- plugin.warps.put(warp.getIguild(), warp);
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- }
-
- public void delete(GuildWarp warp)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(DELETE);
- statement.setString(1, warp.getIguild());
- statement.setString(2, warp.getWarpName());
- statement.execute();
- plugin.warps.remove(warp.getIguild());
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java
deleted file mode 100644
index 2a776bd..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package me.totalfreedom.tfguilds.sql;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import me.totalfreedom.tfguilds.TFGuilds;
-import org.bukkit.Bukkit;
-import org.bukkit.World;
-
-public class SQLWorldData
-{
- private static final TFGuilds plugin = TFGuilds.getPlugin();
-
- private final String SELECT = "SELECT * FROM `worlds` WHERE name=?";
- private final String SELECT_ID = "SELECT * FROM `worlds` WHERE id=?";
- private final String INSERT = "INSERT INTO `worlds` (`id`, `name`) VALUES (?, ?);";
- private final String COUNT = "SELECT COUNT(*) AS rows FROM `worlds`";
-
- public boolean exists(World world)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT);
- statement.setString(1, world.getName());
- ResultSet set = statement.executeQuery();
- return set.next();
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return false;
- }
-
- public boolean existsID(int id)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(SELECT_ID);
- statement.setInt(1, id);
- ResultSet set = statement.executeQuery();
- return set.next();
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return false;
- }
-
- public int getWorldID(World world)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- if (!exists(world))
- {
- PreparedStatement statement = connection.prepareStatement(INSERT);
- statement.setInt(1, getWorldCount() + 1);
- statement.setString(2, world.getName());
- statement.execute();
- }
- PreparedStatement statement = connection.prepareStatement(SELECT);
- statement.setString(1, world.getName());
- ResultSet set = statement.executeQuery();
- set.next();
- int id = set.getInt("id");
- set.close();
- return id;
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return -1;
- }
-
- public World getWorld(int id)
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- if (!existsID(id))
- {
- return null;
- }
- PreparedStatement statement = connection.prepareStatement(SELECT_ID);
- statement.setInt(1, id);
- ResultSet set = statement.executeQuery();
- set.next();
- String name = set.getString("name");
- set.close();
- return Bukkit.getWorld(name);
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return null;
- }
-
- public int getWorldCount()
- {
- Connection connection = plugin.sql.getConnection();
- try
- {
- PreparedStatement statement = connection.prepareStatement(COUNT);
- ResultSet set = statement.executeQuery();
- set.next();
- int count = set.getInt("rows");
- set.close();
- return count;
- }
- catch (SQLException ex)
- {
- ex.printStackTrace();
- }
- return 0;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/user/User.java b/src/main/java/me/totalfreedom/tfguilds/user/User.java
deleted file mode 100644
index 163b9ab..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/user/User.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package me.totalfreedom.tfguilds.user;
-
-import java.util.UUID;
-import lombok.Getter;
-import lombok.Setter;
-import me.totalfreedom.tfguilds.TFGuilds;
-
-@Getter
-public class User
-{
- private final int id;
- private final UUID uuid;
-
- @Setter
- private boolean tag;
-
- public User(int id, UUID uuid, boolean tag)
- {
- this.id = id;
- this.uuid = uuid;
- this.tag = tag;
- }
-
- public void save()
- {
- TFGuilds.getPlugin().userData.save(this);
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/util/GLog.java b/src/main/java/me/totalfreedom/tfguilds/util/GLog.java
deleted file mode 100644
index 76eeee0..0000000
--- a/src/main/java/me/totalfreedom/tfguilds/util/GLog.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package me.totalfreedom.tfguilds.util;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-public class GLog
-{
- private static final Logger LOGGER = Logger.getLogger("Minecraft");
- private static final String PREFIX = "[TFGuilds]";
-
- private static void log(Object o, Level l)
- {
- LOGGER.log(l, PREFIX + " " + o);
- }
-
- public static void info(Object o)
- {
- log(o, Level.INFO);
- }
-
- public static void warn(Object o)
- {
- log(o, Level.WARNING);
- }
-
- public static void severe(Object o)
- {
- log(o, Level.SEVERE);
- }
-}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/util/GUtil.java b/src/main/java/me/totalfreedom/tfguilds/util/GUtil.java
index 3be055f..4ae65a1 100644
--- a/src/main/java/me/totalfreedom/tfguilds/util/GUtil.java
+++ b/src/main/java/me/totalfreedom/tfguilds/util/GUtil.java
@@ -1,67 +1,53 @@
package me.totalfreedom.tfguilds.util;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import me.totalfreedom.tfguilds.TFGuilds;
-import org.apache.commons.lang.StringUtils;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.entity.Player;
+import net.md_5.bungee.api.ChatColor;
public class GUtil
{
- private static final SimpleDateFormat STANDARD = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss");
- private static final TFGuilds plugin = TFGuilds.getPlugin();
- public static String flatten(String s)
- {
- String[] split = s.split(" ");
- for (int i = 0; i < split.length; i++)
- {
- split[i] = ChatColor.stripColor(colorize(split[i].toLowerCase()));
- }
- return StringUtils.join(split, "_");
- }
-
- public static String colorize(String string)
- {
- Matcher matcher = Pattern.compile("[a-f0-9A-F]{6}").matcher(string);
- while (matcher.find())
- {
- String code = matcher.group().replace("&", "");
- string = string.replace("&" + code, net.md_5.bungee.api.ChatColor.of(code) + "");
- }
-
- string = ChatColor.translateAlternateColorCodes('&', string);
- return string;
- }
-
- public static String format(long time)
- {
- Date date = new Date(time);
- return STANDARD.format(date);
- }
-
- public static List BLACKLISTED_NAMES_AND_TAGS = Arrays.asList(
+ private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("EEE d MMM yyyy HH:mm:ss");
+ private static final List BLACKLISTED_NAMES_AND_TAGS = Arrays.asList(
"admin", "owner", "moderator", "developer", "console", "dev", "staff",
"mod", "sra", "sta", "sa", "super admin", "telnet admin", "senior admin",
"trial mod", "trial moderator", "trialmod", "trialmoderator");
- public static List getPlayerList()
+ public static String colorize(String string)
{
- List players = new ArrayList<>();
- for (Player player : Bukkit.getOnlinePlayers())
+ if (string != null)
{
- if (!plugin.bridge.isVanished(player))
+ Matcher matcher = Pattern.compile("[a-f0-9A-F]{6}").matcher(string);
+ while (matcher.find())
{
- players.add(player.getName());
+ String code = matcher.group().replace("&", "");
+ string = string.replace("&" + code, ChatColor.of(code) + "");
+ }
+
+ string = ChatColor.translateAlternateColorCodes('&', string);
+ }
+ return string;
+ }
+
+ public static boolean containsBlacklistedWord(String string)
+ {
+ for (String blacklist : BLACKLISTED_NAMES_AND_TAGS)
+ {
+ if (string.contains(blacklist))
+ {
+ return true;
}
}
- return players;
+ return false;
}
-}
\ No newline at end of file
+
+ public static String formatTime(long time)
+ {
+ Date date = new Date(time);
+ return DATE_FORMAT.format(date);
+ }
+}
diff --git a/src/main/java/me/totalfreedom/tfguilds/util/PaginationList.java b/src/main/java/me/totalfreedom/tfguilds/util/PaginationList.java
index bb64e03..900492b 100644
--- a/src/main/java/me/totalfreedom/tfguilds/util/PaginationList.java
+++ b/src/main/java/me/totalfreedom/tfguilds/util/PaginationList.java
@@ -6,6 +6,7 @@ import java.util.List;
public class PaginationList extends ArrayList
{
+
private final int epp;
/**
@@ -69,4 +70,4 @@ public class PaginationList extends ArrayList
}
return res.toString();
}*/
-}
\ No newline at end of file
+}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 2eb6264..660f649 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -3,20 +3,16 @@
#
server:
-
# Log guild chat to console?
- guild_chat_logging:
- enabled: true
+ guild_chat_logging: true
# Enable guild tags globally?
- guild_tags_enabled:
- enabled: true
+ guild_tags_enabled: true
- # Color scheme used for TFGuilds
-scheme:
-
- # Primary color
- primary: GREEN
-
- # Secondary color
- secondary: DARK_GREEN
\ No newline at end of file
+# MySQL configuration
+mysql:
+ host: localhost
+ port: 3306
+ username: root
+ password: password
+ database: TFGuilds
\ No newline at end of file
diff --git a/src/main/resources/database.db b/src/main/resources/database.db
deleted file mode 100644
index e69de29..0000000
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index ddd9483..6174e6a 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -2,22 +2,20 @@ name: TFGuilds
version: ${project.version}
main: me.totalfreedom.tfguilds.TFGuilds
api-version: 1.16
-authors: [ speed, super ]
+authors: [ Fleek, super, speed ]
description: A guilds plugin for the TotalFreedom server.
+softdepend:
+ - TotalFreedomMod
commands:
guild:
- description: The main command of TFGuilds.
- usage: /
+ description: A command to manage guilds
+ usage: / help
aliases: [ g ]
- guildchat:
- description: Talk in chat with your guild.
- usage: / [message]
- aliases: [ gchat ]
tfguilds:
- description: Information about the plugin.
- usage: /
+ description: An information of TFGuilds plugin
+ usage: / [reload]
aliases: [ tfg ]
guildchatspy:
- description: An admin only command which allows for spying on guild chat.
+ description: Spy on guild chat
usage: /
- aliases: [ gchatspy, gcs ]
\ No newline at end of file
+ aliases: [ gchatspy, gcs ]