diff --git a/.idea/TFGuilds.iml b/.idea/TFGuilds.iml
index 24b5d99..a5f2b44 100644
--- a/.idea/TFGuilds.iml
+++ b/.idea/TFGuilds.iml
@@ -19,6 +19,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index d04fbec..b4f03dc 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -2,6 +2,7 @@
+
diff --git a/pom.xml b/pom.xml
index 41961bb..9538f1a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.totalfreedom
TFGuilds
- 0.2.18
+ 0.3.0
jar
TFGuilds
diff --git a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java
index dbe9225..029eb3d 100644
--- a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java
+++ b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java
@@ -8,6 +8,11 @@ import me.totalfreedom.tfguilds.command.TFGuildsCommand;
import me.totalfreedom.tfguilds.config.Config;
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.SQLWorldData;
import me.totalfreedom.tfguilds.util.GLog;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
@@ -22,18 +27,24 @@ public final class TFGuilds extends JavaPlugin
}
public Config config;
- public Config guilds;
- public Config players;
public TFMBridge bridge;
+ public SQLDatabase sql;
+ public SQLGuildData guildData;
+ public SQLRankData rankData;
+ public SQLWorldData worldData;
+ public SQLUserData userData;
@Override
public void onEnable()
{
plugin = this;
config = new Config("config.yml");
- guilds = new Config("guilds.yml");
- players = new Config("players.yml");
bridge = new TFMBridge();
+ sql = new SQLDatabase();
+ guildData = new SQLGuildData();
+ rankData = new SQLRankData();
+ worldData = new SQLWorldData();
+ userData = new SQLUserData();
loadCommands();
loadListeners();
GLog.info("Enabled " + this.getDescription().getFullName());
@@ -44,8 +55,6 @@ public final class TFGuilds extends JavaPlugin
{
plugin = null;
config.save();
- guilds.save();
- players.save();
GLog.info("Disabled " + this.getDescription().getFullName());
}
diff --git a/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java b/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java
index c1fa710..d63ef18 100644
--- a/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java
+++ b/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java
@@ -62,6 +62,11 @@ public class TFMBridge
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
index 40282de..eeb681b 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java
@@ -44,7 +44,7 @@ public class AddModSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.hasMember(player.getName()))
+ if (!guild.hasMember(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
return true;
@@ -56,13 +56,13 @@ public class AddModSubcommand extends Common implements CommandExecutor
return true;
}
- if (guild.hasModerator(player.getName()))
+ if (guild.hasModerator(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This member is already a moderator for this guild!");
return true;
}
- guild.addModerator(player.getName());
+ 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();
@@ -83,7 +83,7 @@ public class AddModSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.getOwner().equals(player.getName()))
+ if (!guild.getOwner().equals(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't change who is a moderator in your guild!");
return true;
@@ -96,25 +96,25 @@ public class AddModSubcommand extends Common implements CommandExecutor
return true;
}
- if (guild.getOwner().equals(n.getName()))
+ if (guild.getOwner().equals(n.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "No need to make yourself a moderator!");
return true;
}
- if (!guild.hasMember(n.getName()))
+ if (!guild.hasMember(n.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
return true;
}
- if (guild.hasModerator(n.getName()))
+ if (guild.hasModerator(n.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This member is already a moderator for your guild!");
return true;
}
- guild.addModerator(n.getName());
+ 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();
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java
index f30e273..c39988e 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java
@@ -38,7 +38,7 @@ public class CreateRankSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.getOwner().equals(player.getName()))
+ if (!guild.getOwner().equals(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't create ranks for your guild!");
return true;
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java
index 7e41555..c1a6a01 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java
@@ -1,10 +1,11 @@
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.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
@@ -12,9 +13,6 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
public class CreateSubcommand extends Common implements CommandExecutor
{
@Override
@@ -32,7 +30,7 @@ public class CreateSubcommand extends Common implements CommandExecutor
return true;
}
- Player player = (Player)sender;
+ Player player = (Player) sender;
String name = StringUtils.join(args, " ", 1, args.length);
String identifier = GUtil.flatten(name);
@@ -76,7 +74,6 @@ public class CreateSubcommand extends Common implements CommandExecutor
}
Guild.createGuild(identifier, name, player);
- plugin.players.set(player.getName() + ".tag", true);
sender.sendMessage(tl(PREFIX + "Created a guild named \"" + GUtil.colorize(name) + "%p%\"!"));
broadcast(GUtil.colorize(tl("%p%" + sender.getName() + " has created guild %p%&l" + name)));
return true;
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java
index 113525d..a29a55e 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java
@@ -35,7 +35,7 @@ public class DeleteRankSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.getOwner().equals(player.getName()))
+ if (!guild.getOwner().equals(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't delete ranks from your guild!");
return true;
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java
index ddde390..b12d92e 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java
@@ -5,7 +5,6 @@ import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GLog;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
-import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
@@ -40,7 +39,7 @@ public class DisbandSubcommand extends Common implements CommandExecutor
}
String n = guild.getName();
- GLog.info("Removing guilds.yml data for " + n);
+ 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%\"."));
@@ -62,13 +61,13 @@ public class DisbandSubcommand extends Common implements CommandExecutor
}
Guild guild = Guild.getGuild(player);
- if (!guild.getOwner().equals(player.getName()))
+ if (!guild.getOwner().equals(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You are not the owner of this guild!");
return true;
}
- GLog.info("Removing guilds.yml data for " + guild.getName());
+ 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!"));
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java
index e66fb69..daa23d0 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java
@@ -10,6 +10,7 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
+import org.bukkit.entity.Player;
public class GuildCommand extends Common implements CommandExecutor, TabCompleter
{
@@ -84,7 +85,6 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete
@Override
public List onTabComplete(CommandSender sender, Command command, String label, String[] args)
{
- Guild guild = Guild.getGuild(sender);
if (args.length == 1)
{
return Arrays.asList("addmod", "chat", "createrank", "create",
@@ -139,15 +139,25 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete
case "deleterank":
case "setdefaultrank":
{
- if (guild.getOwner().equals(sender.getName()))
+ if (sender instanceof Player)
{
- return guild.getRankNames();
+ Player player = (Player) sender;
+ Guild guild = Guild.getGuild(player);
+ if (guild.getOwner().equals(player.getUniqueId()))
+ {
+ return guild.getRankNames();
+ }
}
}
case "tp":
{
- return guild.getMembers();
+ if (sender instanceof Player)
+ {
+ Player player = (Player) sender;
+ Guild guild = Guild.getGuild(player);
+ return guild.getOnlyMembers();
+ }
}
case "disband":
@@ -162,9 +172,14 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete
case "kick":
{
- if (guild.hasModerator(sender.getName()))
+ if (sender instanceof Player)
{
- return guild.getOnlyMembers();
+ Player player = (Player) sender;
+ Guild guild = Guild.getGuild(player);
+ if (guild.hasModerator(player.getUniqueId()))
+ {
+ return guild.getOnlyMembers();
+ }
}
}
@@ -172,9 +187,14 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete
case "addmod":
case "setowner":
{
- if (guild.getOwner().equals(sender.getName()))
+ if (sender instanceof Player)
{
- return guild.getMembers();
+ Player player = (Player) sender;
+ Guild guild = Guild.getGuild(player);
+ if (guild.getOwner().equals(player.getUniqueId()))
+ {
+ return guild.getOnlyMembers();
+ }
}
}
}
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java
index d0b0e8f..663d5f7 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java
@@ -38,7 +38,7 @@ public class HomeSubcommand extends Common implements CommandExecutor
{
if (args[1].equalsIgnoreCase("set"))
{
- if (!guild.hasModerator(player.getName()))
+ if (!guild.hasModerator(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't modify your guild's home!");
return true;
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java
index 5047735..56a38a2 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java
@@ -59,7 +59,7 @@ public class JoinSubcommand extends Common implements CommandExecutor
INVITES.remove(player);
}
- guild.addMember(player.getName());
+ guild.addMember(player.getUniqueId());
guild.broadcast(tl("%s%" + player.getName() + " %p%has joined the guild."));
guild.save();
return true;
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java
index 7729b99..7aefd6e 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java
@@ -44,19 +44,19 @@ public class KickSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.hasMember(player.getName()))
+ if (!guild.hasMember(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
return true;
}
- if (guild.getOwner().equals(player.getName()) || guild.hasModerator(player.getName()))
+ 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.getName());
+ 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."));
@@ -78,7 +78,7 @@ public class KickSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.hasModerator(player.getName()))
+ if (!guild.hasModerator(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't kick people from your guild!");
return true;
@@ -91,19 +91,19 @@ public class KickSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.hasMember(n.getName()))
+ if (!guild.hasMember(n.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
return true;
}
- if (guild.getOwner().equals(n.getName()) || guild.hasModerator(n.getName()) && !guild.getOwner().equals(player.getName()))
+ 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.getName());
+ 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."));
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java
index 2d1f5cb..ab1a023 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java
@@ -34,14 +34,14 @@ public class LeaveSubcommand extends Common implements CommandExecutor
return true;
}
- if (guild.getOwner().equals(player.getName()))
+ if (guild.getOwner().equals(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You cannot leave as you are the owner!");
return true;
}
- guild.removeModerator(player.getName());
- guild.removeMember(player.getName());
+ 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."));
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java
index ec88d9c..3d58ae2 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java
@@ -36,7 +36,7 @@ public class MOTDSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.hasModerator(player.getName()))
+ if (!guild.hasModerator(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't modify your guild's MOTD!");
return true;
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java
index 27c7326..bd389e1 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java
@@ -44,25 +44,28 @@ public class RemoveModSubcommand extends Common implements CommandExecutor
return true;
}
- if (guild.getModerators().contains(sender.getName()))
+ if (sender instanceof Player)
{
- sender.sendMessage(ChatColor.RED + "You may not demote yourself.");
- return true;
+ if (guild.getModerators().contains(((Player) sender).getUniqueId()))
+ {
+ sender.sendMessage(ChatColor.RED + "You may not demote yourself.");
+ return true;
+ }
}
- if (!guild.hasMember(player.getName()))
+ if (!guild.hasMember(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
return true;
}
- if (!guild.hasModerator(player.getName()))
+ if (!guild.hasModerator(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This member is not a moderator for this guild!");
return true;
}
- guild.removeModerator(player.getName());
+ 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();
@@ -83,7 +86,7 @@ public class RemoveModSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.getOwner().equals(player.getName()))
+ if (!guild.getOwner().equals(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't change who is a moderator in your guild!");
return true;
@@ -102,19 +105,19 @@ public class RemoveModSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.hasMember(n.getName()))
+ if (!guild.hasMember(n.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
return true;
}
- if (!guild.hasModerator(n.getName()))
+ if (!guild.hasModerator(n.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This member is not a moderator for your guild!");
return true;
}
- guild.removeModerator(n.getName());
+ 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();
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java
index 29137b8..82cd7f1 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java
@@ -1,5 +1,7 @@
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;
@@ -11,9 +13,6 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
public class RenameSubcommand extends Common implements CommandExecutor
{
@Override
@@ -41,7 +40,7 @@ public class RenameSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.getOwner().equals(player.getName()))
+ if (!guild.getOwner().equals(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't change the name of your guild!");
return true;
@@ -80,11 +79,7 @@ public class RenameSubcommand extends Common implements CommandExecutor
}
}
- guild.disband();
- guild.setIdentifier(GUtil.flatten(newName));
- guild.setName(newName);
- guild.updateRankIdentifiers();
- guild.setTag(GUtil.colorize("&8[&7" + newName + "&8]"));
+ 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();
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java
index 070918a..0d5d570 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java
@@ -35,7 +35,7 @@ public class SetDefaultRankSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.getOwner().equals(player.getName()))
+ if (!guild.getOwner().equals(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You do not have permissions to manage ranks in 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
index 89051c4..ae95a01 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/SetMemberSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/SetMemberSubcommand.java
@@ -46,7 +46,7 @@ public class SetMemberSubcommand extends Common implements CommandExecutor
return true;
}
- guild.addMember(player.getName());
+ guild.addMember(player.getUniqueId());
guild.broadcast(tl("%s%" + player.getName() + " %p%has joined the guild."));
guild.save();
return true;
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java
index 0648176..7b9b3bb 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java
@@ -44,20 +44,20 @@ public class SetOwnerSubcommand extends Common implements CommandExecutor
return true;
}
- if (guild.getOwner().contains(player.getName()))
+ 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.getName()))
+ if (!guild.hasMember(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
return true;
}
- guild.removeModerator(player.getName());
- guild.setOwner(player.getName());
+ 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();
@@ -78,7 +78,7 @@ public class SetOwnerSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.getOwner().equals(player.getName()))
+ if (!guild.getOwner().equals(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't change who is the owner of your guild!");
return true;
@@ -97,14 +97,14 @@ public class SetOwnerSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.hasMember(n.getName()))
+ if (!guild.hasMember(n.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
return true;
}
- guild.removeModerator(n.getName());
- guild.setOwner(n.getName());
+ 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();
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java
index dee3546..2a55be5 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java
@@ -37,7 +37,7 @@ public class SetRankSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.hasModerator(player.getName()))
+ if (!guild.hasModerator(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't change the ranks of your guild members!");
return true;
@@ -50,7 +50,7 @@ public class SetRankSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.hasMember(r.getName()))
+ if (!guild.hasMember(r.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
return true;
@@ -61,7 +61,7 @@ public class SetRankSubcommand extends Common implements CommandExecutor
{
for (GuildRank gr : guild.getRanks())
{
- gr.getMembers().remove(r.getName());
+ gr.getMembers().remove(r.getUniqueId());
}
sender.sendMessage(tl(PREFIX + "Removed the rank of %s%" + r.getName() + "%p% in your guild."));
@@ -79,10 +79,11 @@ public class SetRankSubcommand extends Common implements CommandExecutor
for (GuildRank gr : guild.getRanks())
{
- gr.getMembers().remove(r.getName());
+ gr.getMembers().remove(r.getUniqueId());
}
- rank.getMembers().add(r.getName());
+ 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();
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java
index 42da3cd..b95857e 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java
@@ -65,7 +65,7 @@ public class SetStateSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.hasModerator(player.getName()))
+ if (!guild.hasModerator(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't change the state of the guild!");
return true;
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java
index 131f3c2..217ec7a 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java
@@ -32,8 +32,6 @@ public class TFGuildsCommand extends Common implements CommandExecutor
try
{
plugin.config.load();
- plugin.guilds.load();
- plugin.players.load();
GLog.info("All configs reloaded successfully");
sender.sendMessage(tl(PREFIX + "All configuration files have been reloaded successfully."));
return true;
@@ -51,7 +49,7 @@ public class TFGuildsCommand extends Common implements CommandExecutor
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/TFPatches/TFGuilds"));
+ sender.sendMessage(tl("%s%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
index b0d7649..d2f33ed 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java
@@ -42,7 +42,7 @@ public class TPSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.getMembers().contains(to.getName()))
+ if (!guild.getMembers().contains(to.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "That player is not in your guild.");
return true;
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java
index 4d97ec2..0657f60 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java
@@ -36,7 +36,7 @@ public class TagSubcommand extends Common implements CommandExecutor
return true;
}
- if (!guild.getOwner().equals(player.getName()))
+ if (!guild.getOwner().equals(player.getUniqueId()))
{
sender.sendMessage(ChatColor.RED + "You can't modify your guild's tag!");
return true;
diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java
index 222352a..d544057 100644
--- a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java
+++ b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java
@@ -2,7 +2,7 @@ package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
-import me.totalfreedom.tfguilds.util.GUtil;
+import me.totalfreedom.tfguilds.user.User;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
@@ -36,19 +36,10 @@ public class ToggleTagSubcommand extends Common implements CommandExecutor
sender.sendMessage(PNF);
return true;
}
-
- boolean enabled = plugin.players.getBoolean(player.getName() + ".tag");
- if (!plugin.players.contains(player.getName()) || enabled)
- {
- plugin.players.set(player.getName() + ".tag", false);
- plugin.players.save();
- sender.sendMessage(tl(PREFIX + "Disabled personal guild tag for " + player.getName() + "."));
- return true;
- }
-
- plugin.players.set(player.getName() + ".tag", true);
- plugin.players.save();
- sender.sendMessage(tl(PREFIX + "Enabled personal guild tag for " + player.getName() + "."));
+ 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;
}
@@ -66,18 +57,10 @@ public class ToggleTagSubcommand extends Common implements CommandExecutor
return true;
}
- boolean enabled = plugin.players.getBoolean(player.getName() + ".tag");
- if (!plugin.players.contains(player.getName()) || enabled)
- {
- plugin.players.set(player.getName() + ".tag", false);
- plugin.players.save();
- sender.sendMessage(tl(PREFIX + "Disabled personal guild tag."));
- return true;
- }
-
- plugin.players.set(player.getName() + ".tag", true);
- plugin.players.save();
- sender.sendMessage(tl(PREFIX + "Enabled personal guild tag."));
+ 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/config/Config.java b/src/main/java/me/totalfreedom/tfguilds/config/Config.java
index c577ca6..8e5e4fc 100644
--- a/src/main/java/me/totalfreedom/tfguilds/config/Config.java
+++ b/src/main/java/me/totalfreedom/tfguilds/config/Config.java
@@ -1,10 +1,9 @@
package me.totalfreedom.tfguilds.config;
+import java.io.File;
import me.totalfreedom.tfguilds.TFGuilds;
import org.bukkit.configuration.file.YamlConfiguration;
-import java.io.File;
-
public class Config extends YamlConfiguration
{
private final TFGuilds plugin;
diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java
index ee89a20..c148900 100644
--- a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java
+++ b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java
@@ -1,12 +1,12 @@
package me.totalfreedom.tfguilds.guild;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
+import java.util.UUID;
import lombok.Getter;
import lombok.Setter;
-import me.totalfreedom.tfguilds.TFGuilds;
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;
@@ -14,8 +14,7 @@ import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
-import org.bukkit.command.CommandSender;
-import org.bukkit.configuration.ConfigurationSection;
+import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
public class Guild
@@ -32,13 +31,13 @@ public class Guild
@Getter
@Setter
- private String owner;
+ private UUID owner;
@Getter
- private final List moderators;
+ private final List moderators;
@Getter
- private final List members;
+ private final List members;
@Getter
@Setter
@@ -68,9 +67,9 @@ public class Guild
public Guild(String identifier,
String name,
- String owner,
- List members,
- List moderators,
+ UUID owner,
+ List members,
+ List moderators,
String tag,
GuildState state,
List ranks,
@@ -95,77 +94,63 @@ public class Guild
public void save()
{
- plugin.guilds.set(identifier + ".name", name);
- plugin.guilds.set(identifier + ".owner", owner);
- plugin.guilds.set(identifier + ".members", members);
- plugin.guilds.set(identifier + ".moderators", moderators);
- plugin.guilds.set(identifier + ".tag", tag);
- plugin.guilds.set(identifier + ".state", state.name());
- for (GuildRank rank : ranks)
- {
- rank.set();
- }
- plugin.guilds.set(identifier + ".motd", motd);
- plugin.guilds.set(identifier + ".home", home);
- plugin.guilds.set(identifier + ".creation", creation);
- plugin.guilds.set(identifier + ".defaultrank", defaultRank);
- plugin.guilds.save();
+ plugin.guildData.save(this);
}
- public void addMember(String name)
+ public void addMember(UUID uuid)
{
if (hasDefaultRank())
{
- getRank(defaultRank).getMembers().add(name);
+ getRank(defaultRank).getMembers().add(uuid);
}
- members.add(name);
+ members.add(uuid);
}
- public void removeMember(String name)
+ public void removeMember(UUID uuid)
{
- Player player = Bukkit.getPlayer(name);
+ Player player = Bukkit.getPlayer(uuid);
if (player != null)
{
Common.IN_GUILD_CHAT.remove(player);
}
- members.remove(name);
+ members.remove(uuid);
for (GuildRank gr : getRanks())
{
- getRank(gr.getName()).getMembers().remove(name);
+ getRank(gr.getName()).getMembers().remove(uuid);
}
- moderators.remove(name);
+ moderators.remove(uuid);
}
- public boolean hasMember(String name)
+ public boolean hasMember(UUID uuid)
{
- return members.contains(name);
+ return members.contains(uuid);
}
- public void addModerator(String name)
+ public void addModerator(UUID uuid)
{
- moderators.add(name);
+ moderators.add(uuid);
}
- public void removeModerator(String name)
+ public void removeModerator(UUID uuid)
{
- moderators.remove(name);
+ moderators.remove(uuid);
}
- public boolean hasModerator(String name)
+ public boolean hasModerator(UUID uuid)
{
- if (owner.equals(name))
+ if (owner.equals(uuid))
{
return true;
}
- return moderators.contains(name);
+ return moderators.contains(uuid);
}
public void addRank(String name)
{
- ranks.add(new GuildRank(identifier, GUtil.flatten(name), name, new ArrayList<>()));
+ ranks.add(GuildRank.createGuildRank(identifier, GUtil.flatten(name), name));
}
public void removeRank(String name)
@@ -236,23 +221,37 @@ public class Guild
{
for (Player player : Bukkit.getOnlinePlayers())
{
- if (members.contains(player.getName()))
+ if (members.contains(player.getUniqueId()))
{
player.sendMessage(message);
}
}
}
+ public List getModeratorNames()
+ {
+ List only = new ArrayList<>();
+ for (UUID moderator : moderators)
+ {
+ if (moderator.equals(owner))
+ continue;
+ OfflinePlayer player = Bukkit.getOfflinePlayer(moderator);
+ only.add(player.getName());
+ }
+ return only;
+ }
+
public List getOnlyMembers()
{
List only = new ArrayList<>();
- for (String member : members)
+ for (UUID member : members)
{
if (member.equals(owner) || moderators.contains(member))
{
continue;
}
- only.add(member);
+ OfflinePlayer player = Bukkit.getOfflinePlayer(member);
+ only.add(player.getName());
}
return only;
}
@@ -270,14 +269,14 @@ public class Guild
public String getRoster()
{
StringBuilder list = new StringBuilder(Common.PREFIX + "Guild Roster for " + name + "\n" +
- "%s%Owner%p% - " + owner + "\n" +
- "%s%Moderators%p% - " + StringUtils.join(moderators, ", ") + "\n");
+ "%s%Owner%p% - " + Bukkit.getOfflinePlayer(owner).getName() + "\n" +
+ "%s%Moderators%p% - " + StringUtils.join(getModeratorNames(), ", ") + "\n");
for (GuildRank rank : ranks)
{
list.append("%s%")
.append(rank.getName()).append("%p% - ")
- .append(StringUtils.join(rank.getMembers(), ", "))
+ .append(StringUtils.join(rank.getMemberNames(), ", "))
.append("\n");
}
@@ -288,11 +287,8 @@ public class Guild
public static List getGuildList()
{
List g = new ArrayList<>();
- for (String key : plugin.guilds.getKeys(false))
- {
- Guild guild = getGuild(key);
+ for (Guild guild : plugin.guildData.getAll())
g.add(guild.getName());
- }
return g;
}
@@ -300,8 +296,8 @@ public class Guild
{
return Common.tl(Common.PREFIX + "Guild Information\n" +
"%s%Name%p%: " + name + "\n" +
- "%s%Owner%p%: " + owner + "\n" +
- "%s%Moderators%p%: " + StringUtils.join(moderators, ", ") + "\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" +
@@ -339,129 +335,59 @@ public class Guild
public void disband()
{
- for (String member : members)
+ for (UUID member : members)
{
Player player = Bukkit.getPlayer(member);
if (player == null)
- {
continue;
- }
Common.IN_GUILD_CHAT.remove(player);
}
- plugin.guilds.set(identifier, null);
- plugin.guilds.save();
+ 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.delete();
- rank.setIguild(identifier);
- rank.set();
- plugin.guilds.save();
- }
+ rank.updateGuildIdentifier(identifier);
}
public static Guild createGuild(String identifier, String name, Player owner)
{
- if (plugin.guilds.contains(identifier))
- {
+ if (plugin.guildData.exists(identifier))
return getGuild(identifier);
- }
- Guild guild = new Guild(identifier,
- name,
- owner.getName(),
- Collections.singletonList(owner.getName()),
- new ArrayList<>(),
- ChatColor.DARK_GRAY + "[" + ChatColor.GRAY + name + ChatColor.DARK_GRAY + "]",
- GuildState.INVITE_ONLY,
- new ArrayList<>(),
- null,
- null,
- System.currentTimeMillis(),
- null);
- guild.save();
+ Guild guild = plugin.guildData.create(identifier, name, owner);
GLog.info(owner.getName() + " has created guild " + name);
return guild;
}
public static Guild getGuild(String identifier)
{
- if (!plugin.guilds.contains(identifier))
- {
- return null;
- }
-
- List ranks = new ArrayList<>();
- ConfigurationSection rankcs = plugin.guilds.getConfigurationSection(identifier + ".ranks");
- if (rankcs != null)
- {
- for (String key : rankcs.getKeys(false))
- {
- ranks.add(new GuildRank(identifier, key, plugin.guilds.getString(identifier + ".ranks." + key + ".name"),
- plugin.guilds.getStringList(identifier + ".ranks." + key + ".members")));
- }
- }
-
- return new Guild(identifier,
- plugin.guilds.getString(identifier + ".name"),
- plugin.guilds.getString(identifier + ".owner"),
- plugin.guilds.getStringList(identifier + ".members"),
- plugin.guilds.getStringList(identifier + ".moderators"),
- plugin.guilds.getString(identifier + ".tag"),
- GuildState.findState(plugin.guilds.getString(identifier + ".state")),
- ranks,
- plugin.guilds.getString(identifier + ".motd"),
- plugin.guilds.getLocation(identifier + ".home"),
- plugin.guilds.getLong(identifier + ".creation"),
- plugin.guilds.getString(identifier + ".defaultrank"));
+ return plugin.guildData.get(identifier);
}
public static Guild getGuild(Player player)
{
- Guild guild = null;
- for (String key : plugin.guilds.getKeys(false))
- {
- Guild kg = getGuild(key);
- if (kg.getMembers().contains(player.getName()))
- {
- guild = kg;
- }
- }
- return guild;
- }
-
- public static Guild getGuild(CommandSender sender)
- {
- Guild guild = null;
- for (String key : plugin.guilds.getKeys(false))
- {
- Guild kg = getGuild(key);
- if (kg.getMembers().contains(sender.getName()))
- {
- guild = kg;
- }
- }
- return guild;
+ return plugin.guildData.get(player);
}
public static boolean guildExists(String identifier)
{
- return plugin.guilds.contains(identifier);
+ return plugin.guildData.exists(identifier);
}
public static boolean isInGuild(Player player)
{
- for (String key : plugin.guilds.getKeys(false))
- {
- Guild guild = getGuild(key);
- if (guild.getMembers().contains(player.getName()))
- {
- return true;
- }
- }
- return false;
+ return getGuild(player) != null;
}
}
\ 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
index f2e539b..cb8abac 100644
--- a/src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java
+++ b/src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java
@@ -1,46 +1,69 @@
package me.totalfreedom.tfguilds.guild;
+import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
import lombok.Getter;
-import lombok.Setter;
import me.totalfreedom.tfguilds.TFGuilds;
+import org.bukkit.Bukkit;
+import org.bukkit.OfflinePlayer;
public class GuildRank
{
- private static TFGuilds plugin = TFGuilds.getPlugin();
+ private static final TFGuilds plugin = TFGuilds.getPlugin();
- // owning guild's identifier
- @Setter
+ @Getter
private String iguild;
// identifier
@Getter
- private String identifier;
+ private final String identifier;
// name
@Getter
- private String name;
+ private final String name;
// members of this rank
@Getter
- private List members;
+ private final List members;
- public GuildRank(String iguild, String identifier, String name, List members)
+ public GuildRank(String iguild, String identifier, String name, List members)
{
- this.identifier = identifier;
this.iguild = iguild;
+ this.identifier = identifier;
this.name = name;
this.members = members;
}
- public void set()
+ public List getMemberNames()
{
- plugin.guilds.set(iguild + ".ranks." + identifier + ".name", name);
- plugin.guilds.set(iguild + ".ranks." + identifier + ".members", members);
+ 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.guilds.set(iguild + ".ranks." + identifier, null);
+ plugin.rankData.delete(this);
}
}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java
index bcae284..62f1794 100644
--- a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java
+++ b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java
@@ -5,6 +5,7 @@ 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.util.GUtil;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -46,11 +47,11 @@ public class ChatListener implements Listener
String display;
if (rank == null)
{
- if (guild.getOwner().equals(player.getName()))
+ if (guild.getOwner().equals(player.getUniqueId()))
{
display = "Guild Owner";
}
- else if (guild.hasModerator(player.getName()))
+ else if (guild.hasModerator(player.getUniqueId()))
{
display = "Guild Moderator";
}
@@ -69,13 +70,8 @@ public class ChatListener implements Listener
return;
}
- if (plugin.players.contains(player.getName()))
- {
- if (!plugin.players.getBoolean(player.getName() + ".tag"))
- {
- return;
- }
- }
+ User user = plugin.userData.get(player.getUniqueId());
+ if (!user.isTag()) return;
if (guild.hasTag())
{
diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java
new file mode 100644
index 0000000..ecae74e
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java
@@ -0,0 +1,80 @@
+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;
+
+public class SQLDatabase
+{
+ private static final String DATABASE_FILENAME = "database.db";
+ private static final TFGuilds plugin = TFGuilds.getPlugin();
+
+ private final File file;
+
+ public SQLDatabase()
+ {
+ File file = new File(plugin.getDataFolder(), DATABASE_FILENAME);
+ if (!file.exists())
+ {
+ try
+ {
+ file.createNewFile();
+ plugin.saveResource(DATABASE_FILENAME, false);
+ }
+ catch (IOException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ this.file = file;
+ }
+
+ public Connection getConnection()
+ {
+ try
+ {
+ Connection connection = DriverManager.getConnection("jdbc:sqlite:" + file.getAbsolutePath());
+ 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();
+ return connection;
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ return null;
+ }
+}
\ 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
new file mode 100644
index 0000000..66af80a
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java
@@ -0,0 +1,213 @@
+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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ PreparedStatement statement = connection.prepareStatement(SELECT);
+ statement.setString(1, identifier);
+ ResultSet set = statement.executeQuery();
+ return set.next();
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ return false;
+ }
+
+ public Guild get(String identifier)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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 : getAll())
+ {
+ if (guild.getMembers().contains(player.getUniqueId()))
+ return guild;
+ }
+ return null;
+ }
+
+ public List getAll()
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ PreparedStatement statement = connection.prepareStatement(SELECT_ALL);
+ ResultSet set = statement.executeQuery();
+ List guilds = new ArrayList<>();
+ while (set.next())
+ guilds.add(get(set.getString("identifier")));
+ return guilds;
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ return null;
+ }
+
+ public Guild create(String identifier, String name, Player owner)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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();
+ return 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);
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ return null;
+ }
+
+ public void save(Guild guild, String identifier)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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();
+ }
+ catch (SQLException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public void save(Guild guild)
+ {
+ save(guild, guild.getIdentifier());
+ }
+
+ public void delete(Guild guild)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ PreparedStatement statement = connection.prepareStatement(DELETE);
+ statement.setString(1, guild.getIdentifier());
+ statement.execute();
+ }
+ 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
new file mode 100644
index 0000000..1071f6f
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java
@@ -0,0 +1,137 @@
+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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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
new file mode 100644
index 0000000..74f0dad
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java
@@ -0,0 +1,145 @@
+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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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);
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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()
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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/SQLWorldData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java
new file mode 100644
index 0000000..6045af9
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java
@@ -0,0 +1,115 @@
+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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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)
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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()
+ {
+ try (Connection connection = plugin.sql.getConnection())
+ {
+ 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
new file mode 100644
index 0000000..0d57e48
--- /dev/null
+++ b/src/main/java/me/totalfreedom/tfguilds/user/User.java
@@ -0,0 +1,27 @@
+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);
+ }
+}
diff --git a/src/main/resources/database.db b/src/main/resources/database.db
new file mode 100644
index 0000000..e69de29
diff --git a/src/main/resources/guilds.yml b/src/main/resources/guilds.yml
deleted file mode 100644
index c4f8235..0000000
--- a/src/main/resources/guilds.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-#
-# Guild data for TFGuilds
-#
diff --git a/src/main/resources/players.yml b/src/main/resources/players.yml
deleted file mode 100644
index 27e0340..0000000
--- a/src/main/resources/players.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-#
-# Player data for TFGuilds
-#
\ No newline at end of file