From 3a97a7428b0fa4e76241bde179479640aad5dd7a Mon Sep 17 00:00:00 2001 From: speed <43330808+speedxx@users.noreply.github.com> Date: Wed, 25 Nov 2020 11:50:53 -0500 Subject: [PATCH 01/41] =?UTF-8?q?=F0=9F=98=8A=F0=9F=98=8A=F0=9F=98=8A?= =?UTF-8?q?=F0=9F=98=8A=F0=9F=98=8A=F0=9F=98=8A=F0=9F=98=8A=F0=9F=98=8A?= =?UTF-8?q?=F0=9F=98=8A=F0=9F=98=8A=F0=9F=98=8A=F0=9F=98=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no player uuids 😊😊😊😊😁😁😃🤗 --- .idea/TFGuilds.iml | 110 ++++++++++++++++++ .idea/vcs.xml | 2 +- pom.xml | 2 +- .../tfguilds/command/GuildCommand.java | 5 +- .../tfguilds/command/HelpSubcommand.java | 1 + .../tfguilds/command/SetMemberSubcommand.java | 54 +++++++++ 6 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 .idea/TFGuilds.iml create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetMemberSubcommand.java diff --git a/.idea/TFGuilds.iml b/.idea/TFGuilds.iml new file mode 100644 index 0000000..d0c8bd9 --- /dev/null +++ b/.idea/TFGuilds.iml @@ -0,0 +1,110 @@ + + + + + + + SPIGOT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 23a21e0..eb5071b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.totalfreedom TFGuilds - 0.2.16 + 0.2.17 jar TFGuilds diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java index 294b329..e66fb69 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java @@ -72,6 +72,8 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete return new ToggleTagsSubcommand().onCommand(sender, command, label, args); case "toggletag": return new ToggleTagSubcommand().onCommand(sender, command, label, args); + case "setmember": + return new SetMemberSubcommand().onCommand(sender, command, label, args); } sender.sendMessage(tl(PREFIX + "Unknown command - Run /g help if you need help")); return true; @@ -89,7 +91,7 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete "deleterank", "disband", "help", "home", "info", "invite", "join", "kick", "leave", "list", "motd", "removemod", "rename", "roster", "setowner", "setrank", "setstate", "tag", "tp", "setdefaultrank", - "toggletags", "toggletag"); + "toggletags", "toggletag", "setmember"); } else if (args.length == 2) { @@ -103,6 +105,7 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete case "info": case "join": case "roster": + case "setmember": { return Guild.getGuildList(); } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java index a2918b3..3071fca 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java @@ -37,6 +37,7 @@ public class HelpSubcommand extends Common implements CommandExecutor sender.sendMessage(tl("%s% - %p%setdefaultrank ")); sender.sendMessage(tl("%s% - %p%toggletags")); sender.sendMessage(tl("%s% - %p%toggletag [player]")); + sender.sendMessage(tl("%s% - %p%setmember ")); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetMemberSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetMemberSubcommand.java new file mode 100644 index 0000000..89051c4 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetMemberSubcommand.java @@ -0,0 +1,54 @@ +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.getName()); + guild.broadcast(tl("%s%" + player.getName() + " %p%has joined the guild.")); + guild.save(); + return true; + } +} \ No newline at end of file From e2017b3fd2f129cab650bdaf71058eb66ce475fe Mon Sep 17 00:00:00 2001 From: speed <43330808+speedxx@users.noreply.github.com> Date: Sun, 29 Nov 2020 20:46:21 -0500 Subject: [PATCH 02/41] page /g list --- .idea/TFGuilds.iml | 19 ++---- pom.xml | 6 +- .../tfguilds/command/ListSubcommand.java | 42 +++++++++++- .../tfguilds/util/PaginationList.java | 66 +++++++++++++++++++ 4 files changed, 112 insertions(+), 21 deletions(-) create mode 100644 src/main/java/me/totalfreedom/tfguilds/util/PaginationList.java diff --git a/.idea/TFGuilds.iml b/.idea/TFGuilds.iml index d0c8bd9..4742ffe 100644 --- a/.idea/TFGuilds.iml +++ b/.idea/TFGuilds.iml @@ -25,20 +25,7 @@ - - - - - - - - - - - - - - + @@ -68,6 +55,7 @@ + @@ -87,6 +75,7 @@ + @@ -105,6 +94,6 @@ - + \ No newline at end of file diff --git a/pom.xml b/pom.xml index eb5071b..645f53b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.totalfreedom TFGuilds - 0.2.17 + 0.2.18 jar TFGuilds @@ -83,13 +83,13 @@ me.totalfreedom TotalFreedomMod - 2020.9 + 2020.11.5 provided org.projectlombok lombok - 1.18.14 + 1.18.16 provided diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java index 463b765..c400888 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java @@ -3,7 +3,7 @@ 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 me.totalfreedom.tfguilds.util.PaginationList; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -14,7 +14,14 @@ 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()) { @@ -22,8 +29,37 @@ public class ListSubcommand extends Common implements CommandExecutor return true; } - sender.sendMessage(tl(PREFIX + "%s%Guild List (%p%" + guilds.size() + " total%s%)")); - sender.sendMessage(tl("%s%- %p%" + StringUtils.join(guilds, "\n%s%- %p%"))); + 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 > paged.getPageCount() || pageIndex + 1 < 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/util/PaginationList.java b/src/main/java/me/totalfreedom/tfguilds/util/PaginationList.java new file mode 100644 index 0000000..1060caa --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/util/PaginationList.java @@ -0,0 +1,66 @@ +package me.totalfreedom.tfguilds.util; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class PaginationList extends ArrayList +{ + private final int epp; + + /** + * Defines a new Pagination List. + * @param epp Elements per page - how many elements will be included on a page of the list. + */ + public PaginationList(int epp) + { + super(); + this.epp = epp; + } + + /** + * Defines a new Pagination List. + * @param epp Elements per page - how many elements will be included on a page of the list. + * @param elements Elements to add to the list immediately. + */ + @SafeVarargs + public PaginationList(int epp, T... elements) + { + super(Arrays.asList(elements)); + this.epp = epp; + } + + /** + * @return The number of pages this list holds. + */ + public int getPageCount() + { + return (int) Math.ceil((double) size() / (double) epp); + } + + /** + * Get a page from the list. + * @param page Page you want to access. + * @return A sublist of only the elements from that page. + */ + public List getPage(int page) + { + if (page < 1 || page > getPageCount()) return null; + int startIndex = (page - 1) * epp; + int endIndex = Math.min(startIndex + (epp - 1), this.size() - 1); + return subList(startIndex, endIndex + 1); + } + + /*@Override + public String toString() + { + StringBuilder res = new StringBuilder(); + for (int i = 1; i <= getPageCount(); i++) + { + res.append("Page ").append(i).append(": ").append("\n"); + for (T element : getPage(i)) + res.append(" - ").append(element).append("\n"); + } + return res.toString(); + }*/ +} \ No newline at end of file From 1cf0d856a7083929f6309c976e3a93d92e6c0313 Mon Sep 17 00:00:00 2001 From: speed <43330808+speedxx@users.noreply.github.com> Date: Mon, 30 Nov 2020 17:26:23 -0500 Subject: [PATCH 03/41] fix check --- .../java/me/totalfreedom/tfguilds/command/ListSubcommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java index c400888..50b68e3 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java @@ -45,7 +45,7 @@ public class ListSubcommand extends Common implements CommandExecutor } } - if (pageIndex > paged.getPageCount() || pageIndex + 1 < paged.getPageCount()) + if (pageIndex < 1 || pageIndex > paged.getPageCount()) { sender.sendMessage(ChatColor.RED + "Not a valid page number"); return true; From 3a6a8b6e11a05fdb21db2f2ebca0d49762e03e2a Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 1 Dec 2020 19:56:14 +0000 Subject: [PATCH 04/41] Create codeql-analysis.yml --- .github/workflows/codeql-analysis.yml | 67 +++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .github/workflows/codeql-analysis.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000..a80c844 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,67 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ master ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ master ] + schedule: + - cron: '35 8 * * 0' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: [ 'java' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹī¸ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 From dd1a740252417988a491002e8c7d037d17a28d8f Mon Sep 17 00:00:00 2001 From: super Date: Thu, 3 Dec 2020 01:36:57 -0500 Subject: [PATCH 05/41] move player and guild data to a SQL database --- .../me/totalfreedom/tfguilds/TFGuilds.java | 23 +- .../tfguilds/bridge/TFMBridge.java | 12 +- .../tfguilds/command/AddModSubcommand.java | 16 +- .../command/CreateRankSubcommand.java | 2 +- .../tfguilds/command/CreateSubcommand.java | 3 +- .../command/DeleteRankSubcommand.java | 2 +- .../tfguilds/command/DisbandSubcommand.java | 6 +- .../tfguilds/command/GuildCommand.java | 36 ++- .../tfguilds/command/HomeSubcommand.java | 2 +- .../tfguilds/command/JoinSubcommand.java | 2 +- .../tfguilds/command/KickSubcommand.java | 14 +- .../tfguilds/command/LeaveSubcommand.java | 6 +- .../tfguilds/command/MOTDSubcommand.java | 2 +- .../tfguilds/command/RemoveModSubcommand.java | 23 +- .../tfguilds/command/RenameSubcommand.java | 8 +- .../command/SetDefaultRankSubcommand.java | 2 +- .../tfguilds/command/SetMemberSubcommand.java | 2 +- .../tfguilds/command/SetOwnerSubcommand.java | 16 +- .../tfguilds/command/SetRankSubcommand.java | 11 +- .../tfguilds/command/SetStateSubcommand.java | 2 +- .../tfguilds/command/TFGuildsCommand.java | 2 - .../tfguilds/command/TPSubcommand.java | 2 +- .../tfguilds/command/TagSubcommand.java | 2 +- .../tfguilds/command/ToggleTagSubcommand.java | 34 +-- .../me/totalfreedom/tfguilds/guild/Guild.java | 209 ++++++---------- .../tfguilds/guild/GuildRank.java | 42 +++- .../tfguilds/listener/ChatListener.java | 14 +- .../tfguilds/sql/SQLDatabase.java | 81 +++++++ .../tfguilds/sql/SQLGuildData.java | 223 ++++++++++++++++++ .../tfguilds/sql/SQLRankData.java | 142 +++++++++++ .../tfguilds/sql/SQLUserData.java | 156 ++++++++++++ .../tfguilds/sql/SQLWorldData.java | 116 +++++++++ .../me/totalfreedom/tfguilds/user/User.java | 27 +++ src/main/resources/database.db | 0 src/main/resources/guilds.yml | 3 - src/main/resources/players.yml | 3 - 36 files changed, 976 insertions(+), 270 deletions(-) create mode 100644 src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/user/User.java create mode 100644 src/main/resources/database.db delete mode 100644 src/main/resources/guilds.yml delete mode 100644 src/main/resources/players.yml diff --git a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java index dbe9225..5d014fd 100644 --- a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java +++ b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java @@ -8,7 +8,14 @@ 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.Bukkit; +import org.bukkit.World; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -22,18 +29,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 +57,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 b74fa67..dff8a05 100644 --- a/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java +++ b/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java @@ -46,7 +46,7 @@ public class TFMBridge return player.isOp(); } - return getTFM().sl.isStaff(player); + return getTFM().al.isAdmin(player); } public boolean isAdmin(CommandSender sender) @@ -57,11 +57,17 @@ public class TFMBridge return sender.isOp(); } - return getTFM().sl.isStaff(sender); + return getTFM().al.isAdmin(sender); } public boolean isVanished(Player player) { - return getTFM().sl.isVanished(player.getName()); + 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..df4b932 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java @@ -32,7 +32,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 +76,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..e52f52a 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java @@ -40,7 +40,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 +62,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..e062734 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java @@ -41,7 +41,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 +80,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..295db80 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; 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..b582601 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java @@ -2,6 +2,7 @@ package me.totalfreedom.tfguilds.command; import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.user.User; import me.totalfreedom.tfguilds.util.GUtil; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -36,19 +37,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 +58,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/guild/Guild.java b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java index ee89a20..d2e2b11 100644 --- a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java +++ b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java @@ -1,8 +1,8 @@ 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; @@ -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,17 +335,23 @@ 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) + { + this.identifier = GUtil.flatten(name); + updateRankIdentifiers(); + this.name = name; + this.tag = GUtil.colorize("&8[&7" + name + "&8]"); + this.save(); } public void updateRankIdentifiers() @@ -357,111 +359,38 @@ public class Guild for (GuildRank rank : ranks) { rank.delete(); - rank.setIguild(identifier); - rank.set(); - plugin.guilds.save(); + rank.updateGuildIdentifier(identifier); + rank.save(); } } 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..f14af20 100644 --- a/src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java +++ b/src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java @@ -1,16 +1,19 @@ 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(); - // owning guild's identifier - @Setter + @Getter private String iguild; // identifier @@ -23,24 +26,45 @@ public class GuildRank // members of this rank @Getter - private List members; + private 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..db9d772 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java @@ -0,0 +1,81 @@ +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 File file; + private Connection connection; + + 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..07cddef --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java @@ -0,0 +1,223 @@ +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.Arrays; +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 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 : Arrays.asList(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; + } + + /* + 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); + */ + + 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) + { + try (Connection connection = plugin.sql.getConnection()) + { + PreparedStatement statement = connection.prepareStatement(UPDATE); + statement.setString(1, guild.getName()); + statement.setString(2, "" + plugin.userData.get(guild.getOwner()).getId()); + List members = new ArrayList<>(); + for (UUID member : guild.getMembers()) + members.add("" + plugin.userData.get(member).getId()); + statement.setString(3, 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(4, moderators.size() == 0 ? null : StringUtils.join(moderators, ",")); + statement.setString(5, guild.getTag()); + statement.setInt(6, guild.getState().ordinal()); + List stringRanks = new ArrayList<>(); + for (GuildRank rank : guild.getRanks()) + stringRanks.add(rank.getIdentifier()); + statement.setString(7, stringRanks.size() == 0 ? null : StringUtils.join(stringRanks, ",")); + statement.setString(8, guild.getMotd()); + Location home = guild.getHome(); + statement.setDouble(9, home == null ? 0.0 : home.getX()); + statement.setDouble(10, home == null ? 100.0 : home.getY()); + statement.setDouble(11, home == null ? 0.0 : home.getZ()); + statement.setInt(12, home == null ? plugin.worldData.getWorldID(Bukkit.getWorlds().get(0)) : plugin.worldData.getWorldID(home.getWorld())); + statement.setString(13, guild.getDefaultRank()); + statement.setString(14, guild.getIdentifier()); + statement.execute(); + } + catch (SQLException ex) + { + ex.printStackTrace(); + } + } + + 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..ec11742 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java @@ -0,0 +1,142 @@ +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.Arrays; +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.entity.Player; + +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 `" + 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(); + set.next(); + 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..46dcfd3 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java @@ -0,0 +1,156 @@ +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.Arrays; +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 me.totalfreedom.tfguilds.user.User; +import org.apache.commons.lang.StringUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Player; + +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..d8b91f1 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java @@ -0,0 +1,116 @@ +package me.totalfreedom.tfguilds.sql; + +import me.totalfreedom.tfguilds.TFGuilds; +import org.bukkit.Bukkit; +import org.bukkit.World; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +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 From 16cc2c29212650c85f48ec6e924809cca78c3b6b Mon Sep 17 00:00:00 2001 From: super Date: Thu, 3 Dec 2020 02:02:05 -0500 Subject: [PATCH 06/41] uh oh stupid idiot me --- .../me/totalfreedom/tfguilds/guild/Guild.java | 7 +--- .../tfguilds/sql/SQLGuildData.java | 38 +++++++++++-------- .../tfguilds/sql/SQLRankData.java | 2 +- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java index d2e2b11..78405bf 100644 --- a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java +++ b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java @@ -347,21 +347,18 @@ public class Guild 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]"); - this.save(); + plugin.guildData.save(this, oldIdentifier); } public void updateRankIdentifiers() { for (GuildRank rank : ranks) - { - rank.delete(); rank.updateGuildIdentifier(identifier); - rank.save(); - } } public static Guild createGuild(String identifier, String name, Player owner) diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java index 07cddef..785ad60 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java @@ -27,7 +27,7 @@ public class SQLGuildData 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 name=?, owner=?, members=?, moderators=?, tag=?, state=?, ranks=?, motd=?, x=?, y=?, z=?, world=?, default_rank=? WHERE identifier=?"; + 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`) " + @@ -170,35 +170,36 @@ public class SQLGuildData return null; } - public void save(Guild guild) + public void save(Guild guild, String identifier) { try (Connection connection = plugin.sql.getConnection()) { PreparedStatement statement = connection.prepareStatement(UPDATE); - statement.setString(1, guild.getName()); - statement.setString(2, "" + plugin.userData.get(guild.getOwner()).getId()); + 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(3, members.size() == 0 ? null : StringUtils.join(members, ",")); + 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(4, moderators.size() == 0 ? null : StringUtils.join(moderators, ",")); - statement.setString(5, guild.getTag()); - statement.setInt(6, guild.getState().ordinal()); + 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(7, stringRanks.size() == 0 ? null : StringUtils.join(stringRanks, ",")); - statement.setString(8, guild.getMotd()); + statement.setString(8, stringRanks.size() == 0 ? null : StringUtils.join(stringRanks, ",")); + statement.setString(9, guild.getMotd()); Location home = guild.getHome(); - statement.setDouble(9, home == null ? 0.0 : home.getX()); - statement.setDouble(10, home == null ? 100.0 : home.getY()); - statement.setDouble(11, home == null ? 0.0 : home.getZ()); - statement.setInt(12, home == null ? plugin.worldData.getWorldID(Bukkit.getWorlds().get(0)) : plugin.worldData.getWorldID(home.getWorld())); - statement.setString(13, guild.getDefaultRank()); - statement.setString(14, guild.getIdentifier()); + 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) @@ -207,6 +208,11 @@ public class SQLGuildData } } + public void save(Guild guild) + { + save(guild, guild.getIdentifier()); + } + public void delete(Guild guild) { try (Connection connection = plugin.sql.getConnection()) diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java index ec11742..ce97d56 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java @@ -24,7 +24,7 @@ public class SQLRankData 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 `" + TABLE_NAME + "` 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 (?, ?, ?, ?);"; From 398cef14ec67281fae5eee498f089b43186e91fa Mon Sep 17 00:00:00 2001 From: super Date: Thu, 3 Dec 2020 08:38:37 -0500 Subject: [PATCH 07/41] optimize imports --- .idea/TFGuilds.iml | 13 +++++++++++-- .idea/compiler.xml | 1 + pom.xml | 8 ++++++++ .../me/totalfreedom/tfguilds/TFGuilds.java | 2 -- .../tfguilds/command/CreateSubcommand.java | 6 ++---- .../tfguilds/command/DisbandSubcommand.java | 1 - .../tfguilds/command/RenameSubcommand.java | 5 ++--- .../tfguilds/command/ToggleTagSubcommand.java | 1 - .../totalfreedom/tfguilds/config/Config.java | 3 +-- .../me/totalfreedom/tfguilds/guild/Guild.java | 2 +- .../totalfreedom/tfguilds/guild/GuildRank.java | 9 ++++----- .../totalfreedom/tfguilds/sql/SQLDatabase.java | 3 +-- .../tfguilds/sql/SQLGuildData.java | 18 +----------------- .../totalfreedom/tfguilds/sql/SQLRankData.java | 5 ----- .../totalfreedom/tfguilds/sql/SQLUserData.java | 11 ----------- .../tfguilds/sql/SQLWorldData.java | 7 +++---- 16 files changed, 35 insertions(+), 60 deletions(-) diff --git a/.idea/TFGuilds.iml b/.idea/TFGuilds.iml index 4742ffe..f11b5de 100644 --- a/.idea/TFGuilds.iml +++ b/.idea/TFGuilds.iml @@ -19,6 +19,8 @@ + + @@ -26,6 +28,15 @@ + + + + + + + + + @@ -55,7 +66,6 @@ - @@ -75,7 +85,6 @@ - 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 645f53b..4a6d09d 100644 --- a/pom.xml +++ b/pom.xml @@ -45,6 +45,14 @@ + + org.apache.maven.plugins + maven-jar-plugin + 2.3.1 + + D:\STUFF\116test\plugins + + diff --git a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java index 5d014fd..029eb3d 100644 --- a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java +++ b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java @@ -14,8 +14,6 @@ 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.Bukkit; -import org.bukkit.World; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; diff --git a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java index df4b932..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 diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java index e52f52a..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; diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java index e062734..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 diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java index b582601..d544057 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java @@ -3,7 +3,6 @@ package me.totalfreedom.tfguilds.command; import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.guild.Guild; import me.totalfreedom.tfguilds.user.User; -import me.totalfreedom.tfguilds.util.GUtil; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; 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 78405bf..c148900 100644 --- a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java +++ b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java @@ -5,8 +5,8 @@ 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; diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java b/src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java index f14af20..cb8abac 100644 --- a/src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java +++ b/src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java @@ -4,29 +4,28 @@ 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(); @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) { diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java index db9d772..ecae74e 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java @@ -12,8 +12,7 @@ public class SQLDatabase private static final String DATABASE_FILENAME = "database.db"; private static final TFGuilds plugin = TFGuilds.getPlugin(); - private File file; - private Connection connection; + private final File file; public SQLDatabase() { diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java index 785ad60..66af80a 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java @@ -5,7 +5,6 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.UUID; @@ -74,7 +73,7 @@ public class SQLGuildData List ranks = new ArrayList<>(); if (set.getString("ranks") != null) { - for (String rankString : Arrays.asList(set.getString("ranks").split(","))) + for (String rankString : set.getString("ranks").split(",")) ranks.add(plugin.rankData.get(identifier, rankString)); } String motd = set.getString("motd"); @@ -121,21 +120,6 @@ public class SQLGuildData return null; } - /* - 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); - */ - public Guild create(String identifier, String name, Player owner) { try (Connection connection = plugin.sql.getConnection()) diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java index ce97d56..d5aeae3 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java @@ -5,16 +5,11 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; -import java.util.Arrays; 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.entity.Player; public class SQLRankData { diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java index 46dcfd3..74f0dad 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java @@ -4,20 +4,9 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Arrays; -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 me.totalfreedom.tfguilds.user.User; -import org.apache.commons.lang.StringUtils; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.entity.Player; public class SQLUserData { diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java index d8b91f1..6045af9 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java @@ -1,13 +1,12 @@ package me.totalfreedom.tfguilds.sql; -import me.totalfreedom.tfguilds.TFGuilds; -import org.bukkit.Bukkit; -import org.bukkit.World; - 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 { From b8c36b755d61596f2e7c88b61464ff70132954dc Mon Sep 17 00:00:00 2001 From: super Date: Thu, 3 Dec 2020 19:50:24 -0500 Subject: [PATCH 08/41] F --- pom.xml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/pom.xml b/pom.xml index 4a6d09d..645f53b 100644 --- a/pom.xml +++ b/pom.xml @@ -45,14 +45,6 @@ - - org.apache.maven.plugins - maven-jar-plugin - 2.3.1 - - D:\STUFF\116test\plugins - - From 3bf03d86079dc4e0cde3b777c86c3a3e4e1aac5f Mon Sep 17 00:00:00 2001 From: speed <43330808+speedxx@users.noreply.github.com> Date: Thu, 3 Dec 2020 21:42:57 -0500 Subject: [PATCH 09/41] refactor --- .idea/TFGuilds.iml | 2 +- pom.xml | 8 ++------ .../java/me/totalfreedom/tfguilds/bridge/TFMBridge.java | 6 +++--- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/.idea/TFGuilds.iml b/.idea/TFGuilds.iml index 4742ffe..24b5d99 100644 --- a/.idea/TFGuilds.iml +++ b/.idea/TFGuilds.iml @@ -25,7 +25,7 @@ - + diff --git a/pom.xml b/pom.xml index 645f53b..41961bb 100644 --- a/pom.xml +++ b/pom.xml @@ -67,10 +67,6 @@ sonatype https://oss.sonatype.org/content/groups/public/ - - telesphoreo-repo - https://telesphoreo.me/repo/maven - @@ -81,9 +77,9 @@ provided - me.totalfreedom + com.github.AtlasMediaGroup TotalFreedomMod - 2020.11.5 + development-0be2aa718f-1 provided diff --git a/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java b/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java index b74fa67..c1fa710 100644 --- a/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java +++ b/src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java @@ -46,7 +46,7 @@ public class TFMBridge return player.isOp(); } - return getTFM().sl.isStaff(player); + return getTFM().al.isAdmin(player); } public boolean isAdmin(CommandSender sender) @@ -57,11 +57,11 @@ public class TFMBridge return sender.isOp(); } - return getTFM().sl.isStaff(sender); + return getTFM().al.isAdmin(sender); } public boolean isVanished(Player player) { - return getTFM().sl.isVanished(player.getName()); + return getTFM().al.isVanished(player.getName()); } } \ No newline at end of file From ff033b6483614a691aaf8eac524eb3b539f9bfec Mon Sep 17 00:00:00 2001 From: speed <43330808+speedxx@users.noreply.github.com> Date: Sun, 13 Dec 2020 22:05:24 -0500 Subject: [PATCH 10/41] fix --- .idea/TFGuilds.iml | 16 ++++++++-------- pom.xml | 2 +- .../tfguilds/command/TFGuildsCommand.java | 2 +- .../totalfreedom/tfguilds/sql/SQLRankData.java | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.idea/TFGuilds.iml b/.idea/TFGuilds.iml index 9953d75..a5f2b44 100644 --- a/.idea/TFGuilds.iml +++ b/.idea/TFGuilds.iml @@ -19,14 +19,6 @@ - - - - - - - - @@ -36,6 +28,12 @@ + + + + + + @@ -66,6 +64,7 @@ + @@ -85,6 +84,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/command/TFGuildsCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java index 295db80..217ec7a 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/TFGuildsCommand.java @@ -49,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/sql/SQLRankData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java index d5aeae3..1071f6f 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java @@ -48,7 +48,7 @@ public class SQLRankData statement.setString(1, guildIdentifier); statement.setString(2, identifier); ResultSet set = statement.executeQuery(); - set.next(); + if (!set.next()) return null; String name = set.getString("name"); List members = new ArrayList<>(); if (set.getString("members") != null) From 2701a5de4aa49c06ba4853b912e2525f30aebbc0 Mon Sep 17 00:00:00 2001 From: speed <43330808+speedxx@users.noreply.github.com> Date: Thu, 17 Dec 2020 14:23:32 -0500 Subject: [PATCH 11/41] smart --- .../java/me/totalfreedom/tfguilds/listener/ChatListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java index 62f1794..7e0276a 100644 --- a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java +++ b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java @@ -38,7 +38,7 @@ public class ChatListener implements Listener GuildRank rank = null; for (GuildRank r : guild.getRanks()) { - if (r.getMembers().contains(player.getName())) + if (r.getMembers().contains(player.getUniqueId())) { rank = r; } From 13c60634749a784cdfee44e3ee99b0c4904498c3 Mon Sep 17 00:00:00 2001 From: speed <43330808+speedxx@users.noreply.github.com> Date: Sat, 19 Dec 2020 19:41:20 -0500 Subject: [PATCH 12/41] guild warps (FS-1) * adds guild warps * some more message standardization * formatting * alphabetize help subcommand and guild command --- pom.xml | 2 +- .../java/me/totalfreedom/tfguilds/Common.java | 1 + .../me/totalfreedom/tfguilds/TFGuilds.java | 7 +- .../tfguilds/command/AddModSubcommand.java | 2 +- .../tfguilds/command/ChatSubcommand.java | 2 +- .../command/CreateRankSubcommand.java | 2 +- .../tfguilds/command/CreateSubcommand.java | 2 +- .../command/DeleteRankSubcommand.java | 2 +- .../command/DeleteWarpSubcommand.java | 57 ++++++++ .../tfguilds/command/DisbandSubcommand.java | 2 +- .../tfguilds/command/GuildChatCommand.java | 2 +- .../tfguilds/command/GuildCommand.java | 108 ++++++++------ .../tfguilds/command/HelpSubcommand.java | 43 +++--- .../tfguilds/command/HomeSubcommand.java | 2 +- .../tfguilds/command/InfoSubcommand.java | 2 +- .../tfguilds/command/InviteSubcommand.java | 2 +- .../tfguilds/command/KickSubcommand.java | 2 +- .../tfguilds/command/LeaveSubcommand.java | 2 +- .../tfguilds/command/ListSubcommand.java | 6 +- .../tfguilds/command/MOTDSubcommand.java | 2 +- .../tfguilds/command/RemoveModSubcommand.java | 4 +- .../tfguilds/command/RenameSubcommand.java | 2 +- .../tfguilds/command/RosterSubcommand.java | 2 +- .../command/SetDefaultRankSubcommand.java | 2 +- .../tfguilds/command/SetOwnerSubcommand.java | 2 +- .../tfguilds/command/SetRankSubcommand.java | 2 +- .../tfguilds/command/SetStateSubcommand.java | 2 +- .../tfguilds/command/SetWarpSubcommand.java | 56 +++++++ .../tfguilds/command/TPSubcommand.java | 2 +- .../tfguilds/command/TagSubcommand.java | 2 +- .../tfguilds/command/ToggleTagSubcommand.java | 2 +- .../tfguilds/command/WarpSubcommand.java | 53 +++++++ .../tfguilds/command/WarpsSubcommand.java | 36 +++++ .../me/totalfreedom/tfguilds/guild/Guild.java | 30 ++++ .../tfguilds/guild/GuildWarp.java | 44 ++++++ .../tfguilds/listener/ChatListener.java | 5 +- .../tfguilds/sql/SQLDatabase.java | 8 + .../tfguilds/sql/SQLGuildData.java | 23 ++- .../tfguilds/sql/SQLRankData.java | 9 +- .../tfguilds/sql/SQLUserData.java | 5 +- .../tfguilds/sql/SQLWarpData.java | 138 ++++++++++++++++++ .../tfguilds/sql/SQLWorldData.java | 5 +- .../me/totalfreedom/tfguilds/user/User.java | 3 +- .../tfguilds/util/PaginationList.java | 12 +- src/main/resources/plugin.yml | 10 +- 45 files changed, 600 insertions(+), 109 deletions(-) create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/WarpSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/WarpsSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/guild/GuildWarp.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java diff --git a/pom.xml b/pom.xml index 9538f1a..33fa527 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.totalfreedom TFGuilds - 0.3.0 + 0.3.1 jar TFGuilds diff --git a/src/main/java/me/totalfreedom/tfguilds/Common.java b/src/main/java/me/totalfreedom/tfguilds/Common.java index 1172d0a..1d036a7 100644 --- a/src/main/java/me/totalfreedom/tfguilds/Common.java +++ b/src/main/java/me/totalfreedom/tfguilds/Common.java @@ -19,6 +19,7 @@ public class Common 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 Map INVITES = new HashMap<>(); public static List IN_GUILD_CHAT = new ArrayList<>(); diff --git a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java index 029eb3d..2fff217 100644 --- a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java +++ b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java @@ -12,6 +12,7 @@ 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; @@ -31,8 +32,9 @@ public final class TFGuilds extends JavaPlugin public SQLDatabase sql; public SQLGuildData guildData; public SQLRankData rankData; - public SQLWorldData worldData; public SQLUserData userData; + public SQLWarpData warpData; + public SQLWorldData worldData; @Override public void onEnable() @@ -43,8 +45,9 @@ public final class TFGuilds extends JavaPlugin sql = new SQLDatabase(); guildData = new SQLGuildData(); rankData = new SQLRankData(); - worldData = new SQLWorldData(); userData = new SQLUserData(); + warpData = new SQLWarpData(); + worldData = new SQLWorldData(); loadCommands(); loadListeners(); GLog.info("Enabled " + this.getDescription().getFullName()); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java index eeb681b..f1cda04 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java @@ -79,7 +79,7 @@ public class AddModSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java index 5a1f1e2..427036a 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java @@ -25,7 +25,7 @@ public class ChatSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java index c39988e..a8021ed 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java @@ -34,7 +34,7 @@ public class CreateRankSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); 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 c1a6a01..23212cb 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java @@ -30,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); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java index a29a55e..e006e93 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java @@ -31,7 +31,7 @@ public class DeleteRankSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } 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..1e2fb53 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubcommand.java @@ -0,0 +1,57 @@ +package me.totalfreedom.tfguilds.command; + +import me.totalfreedom.tfguilds.Common; +import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.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(guild.getIdentifier(), 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 index b12d92e..c72c460 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java @@ -56,7 +56,7 @@ public class DisbandSubcommand extends Common implements CommandExecutor Player player = (Player)sender; if (!Guild.isInGuild(player)) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java index 7a035c8..428f42b 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java @@ -25,7 +25,7 @@ public class GuildChatCommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java index daa23d0..60a4e99 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/GuildCommand.java @@ -21,60 +21,69 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete { switch (args[0].toLowerCase()) { - case "list": - return new ListSubcommand().onCommand(sender, command, label, args); - case "help": - return new HelpSubcommand().onCommand(sender, command, label, args); - case "create": - return new CreateSubcommand().onCommand(sender, command, label, args); - case "disband": - return new DisbandSubcommand().onCommand(sender, command, label, args); - case "invite": - return new InviteSubcommand().onCommand(sender, command, label, args); + // Please keep the commands here & in HelpSubcommand.java in alphabetical order case "addmod": return new AddModSubcommand().onCommand(sender, command, label, args); - case "removemod": - return new RemoveModSubcommand().onCommand(sender, command, label, args); - case "setowner": - return new SetOwnerSubcommand().onCommand(sender, command, label, args); - case "setstate": - return new SetStateSubcommand().onCommand(sender, command, label, args); + case "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 "tp": - return new TPSubcommand().onCommand(sender, command, label, args); - case "info": - return new InfoSubcommand().onCommand(sender, command, label, args); - case "tag": - return new TagSubcommand().onCommand(sender, command, label, args); - case "chat": - return new ChatSubcommand().onCommand(sender, command, label, args); - case "join": - return new JoinSubcommand().onCommand(sender, command, label, args); - case "rename": - return new RenameSubcommand().onCommand(sender, command, label, args); - case "createrank": - return new CreateRankSubcommand().onCommand(sender, command, label, args); - case "deleterank": - return new DeleteRankSubcommand().onCommand(sender, command, label, args); - case "setrank": - return new SetRankSubcommand().onCommand(sender, command, label, args); + case "list": + return new ListSubcommand().onCommand(sender, command, label, args); case "motd": return new MOTDSubcommand().onCommand(sender, command, label, args); - case "home": - return new HomeSubcommand().onCommand(sender, command, label, args); + case "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 "setmember": - return new SetMemberSubcommand().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); } sender.sendMessage(tl(PREFIX + "Unknown command - Run /g help if you need help")); return true; @@ -88,10 +97,10 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete if (args.length == 1) { return Arrays.asList("addmod", "chat", "createrank", "create", - "deleterank", "disband", "help", "home", "info", "invite", + "deleterank", "deletewarp", "disband", "help", "home", "info", "invite", "join", "kick", "leave", "list", "motd", "removemod", "rename", - "roster", "setowner", "setrank", "setstate", "tag", "tp", "setdefaultrank", - "toggletags", "toggletag", "setmember"); + "roster", "setdefaultrank", "setmember", "setowner", "setrank", "setstate", + "setwarp", "tag", "toggletags", "toggletag", "tp", "warps", "warp"); } else if (args.length == 2) { @@ -141,7 +150,7 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete { if (sender instanceof Player) { - Player player = (Player) sender; + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild.getOwner().equals(player.getUniqueId())) { @@ -154,7 +163,7 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete { if (sender instanceof Player) { - Player player = (Player) sender; + Player player = (Player)sender; Guild guild = Guild.getGuild(player); return guild.getOnlyMembers(); } @@ -174,7 +183,7 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete { if (sender instanceof Player) { - Player player = (Player) sender; + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild.hasModerator(player.getUniqueId())) { @@ -189,7 +198,7 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete { if (sender instanceof Player) { - Player player = (Player) sender; + Player player = (Player)sender; Guild guild = Guild.getGuild(player); if (guild.getOwner().equals(player.getUniqueId())) { @@ -197,6 +206,15 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete } } } + + case "deletewarp": + case "warp": + { + if (sender instanceof Player) + { + return Guild.getGuildWarps(); + } + } } } return Collections.emptyList(); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java index 3071fca..4ae36a2 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java @@ -10,34 +10,39 @@ 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%list")); - sender.sendMessage(tl("%s% - %p%help")); - sender.sendMessage(tl("%s% - %p%create ")); - sender.sendMessage(tl("%s% - %p%join ")); - sender.sendMessage(tl("%s% - %p%disband [name]")); - sender.sendMessage(tl("%s% - %p%invite ")); sender.sendMessage(tl("%s% - %p%addmod | player>")); - sender.sendMessage(tl("%s% - %p%removemod | name>")); - sender.sendMessage(tl("%s% - %p%setowner | player>")); + sender.sendMessage(tl("%s% - %p%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%tp ")); - sender.sendMessage(tl("%s% - %p%info [guild | player]")); - sender.sendMessage(tl("%s% - %p%tag | clear>")); - sender.sendMessage(tl("%s% - %p%rename ")); - sender.sendMessage(tl("%s% - %p%createrank ")); - sender.sendMessage(tl("%s% - %p%deleterank ")); - sender.sendMessage(tl("%s% - %p%setrank ")); + sender.sendMessage(tl("%s% - %p%list [page]")); sender.sendMessage(tl("%s% - %p%motd | clear>")); - sender.sendMessage(tl("%s% - %p%home [set]")); - sender.sendMessage(tl("%s% - %p%chat [message]")); + 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%setstate ")); 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%setmember ")); + 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 index 663d5f7..9f4c50b 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java @@ -30,7 +30,7 @@ public class HomeSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java index 938ab2a..fcd4ede 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java @@ -50,7 +50,7 @@ public class InfoSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild((Player)sender); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java index db467a4..34dad7f 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java @@ -47,7 +47,7 @@ public class InviteSubcommand extends Common implements CommandExecutor if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); 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 7aefd6e..9e4bc5a 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java @@ -74,7 +74,7 @@ public class KickSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java index ab1a023..705755e 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java @@ -30,7 +30,7 @@ public class LeaveSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java index 50b68e3..6b36298 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java @@ -41,20 +41,20 @@ public class ListSubcommand extends Common implements CommandExecutor } catch (NumberFormatException e) { - sender.sendMessage(ChatColor.RED + "Invalid number"); + sender.sendMessage(ChatColor.RED + "Invalid number."); } } if (pageIndex < 1 || pageIndex > paged.getPageCount()) { - sender.sendMessage(ChatColor.RED + "Not a valid page number"); + 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%]")); + sender.sendMessage(tl(PREFIX + "%s%Guild list (%p%" + guilds.size() + " total%s%) [%p%Page " + pageIndex + "%s%/%p%" + paged.getPageCount() + "%s%]")); for (String guild : page) { diff --git a/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java index 3d58ae2..fcec983 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java @@ -32,7 +32,7 @@ public class MOTDSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); 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 bd389e1..0b452af 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java @@ -46,7 +46,7 @@ public class RemoveModSubcommand extends Common implements CommandExecutor if (sender instanceof Player) { - if (guild.getModerators().contains(((Player) sender).getUniqueId())) + if (guild.getModerators().contains(((Player)sender).getUniqueId())) { sender.sendMessage(ChatColor.RED + "You may not demote yourself."); return true; @@ -82,7 +82,7 @@ public class RemoveModSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java index 82cd7f1..4efc179 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java @@ -36,7 +36,7 @@ public class RenameSubcommand extends Common implements CommandExecutor String identifier = GUtil.flatten(newName); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java index 03be36f..d297751 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java @@ -50,7 +50,7 @@ public class RosterSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild((Player)sender); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java index 0d5d570..4056302 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java @@ -31,7 +31,7 @@ public class SetDefaultRankSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); 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 7b9b3bb..1853f02 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java @@ -74,7 +74,7 @@ public class SetOwnerSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java index 2a55be5..b4ac17e 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java @@ -33,7 +33,7 @@ public class SetRankSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java index b95857e..9e9fdae 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java @@ -61,7 +61,7 @@ public class SetStateSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } 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..247fa66 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java @@ -0,0 +1,56 @@ +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 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(guild.getIdentifier(), 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/TPSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java index d2f33ed..0c95432 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java @@ -31,7 +31,7 @@ public class TPSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); 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 0657f60..9bdf5bb 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java @@ -32,7 +32,7 @@ public class TagSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); 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 d544057..20901d5 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java @@ -53,7 +53,7 @@ public class ToggleTagSubcommand extends Common implements CommandExecutor Guild guild = Guild.getGuild(player); if (guild == null) { - sender.sendMessage(ChatColor.RED + "You aren't in a guild!"); + sender.sendMessage(NG); return true; } 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..b6c4e3b --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/WarpSubcommand.java @@ -0,0 +1,53 @@ +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(guild.getIdentifier(), warpName)) + { + sender.sendMessage(ChatColor.RED + "Warp not found."); + return true; + } + + GuildWarp warp = plugin.warpData.get(guild.getIdentifier(), 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..358261c --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/command/WarpsSubcommand.java @@ -0,0 +1,36 @@ +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/guild/Guild.java b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java index c148900..9925154 100644 --- a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java +++ b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java @@ -234,7 +234,9 @@ public class Guild for (UUID moderator : moderators) { if (moderator.equals(owner)) + { continue; + } OfflinePlayer player = Bukkit.getOfflinePlayer(moderator); only.add(player.getName()); } @@ -288,10 +290,22 @@ public class Guild { List g = new ArrayList<>(); for (Guild guild : plugin.guildData.getAll()) + { g.add(guild.getName()); + } return g; } + public static List getGuildWarps() + { + List warps = new ArrayList<>(); + for (GuildWarp warp : plugin.warpData.getAll()) + { + warps.add(warp.getWarpName()); + } + return warps; + } + public String getInformation() { return Common.tl(Common.PREFIX + "Guild Information\n" + @@ -339,7 +353,9 @@ public class Guild { Player player = Bukkit.getPlayer(member); if (player == null) + { continue; + } Common.IN_GUILD_CHAT.remove(player); } plugin.guildData.delete(this); @@ -358,13 +374,17 @@ public class Guild 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); @@ -390,4 +410,14 @@ public class Guild { return getGuild(player) != null; } + + public static GuildWarp createWarp(String identifier, String warpName, Player player) + { + return GuildWarp.createGuildWarp(identifier, warpName, player); + } + + public static boolean warpExists(String identifier, String warpName) + { + return plugin.warpData.exists(identifier, warpName); + } } \ 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 new file mode 100644 index 0000000..c31a8f9 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/guild/GuildWarp.java @@ -0,0 +1,44 @@ +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/listener/ChatListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java index 7e0276a..875e13b 100644 --- a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java +++ b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java @@ -71,7 +71,10 @@ public class ChatListener implements Listener } User user = plugin.userData.get(player.getUniqueId()); - if (!user.isTag()) return; + 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 index ecae74e..ad9769b 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java @@ -69,6 +69,14 @@ public class SQLDatabase "\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(); return connection; } catch (SQLException ex) diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java index 66af80a..7cef2e4 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java @@ -56,17 +56,24 @@ public class SQLGuildData statement.setString(1, identifier); ResultSet set = statement.executeQuery(); boolean next = set.next(); - if (!next) return null; + 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")]; @@ -74,7 +81,9 @@ public class SQLGuildData 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")), @@ -97,7 +106,9 @@ public class SQLGuildData for (Guild guild : getAll()) { if (guild.getMembers().contains(player.getUniqueId())) + { return guild; + } } return null; } @@ -110,7 +121,9 @@ public class SQLGuildData ResultSet set = statement.executeQuery(); List guilds = new ArrayList<>(); while (set.next()) + { guilds.add(get(set.getString("identifier"))); + } return guilds; } catch (SQLException ex) @@ -164,21 +177,27 @@ public class SQLGuildData 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(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())); diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java index 1071f6f..2782b83 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java @@ -48,13 +48,18 @@ public class SQLRankData statement.setString(1, guildIdentifier); statement.setString(2, identifier); ResultSet set = statement.executeQuery(); - if (!set.next()) return null; + 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); } @@ -92,7 +97,9 @@ public class SQLRankData 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()); diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java index 74f0dad..141a4a7 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java @@ -54,7 +54,10 @@ public class SQLUserData public User get(UUID uuid) { - if (!exists(uuid)) create(uuid); + if (!exists(uuid)) + { + create(uuid); + } try (Connection connection = plugin.sql.getConnection()) { PreparedStatement statement = connection.prepareStatement(SELECT); diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java new file mode 100644 index 0000000..88ed374 --- /dev/null +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java @@ -0,0 +1,138 @@ +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) + { + try (Connection connection = plugin.sql.getConnection()) + { + PreparedStatement statement = connection.prepareStatement(SELECT); + statement.setString(1, identifier); + statement.setString(2, warpName); + ResultSet set = statement.executeQuery(); + return set.next(); + } + catch (SQLException ex) + { + ex.printStackTrace(); + } + return false; + } + + public GuildWarp get(String identifier, String warpName) + { + try (Connection connection = plugin.sql.getConnection()) + { + 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 List getAll() + { + try (Connection connection = plugin.sql.getConnection()) + { + PreparedStatement statement = connection.prepareStatement(SELECT_ALL); + ResultSet set = statement.executeQuery(); + List warps = new ArrayList<>(); + while (set.next()) + { + warps.add(get(set.getString("identifier"), set.getString("warp_name"))); + } + return warps; + } + catch (SQLException ex) + { + ex.printStackTrace(); + } + return null; + } + + public GuildWarp create(String identifier, String warpName, Player player) + { + try (Connection connection = plugin.sql.getConnection()) + { + 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(); + return new GuildWarp(identifier, warpName, player.getLocation().getX(), player.getLocation().getY(), + player.getLocation().getZ(), player.getWorld()); + } + catch (SQLException ex) + { + ex.printStackTrace(); + } + return null; + } + + public void save(GuildWarp warp) + { + try (Connection connection = plugin.sql.getConnection()) + { + 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(); + } + catch (SQLException ex) + { + ex.printStackTrace(); + } + } + + public void delete(GuildWarp warp) + { + try (Connection connection = plugin.sql.getConnection()) + { + PreparedStatement statement = connection.prepareStatement(DELETE); + statement.setString(1, warp.getIguild()); + statement.setString(2, warp.getWarpName()); + statement.execute(); + } + 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 index 6045af9..91281e5 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java @@ -79,7 +79,10 @@ public class SQLWorldData { try (Connection connection = plugin.sql.getConnection()) { - if (!existsID(id)) return null; + if (!existsID(id)) + { + return null; + } PreparedStatement statement = connection.prepareStatement(SELECT_ID); statement.setInt(1, id); ResultSet set = statement.executeQuery(); diff --git a/src/main/java/me/totalfreedom/tfguilds/user/User.java b/src/main/java/me/totalfreedom/tfguilds/user/User.java index 0d57e48..163b9ab 100644 --- a/src/main/java/me/totalfreedom/tfguilds/user/User.java +++ b/src/main/java/me/totalfreedom/tfguilds/user/User.java @@ -10,6 +10,7 @@ public class User { private final int id; private final UUID uuid; + @Setter private boolean tag; @@ -24,4 +25,4 @@ public class User { TFGuilds.getPlugin().userData.save(this); } -} +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/tfguilds/util/PaginationList.java b/src/main/java/me/totalfreedom/tfguilds/util/PaginationList.java index 1060caa..bb64e03 100644 --- a/src/main/java/me/totalfreedom/tfguilds/util/PaginationList.java +++ b/src/main/java/me/totalfreedom/tfguilds/util/PaginationList.java @@ -10,6 +10,7 @@ public class PaginationList extends ArrayList /** * Defines a new Pagination List. + * * @param epp Elements per page - how many elements will be included on a page of the list. */ public PaginationList(int epp) @@ -20,7 +21,8 @@ public class PaginationList extends ArrayList /** * Defines a new Pagination List. - * @param epp Elements per page - how many elements will be included on a page of the list. + * + * @param epp Elements per page - how many elements will be included on a page of the list. * @param elements Elements to add to the list immediately. */ @SafeVarargs @@ -35,17 +37,21 @@ public class PaginationList extends ArrayList */ public int getPageCount() { - return (int) Math.ceil((double) size() / (double) epp); + return (int)Math.ceil((double)size() / (double)epp); } /** * Get a page from the list. + * * @param page Page you want to access. * @return A sublist of only the elements from that page. */ public List getPage(int page) { - if (page < 1 || page > getPageCount()) return null; + if (page < 1 || page > getPageCount()) + { + return null; + } int startIndex = (page - 1) * epp; int endIndex = Math.min(startIndex + (epp - 1), this.size() - 1); return subList(startIndex, endIndex + 1); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 6ec65e3..ddd9483 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -2,22 +2,22 @@ name: TFGuilds version: ${project.version} main: me.totalfreedom.tfguilds.TFGuilds api-version: 1.16 -authors: [speed, super] +authors: [ speed, super ] description: A guilds plugin for the TotalFreedom server. commands: guild: description: The main command of TFGuilds. usage: / - aliases: [g] + aliases: [ g ] guildchat: description: Talk in chat with your guild. usage: / [message] - aliases: [gchat] + aliases: [ gchat ] tfguilds: description: Information about the plugin. usage: / - aliases: [tfg] + aliases: [ tfg ] guildchatspy: description: An admin only command which allows for spying on guild chat. usage: / - aliases: [gchatspy, gcs] \ No newline at end of file + aliases: [ gchatspy, gcs ] \ No newline at end of file From 5c9282441190fa2e65a1967a996c3aabf9bde7ad Mon Sep 17 00:00:00 2001 From: speed <43330808+speedxx@users.noreply.github.com> Date: Sat, 19 Dec 2020 19:48:14 -0500 Subject: [PATCH 13/41] Delete .travis.yml --- .travis.yml | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index dff5f3a..0000000 --- a/.travis.yml +++ /dev/null @@ -1 +0,0 @@ -language: java From 56134e2f32569334de2516eedf2ab543f7c80efb Mon Sep 17 00:00:00 2001 From: speed <43330808+speedxx@users.noreply.github.com> Date: Tue, 29 Dec 2020 14:26:16 -0500 Subject: [PATCH 14/41] lol --- .idea/TFGuilds.iml | 1 - .../java/me/totalfreedom/tfguilds/command/AddModSubcommand.java | 2 +- .../me/totalfreedom/tfguilds/command/SetWarpSubcommand.java | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.idea/TFGuilds.iml b/.idea/TFGuilds.iml index a5f2b44..fa88e47 100644 --- a/.idea/TFGuilds.iml +++ b/.idea/TFGuilds.iml @@ -26,7 +26,6 @@ - diff --git a/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java index f1cda04..81c37d0 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java @@ -50,7 +50,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 + "No need to make the owner a moderator!"); return true; diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java index 247fa66..5e309f9 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java @@ -2,7 +2,6 @@ package me.totalfreedom.tfguilds.command; import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.guild.Guild; -import me.totalfreedom.tfguilds.guild.GuildWarp; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; import org.bukkit.command.Command; From ca7e623dd5ae6424a4a0fc478f64cb1875b5d1bd Mon Sep 17 00:00:00 2001 From: speed <43330808+speedxx@users.noreply.github.com> Date: Wed, 6 Jan 2021 10:56:20 -0500 Subject: [PATCH 15/41] fix?????????????? --- .../totalfreedom/tfguilds/listener/ChatListener.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java index 875e13b..bd3cc51 100644 --- a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java +++ b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java @@ -38,9 +38,15 @@ public class ChatListener implements Listener GuildRank rank = null; for (GuildRank r : guild.getRanks()) { - if (r.getMembers().contains(player.getUniqueId())) + if (r != null) { - rank = r; + if (r.getMembers() != null) + { + if (r.getMembers().contains(player.getUniqueId())) + { + rank = r; + } + } } } From 4128950c468b7f08a2e80d5fef50fe29397e0172 Mon Sep 17 00:00:00 2001 From: abhiram Date: Thu, 25 Feb 2021 02:01:54 +0530 Subject: [PATCH 16/41] Fixed invalid config path, it was causing tag not displaying --- .idea/TFGuilds.iml | 13 +++++------ .idea/jarRepositories.xml | 22 +++++++++---------- .idea/misc.xml | 4 ++++ .../tfguilds/config/ConfigEntry.java | 7 +++--- .../tfguilds/listener/ChatListener.java | 1 + 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/.idea/TFGuilds.iml b/.idea/TFGuilds.iml index fa88e47..163e931 100644 --- a/.idea/TFGuilds.iml +++ b/.idea/TFGuilds.iml @@ -1,5 +1,10 @@ + + + @@ -19,14 +24,6 @@ - - - - - - - - diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml index b008060..bcc693d 100644 --- a/.idea/jarRepositories.xml +++ b/.idea/jarRepositories.xml @@ -6,15 +6,20 @@ \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index cffed5d..d2b0ede 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,9 @@ + + + + diff --git a/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java b/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java index 4f5db02..bd8c900 100644 --- a/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/tfguilds/config/ConfigEntry.java @@ -9,17 +9,16 @@ public enum ConfigEntry SCHEME_SECONDARY("scheme.secondary"), // Server GUILD_CHAT_LOGGING_ENABLED("server.guild_chat_logging.enabled"), - GUILD_TAGS_ENABLED("server.guild_tags.enabled"); + GUILD_TAGS_ENABLED("server.guild_tags_enabled.enabled"); private final String path; - + private final Config config; ConfigEntry(String path) { this.path = path; + this.config = TFGuilds.getPlugin().config; } - private static final Config config = TFGuilds.getPlugin().config; - public boolean getBoolean() { return config.getBoolean(path); diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java index bd3cc51..d819bee 100644 --- a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java +++ b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java @@ -84,6 +84,7 @@ public class ChatListener implements Listener if (guild.hasTag()) { + System.out.println(GUtil.colorize(guild.getTag().replace("%rank%", display)) + ChatColor.RESET + " " + e.getFormat()); e.setFormat(GUtil.colorize(guild.getTag().replace("%rank%", display)) + ChatColor.RESET + " " + e.getFormat()); } } From 65700237626369e68f31dd668b83ebed3eaa21ca Mon Sep 17 00:00:00 2001 From: abhiram Date: Thu, 25 Feb 2021 02:03:15 +0530 Subject: [PATCH 17/41] Fixed invalid config path, it was causing guild tag not displaying --- .idea/checkstyle-idea.xml | 16 ++++++++++++++++ .idea/discord.xml | 6 ++++++ 2 files changed, 22 insertions(+) create mode 100644 .idea/checkstyle-idea.xml create mode 100644 .idea/discord.xml diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml new file mode 100644 index 0000000..658f152 --- /dev/null +++ b/.idea/checkstyle-idea.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 0000000..cd711a0 --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file From 3c412ca0e8436d7db39b292e77182e6c9d87dfe8 Mon Sep 17 00:00:00 2001 From: Ryan Wild Date: Fri, 5 Mar 2021 22:56:39 +0000 Subject: [PATCH 18/41] 2021.03-RC01 Release Bumped version numbers and made sure we build Java 11. Also fixed a bug where we seem to double log entries. --- nb-configuration.xml | 19 +++++++++++++++++++ pom.xml | 6 +++--- .../tfguilds/listener/ChatListener.java | 3 ++- 3 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 nb-configuration.xml diff --git a/nb-configuration.xml b/nb-configuration.xml new file mode 100644 index 0000000..5616f15 --- /dev/null +++ b/nb-configuration.xml @@ -0,0 +1,19 @@ + + + + + + JDK_11 + true + + diff --git a/pom.xml b/pom.xml index 33fa527..707a078 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.totalfreedom TFGuilds - 0.3.1 + 2021.03-RC01 jar TFGuilds @@ -25,8 +25,8 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 11 + 11 diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java index d819bee..2dfe501 100644 --- a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java +++ b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java @@ -84,7 +84,8 @@ public class ChatListener implements Listener if (guild.hasTag()) { - System.out.println(GUtil.colorize(guild.getTag().replace("%rank%", display)) + ChatColor.RESET + " " + e.getFormat()); + // This seems to result in the entry being logged twice on the console, which is silly... Not sure if there was a good reason for it. + //System.out.println(GUtil.colorize(guild.getTag().replace("%rank%", display)) + ChatColor.RESET + " " + e.getFormat()); e.setFormat(GUtil.colorize(guild.getTag().replace("%rank%", display)) + ChatColor.RESET + " " + e.getFormat()); } } From 02e1df6e9c1671bd59e345c49bd65fb3aedd4ff8 Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sun, 7 Mar 2021 15:43:08 +1100 Subject: [PATCH 19/41] Save data when removing a player from rank (FS-134) --- .gitignore | 6 +----- .../me/totalfreedom/tfguilds/command/SetRankSubcommand.java | 3 ++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 89a26f4..166641b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,3 @@ -/.idea/artifacts -/.idea/libraries -/.idea/workspace.xml -/.idea/modules.xml -/.idea/uiDesigner.xml +/.idea/ target/ out/ \ 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 index b4ac17e..2527f70 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java @@ -57,7 +57,7 @@ public class SetRankSubcommand extends Common implements CommandExecutor } String name = StringUtils.join(args, " ", 2, args.length); - if (name.toLowerCase().equals("none")) + if (name.equalsIgnoreCase("none")) { for (GuildRank gr : guild.getRanks()) { @@ -80,6 +80,7 @@ public class SetRankSubcommand extends Common implements CommandExecutor for (GuildRank gr : guild.getRanks()) { gr.getMembers().remove(r.getUniqueId()); + gr.save(); } rank.getMembers().add(r.getUniqueId()); From c9972c2879a5e49815733753805969a205b85404 Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sun, 7 Mar 2021 15:53:19 +1100 Subject: [PATCH 20/41] Added another missed save statement --- .../java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java index 2527f70..71fbecf 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java @@ -62,6 +62,7 @@ public class SetRankSubcommand extends Common implements CommandExecutor 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.")); From a0075b2163c4a449f007a100d8d11187fc97c3fd Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sun, 7 Mar 2021 19:17:44 +1100 Subject: [PATCH 21/41] Use toLowerCase instead --- .../me/totalfreedom/tfguilds/command/SetRankSubcommand.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java index 71fbecf..967a3ec 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java @@ -56,8 +56,8 @@ public class SetRankSubcommand extends Common implements CommandExecutor return true; } - String name = StringUtils.join(args, " ", 2, args.length); - if (name.equalsIgnoreCase("none")) + String name = StringUtils.join(args, " ", 2, args.length).toLowerCase(); + if (name.equals("none")) { for (GuildRank gr : guild.getRanks()) { From 1708039c607b5e4e221034337d36500d8c4abff0 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 7 Mar 2021 17:51:25 +0000 Subject: [PATCH 22/41] Tell CodeQL We're building Java 11 --- .github/workflows/codeql-analysis.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a80c844..91eb6c6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -36,6 +36,12 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v2 + + - name: Setup Java JDK + uses: actions/setup-java@v1.4.3 + with: + # The Java version to make available on the path. Takes a whole or semver Java version, or 1.x syntax (e.g. 1.8 => Java 8.x). Early access versions can be specified in the form of e.g. 14-ea, 14.0.0-ea, or 14.0.0-ea.28 + java-version: 11 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL From b9c16dcd1a14fc85bd9ef4fd2244eaebf18ccc4a Mon Sep 17 00:00:00 2001 From: Ryan Wild Date: Sun, 21 Mar 2021 15:18:24 +0000 Subject: [PATCH 23/41] Bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 707a078..c3efb8b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.totalfreedom TFGuilds - 2021.03-RC01 + 2021.03-RC02 jar TFGuilds From 9d58522fc6a884ae9657c492b1f8a6539976bec7 Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Mon, 5 Apr 2021 22:26:29 +1000 Subject: [PATCH 24/41] Improve plugin performance (FS-151) This is what Freedom-01 is running on and this will have to do until we start a rewrite. --- .../me/totalfreedom/tfguilds/TFGuilds.java | 13 +++ .../command/DeleteWarpSubcommand.java | 2 +- .../tfguilds/command/SetWarpSubcommand.java | 2 +- .../tfguilds/command/WarpSubcommand.java | 4 +- .../me/totalfreedom/tfguilds/guild/Guild.java | 18 ++- .../tfguilds/listener/ChatListener.java | 2 - .../tfguilds/sql/SQLDatabase.java | 109 +++++++++--------- .../tfguilds/sql/SQLGuildData.java | 45 ++++---- .../tfguilds/sql/SQLRankData.java | 18 ++- .../tfguilds/sql/SQLUserData.java | 21 ++-- .../tfguilds/sql/SQLWarpData.java | 44 ++++--- .../tfguilds/sql/SQLWorldData.java | 15 ++- 12 files changed, 164 insertions(+), 129 deletions(-) diff --git a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java index 2fff217..71d9793 100644 --- a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java +++ b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java @@ -1,11 +1,15 @@ package me.totalfreedom.tfguilds; +import java.util.HashMap; +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.config.Config; +import me.totalfreedom.tfguilds.guild.Guild; +import me.totalfreedom.tfguilds.guild.GuildWarp; import me.totalfreedom.tfguilds.listener.ChatListener; import me.totalfreedom.tfguilds.listener.JoinListener; import me.totalfreedom.tfguilds.sql.SQLDatabase; @@ -36,18 +40,27 @@ public final class TFGuilds extends JavaPlugin public SQLWarpData warpData; public SQLWorldData worldData; + + // TEMP FIX UNTIL REWRITE + public Map guilds; + public Map warps; + @Override public void onEnable() { 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()); diff --git a/src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubcommand.java index 1e2fb53..9d284f1 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubcommand.java @@ -43,7 +43,7 @@ public class DeleteWarpSubcommand extends Common implements CommandExecutor } String warpName = StringUtils.join(args, " ", 1, args.length); - if (!Guild.warpExists(guild.getIdentifier(), warpName)) + if (!guild.warpExists(warpName)) { sender.sendMessage(ChatColor.RED + "Warp not found."); return true; diff --git a/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java index 5e309f9..e58860d 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java @@ -42,7 +42,7 @@ public class SetWarpSubcommand extends Common implements CommandExecutor } String warpName = StringUtils.join(args, " ", 1, args.length); - if (Guild.warpExists(guild.getIdentifier(), warpName)) + if (guild.warpExists(warpName)) { sender.sendMessage(ChatColor.RED + "A warp with that name already exists."); return true; diff --git a/src/main/java/me/totalfreedom/tfguilds/command/WarpSubcommand.java b/src/main/java/me/totalfreedom/tfguilds/command/WarpSubcommand.java index b6c4e3b..245a11d 100644 --- a/src/main/java/me/totalfreedom/tfguilds/command/WarpSubcommand.java +++ b/src/main/java/me/totalfreedom/tfguilds/command/WarpSubcommand.java @@ -38,13 +38,13 @@ public class WarpSubcommand extends Common implements CommandExecutor } String warpName = StringUtils.join(args, " ", 1, args.length); - if (!Guild.warpExists(guild.getIdentifier(), warpName)) + if (!guild.warpExists(warpName)) { sender.sendMessage(ChatColor.RED + "Warp not found."); return true; } - GuildWarp warp = plugin.warpData.get(guild.getIdentifier(), warpName); + 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 + "\".")); diff --git a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java index 9925154..52a060b 100644 --- a/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java +++ b/src/main/java/me/totalfreedom/tfguilds/guild/Guild.java @@ -289,7 +289,7 @@ public class Guild public static List getGuildList() { List g = new ArrayList<>(); - for (Guild guild : plugin.guildData.getAll()) + for (Guild guild : plugin.guilds.values()) { g.add(guild.getName()); } @@ -299,13 +299,23 @@ public class Guild public static List getGuildWarps() { List warps = new ArrayList<>(); - for (GuildWarp warp : plugin.warpData.getAll()) + for (GuildWarp warp : plugin.warps.values()) { warps.add(warp.getWarpName()); } return warps; } + public GuildWarp getWarp(String warpName) + { + GuildWarp warp = plugin.warps.get(identifier); + if (warp != null && warp.getWarpName().equalsIgnoreCase(warpName)) + { + return warp; + } + return null; + } + public String getInformation() { return Common.tl(Common.PREFIX + "Guild Information\n" + @@ -393,7 +403,7 @@ public class Guild public static Guild getGuild(String identifier) { - return plugin.guildData.get(identifier); + return plugin.guilds.get(identifier); } public static Guild getGuild(Player player) @@ -416,7 +426,7 @@ public class Guild return GuildWarp.createGuildWarp(identifier, warpName, player); } - public static boolean warpExists(String identifier, String warpName) + public boolean warpExists(String warpName) { return plugin.warpData.exists(identifier, warpName); } diff --git a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java index 2dfe501..bd3cc51 100644 --- a/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java +++ b/src/main/java/me/totalfreedom/tfguilds/listener/ChatListener.java @@ -84,8 +84,6 @@ public class ChatListener implements Listener if (guild.hasTag()) { - // This seems to result in the entry being logged twice on the console, which is silly... Not sure if there was a good reason for it. - //System.out.println(GUtil.colorize(guild.getTag().replace("%rank%", display)) + ChatColor.RESET + " " + e.getFormat()); e.setFormat(GUtil.colorize(guild.getTag().replace("%rank%", display)) + ChatColor.RESET + " " + e.getFormat()); } } diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java index ad9769b..6743a19 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java @@ -10,79 +10,82 @@ 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; + private final File FILE; + private Connection connection; public SQLDatabase() { - File file = new File(plugin.getDataFolder(), DATABASE_FILENAME); + File file = new File(TFGuilds.getPlugin().getDataFolder(), DATABASE_FILENAME); if (!file.exists()) { try { file.createNewFile(); - plugin.saveResource(DATABASE_FILENAME, false); + TFGuilds.getPlugin().saveResource(DATABASE_FILENAME, false); } catch (IOException ex) { ex.printStackTrace(); } } - this.file = file; - } - - public Connection getConnection() - { + this.FILE = file; 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(); - 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(); - return connection; + connection = DriverManager.getConnection("jdbc:sqlite:" + file.getAbsolutePath()); + createTables(); } catch (SQLException ex) { ex.printStackTrace(); } - return null; + } + + public Connection getConnection() + { + return connection; + } + + 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(); } } \ 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 index 7cef2e4..6649083 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java @@ -20,6 +20,7 @@ import org.bukkit.entity.Player; public class SQLGuildData { + private static final TFGuilds plugin = TFGuilds.getPlugin(); private static final String TABLE_NAME = "guilds"; @@ -34,23 +35,13 @@ public class SQLGuildData 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; + return plugin.guilds.containsKey(identifier); } public Guild get(String identifier) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT); statement.setString(1, identifier); @@ -103,7 +94,7 @@ public class SQLGuildData public Guild get(Player player) { - for (Guild guild : getAll()) + for (Guild guild : plugin.guilds.values()) { if (guild.getMembers().contains(player.getUniqueId())) { @@ -113,29 +104,29 @@ public class SQLGuildData return null; } - public List getAll() + public void getAll() { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT_ALL); ResultSet set = statement.executeQuery(); - List guilds = new ArrayList<>(); while (set.next()) { - guilds.add(get(set.getString("identifier"))); + String identifier = set.getString("identifier"); + plugin.guilds.put(identifier, get(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()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(INSERT); statement.setString(1, identifier); @@ -156,9 +147,11 @@ public class SQLGuildData long creation = System.currentTimeMillis(); statement.setLong(15, creation); statement.execute(); - return new Guild(identifier, name, owner.getUniqueId(), Collections.singletonList(owner.getUniqueId()), new ArrayList<>(), + 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) { @@ -169,7 +162,8 @@ public class SQLGuildData public void save(Guild guild, String identifier) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(UPDATE); statement.setString(1, guild.getIdentifier()); @@ -204,6 +198,7 @@ public class SQLGuildData statement.setString(14, guild.getDefaultRank()); statement.setString(15, identifier); statement.execute(); + plugin.guilds.put(identifier, guild); } catch (SQLException ex) { @@ -218,11 +213,13 @@ public class SQLGuildData public void delete(Guild guild) { - try (Connection connection = plugin.sql.getConnection()) + 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) { diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java index 2782b83..420dcc9 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java @@ -25,7 +25,8 @@ public class SQLRankData public boolean exists(String guildIdentifier, String identifier) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT); statement.setString(1, guildIdentifier); @@ -42,7 +43,8 @@ public class SQLRankData public GuildRank get(String guildIdentifier, String identifier) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT); statement.setString(1, guildIdentifier); @@ -72,7 +74,8 @@ public class SQLRankData public GuildRank create(String guildIdentifier, String identifier, String name) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(INSERT); statement.setString(1, guildIdentifier); @@ -91,7 +94,8 @@ public class SQLRankData public void save(GuildRank rank) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(UPDATE); statement.setString(1, rank.getName()); @@ -113,7 +117,8 @@ public class SQLRankData public void updateGuildIdentifier(GuildRank rank, String newIdentifier) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(UPDATE_GUILD); statement.setString(1, newIdentifier); @@ -129,7 +134,8 @@ public class SQLRankData public void delete(GuildRank rank) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(DELETE); statement.setString(1, rank.getIguild()); diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java index 141a4a7..af25ec0 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java @@ -22,7 +22,8 @@ public class SQLUserData public boolean exists(UUID uuid) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT); statement.setString(1, uuid.toString()); @@ -38,7 +39,8 @@ public class SQLUserData public boolean existsID(int id) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT_ID); statement.setInt(1, id); @@ -58,7 +60,8 @@ public class SQLUserData { create(uuid); } - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT); statement.setString(1, uuid.toString()); @@ -77,7 +80,8 @@ public class SQLUserData public User get(int id) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT_ID); statement.setInt(1, id); @@ -96,7 +100,8 @@ public class SQLUserData public User create(UUID uuid) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(INSERT); int id = getUserCount() + 1; @@ -115,7 +120,8 @@ public class SQLUserData public void save(User user) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(UPDATE); statement.setBoolean(1, user.isTag()); @@ -130,7 +136,8 @@ public class SQLUserData public int getUserCount() { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(COUNT); ResultSet set = statement.executeQuery(); diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java index 88ed374..0cec480 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java @@ -24,24 +24,14 @@ public class SQLWarpData public boolean exists(String identifier, String warpName) { - try (Connection connection = plugin.sql.getConnection()) - { - PreparedStatement statement = connection.prepareStatement(SELECT); - statement.setString(1, identifier); - statement.setString(2, warpName); - ResultSet set = statement.executeQuery(); - return set.next(); - } - catch (SQLException ex) - { - ex.printStackTrace(); - } - return false; + GuildWarp warp = plugin.warps.get(identifier); + return warp != null && warp.getWarpName().equalsIgnoreCase(warpName); } public GuildWarp get(String identifier, String warpName) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT); statement.setString(1, identifier); @@ -60,29 +50,29 @@ public class SQLWarpData return null; } - public List getAll() + public void getAll() { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT_ALL); ResultSet set = statement.executeQuery(); - List warps = new ArrayList<>(); while (set.next()) { - warps.add(get(set.getString("identifier"), set.getString("warp_name"))); + String identifier = set.getString("identifier"); + plugin.warps.put(identifier, get(identifier, set.getString("warp_name"))); } - return warps; } catch (SQLException ex) { ex.printStackTrace(); } - return null; } public GuildWarp create(String identifier, String warpName, Player player) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(INSERT); statement.setString(1, identifier); @@ -92,8 +82,10 @@ public class SQLWarpData statement.setDouble(5, player.getLocation().getZ()); statement.setInt(6, plugin.worldData.getWorldID(player.getWorld())); statement.execute(); - return new GuildWarp(identifier, warpName, player.getLocation().getX(), player.getLocation().getY(), + 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) { @@ -104,7 +96,8 @@ public class SQLWarpData public void save(GuildWarp warp) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(UPDATE); statement.setString(1, warp.getIguild()); @@ -114,6 +107,7 @@ public class SQLWarpData statement.setDouble(5, warp.getZ()); statement.setInt(6, plugin.worldData.getWorldID(warp.getWorld())); statement.execute(); + plugin.warps.put(warp.getIguild(), warp); } catch (SQLException ex) { @@ -123,12 +117,14 @@ public class SQLWarpData public void delete(GuildWarp warp) { - try (Connection connection = plugin.sql.getConnection()) + 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) { diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java index 91281e5..2a776bd 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java @@ -19,7 +19,8 @@ public class SQLWorldData public boolean exists(World world) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT); statement.setString(1, world.getName()); @@ -35,7 +36,8 @@ public class SQLWorldData public boolean existsID(int id) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(SELECT_ID); statement.setInt(1, id); @@ -51,7 +53,8 @@ public class SQLWorldData public int getWorldID(World world) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { if (!exists(world)) { @@ -77,7 +80,8 @@ public class SQLWorldData public World getWorld(int id) { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { if (!existsID(id)) { @@ -100,7 +104,8 @@ public class SQLWorldData public int getWorldCount() { - try (Connection connection = plugin.sql.getConnection()) + Connection connection = plugin.sql.getConnection(); + try { PreparedStatement statement = connection.prepareStatement(COUNT); ResultSet set = statement.executeQuery(); From c4d65c21d21e26d3629b249ce696cc42f7d2a7f5 Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sun, 11 Apr 2021 00:03:44 +1000 Subject: [PATCH 25/41] Fix Codacy issues --- src/main/java/me/totalfreedom/tfguilds/TFGuilds.java | 10 +++++----- .../java/me/totalfreedom/tfguilds/sql/SQLDatabase.java | 2 -- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java index 71d9793..c68d26b 100644 --- a/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java +++ b/src/main/java/me/totalfreedom/tfguilds/TFGuilds.java @@ -24,6 +24,11 @@ import org.bukkit.plugin.java.JavaPlugin; public final class TFGuilds extends JavaPlugin { + + // TEMP FIX UNTIL REWRITE + public Map guilds; + public Map warps; + private static TFGuilds plugin; public static TFGuilds getPlugin() @@ -40,11 +45,6 @@ public final class TFGuilds extends JavaPlugin public SQLWarpData warpData; public SQLWorldData worldData; - - // TEMP FIX UNTIL REWRITE - public Map guilds; - public Map warps; - @Override public void onEnable() { diff --git a/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java index 6743a19..0926641 100644 --- a/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java +++ b/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java @@ -10,7 +10,6 @@ import me.totalfreedom.tfguilds.TFGuilds; public class SQLDatabase { private static final String DATABASE_FILENAME = "database.db"; - private final File FILE; private Connection connection; public SQLDatabase() @@ -28,7 +27,6 @@ public class SQLDatabase ex.printStackTrace(); } } - this.FILE = file; try { connection = DriverManager.getConnection("jdbc:sqlite:" + file.getAbsolutePath()); From 8b16fc57e8d7016272b784059717a0d744eed670 Mon Sep 17 00:00:00 2001 From: Ryan Wild Date: Sat, 10 Apr 2021 20:06:49 +0100 Subject: [PATCH 26/41] Bump release version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c3efb8b..d54f138 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.totalfreedom TFGuilds - 2021.03-RC02 + 2021.03 jar TFGuilds From e6d3dc6b128ff446dc4091920ea30317f57cedfe Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sat, 22 May 2021 14:26:48 +1000 Subject: [PATCH 27/41] TFGuilds Rewrite (FS-164, FS-133, FS-244) (#7) * TFGuilds rewrite almost completed (FS-164 FS-133 FS-244) The rewrite is nearing completion - few modifications to TFGuilds and TFM and it will be ready for production * Finalise few things * Code cleanup * Use empty list instead and true instead of false --- .idea/codeStyles/Project.xml | 18 - .idea/compiler.xml | 2 +- .idea/jarRepositories.xml | 30 +- TFGuilds.iml | 34 +- pom.xml | 14 +- .../java/me/totalfreedom/tfguilds/Common.java | 36 +- .../me/totalfreedom/tfguilds/TFGuilds.java | 132 +- .../me/totalfreedom/tfguilds/TFMBridge.java | 64 + .../tfguilds/bridge/TFMBridge.java | 72 -- .../tfguilds/command/AddModSubCommand.java | 70 ++ .../tfguilds/command/AddModSubcommand.java | 123 -- .../tfguilds/command/ChatSubCommand.java | 46 + .../tfguilds/command/ChatSubcommand.java | 50 - .../command/CreateRankSubCommand.java | 70 ++ .../command/CreateRankSubcommand.java | 87 -- .../tfguilds/command/CreateSubCommand.java | 65 + .../tfguilds/command/CreateSubcommand.java | 81 -- .../command/DeleteRankSubCommand.java | 51 + .../command/DeleteRankSubcommand.java | 63 - .../command/DeleteWarpSubCommand.java | 51 + .../command/DeleteWarpSubcommand.java | 57 - .../tfguilds/command/DisbandSubCommand.java | 60 + .../tfguilds/command/DisbandSubcommand.java | 77 -- .../tfguilds/command/GuildChatCommand.java | 50 - .../tfguilds/command/GuildChatSpyCommand.java | 25 +- .../tfguilds/command/GuildCommand.java | 216 +--- .../tfguilds/command/HelpSubCommand.java | 22 + .../tfguilds/command/HelpSubcommand.java | 48 - .../tfguilds/command/HomeSubCommand.java | 56 + .../tfguilds/command/HomeSubcommand.java | 65 - .../tfguilds/command/InfoSubCommand.java | 55 + .../tfguilds/command/InfoSubcommand.java | 60 - .../tfguilds/command/InviteSubCommand.java | 98 ++ .../tfguilds/command/InviteSubcommand.java | 92 -- .../tfguilds/command/JoinSubCommand.java | 60 + .../tfguilds/command/JoinSubcommand.java | 67 -- .../tfguilds/command/KickSubCommand.java | 70 ++ .../tfguilds/command/KickSubcommand.java | 113 -- .../tfguilds/command/LeaveSubCommand.java | 38 + .../tfguilds/command/LeaveSubcommand.java | 50 - .../tfguilds/command/ListSubCommand.java | 60 + .../tfguilds/command/ListSubcommand.java | 65 - .../tfguilds/command/MOTDSubcommand.java | 68 -- .../tfguilds/command/MotdSubCommand.java | 66 + .../tfguilds/command/RemoveModSubCommand.java | 70 ++ .../tfguilds/command/RemoveModSubcommand.java | 126 -- .../tfguilds/command/RenameSubcommand.java | 88 -- .../tfguilds/command/RosterSubCommand.java | 59 + .../tfguilds/command/RosterSubcommand.java | 60 - .../command/SetDefaultRankSubCommand.java | 71 ++ .../command/SetDefaultRankSubcommand.java | 64 - .../tfguilds/command/SetMemberSubcommand.java | 54 - .../tfguilds/command/SetOwnerSubCommand.java | 65 + .../tfguilds/command/SetOwnerSubcommand.java | 113 -- .../tfguilds/command/SetRankSubCommand.java | 66 + .../tfguilds/command/SetRankSubcommand.java | 94 -- .../tfguilds/command/SetStateSubCommand.java | 53 + .../tfguilds/command/SetStateSubcommand.java | 87 -- .../tfguilds/command/SetWarpSubCommand.java | 57 + .../tfguilds/command/SetWarpSubcommand.java | 55 - .../tfguilds/command/SubCommand.java | 10 + .../tfguilds/command/TFGuildsCommand.java | 57 +- .../tfguilds/command/TPSubcommand.java | 56 - .../tfguilds/command/TagSubCommand.java | 100 ++ .../tfguilds/command/TagSubcommand.java | 107 -- .../tfguilds/command/ToggleTagSubCommand.java | 36 + .../tfguilds/command/ToggleTagSubcommand.java | 66 - .../command/ToggleTagsSubCommand.java | 36 + .../command/ToggleTagsSubcommand.java | 36 - .../tfguilds/command/TpSubCommand.java | 51 + .../tfguilds/command/WarpSubCommand.java | 47 + .../tfguilds/command/WarpSubcommand.java | 53 - .../tfguilds/command/WarpsSubCommand.java | 37 + .../tfguilds/command/WarpsSubcommand.java | 36 - .../totalfreedom/tfguilds/config/Config.java | 40 +- .../tfguilds/config/ConfigEntry.java | 28 +- .../me/totalfreedom/tfguilds/guild/Guild.java | 1066 ++++++++++++----- .../tfguilds/guild/GuildRank.java | 69 -- .../tfguilds/guild/GuildState.java | 41 - .../tfguilds/guild/GuildWarp.java | 44 - .../me/totalfreedom/tfguilds/guild/User.java | 141 +++ .../tfguilds/listener/ChatListener.java | 65 +- .../tfguilds/listener/JoinListener.java | 29 +- .../tfguilds/sql/SQLDatabase.java | 109 +- .../tfguilds/sql/SQLGuildData.java | 229 ---- .../tfguilds/sql/SQLRankData.java | 150 --- .../tfguilds/sql/SQLUserData.java | 155 --- .../tfguilds/sql/SQLWarpData.java | 134 --- .../tfguilds/sql/SQLWorldData.java | 123 -- .../me/totalfreedom/tfguilds/user/User.java | 28 - .../me/totalfreedom/tfguilds/util/GLog.java | 30 - .../me/totalfreedom/tfguilds/util/GUtil.java | 76 +- .../tfguilds/util/PaginationList.java | 3 +- src/main/resources/config.yml | 22 +- src/main/resources/database.db | 0 src/main/resources/plugin.yml | 20 +- 96 files changed, 3018 insertions(+), 4291 deletions(-) create mode 100644 src/main/java/me/totalfreedom/tfguilds/TFMBridge.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/bridge/TFMBridge.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/AddModSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/AddModSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/ChatSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/ChatSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/CreateRankSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/CreateSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/CreateSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/DeleteRankSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/DeleteWarpSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/DisbandSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/DisbandSubcommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/GuildChatCommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/HelpSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/HelpSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/HomeSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/HomeSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/InfoSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/InfoSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/InviteSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/InviteSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/JoinSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/JoinSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/KickSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/KickSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/LeaveSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/LeaveSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/ListSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/ListSubcommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/MOTDSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/MotdSubCommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/RemoveModSubcommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/RenameSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/RosterSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/RosterSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetDefaultRankSubcommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetMemberSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetOwnerSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetRankSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetRankSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetStateSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetStateSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SetWarpSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/SubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/TPSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/TagSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/TagSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/ToggleTagSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/ToggleTagsSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/TpSubCommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/WarpSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/WarpSubcommand.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/command/WarpsSubCommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/command/WarpsSubcommand.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/guild/GuildRank.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/guild/GuildState.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/guild/GuildWarp.java create mode 100644 src/main/java/me/totalfreedom/tfguilds/guild/User.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/sql/SQLGuildData.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/sql/SQLRankData.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/sql/SQLUserData.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/sql/SQLWarpData.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/sql/SQLWorldData.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/user/User.java delete mode 100644 src/main/java/me/totalfreedom/tfguilds/util/GLog.java delete mode 100644 src/main/resources/database.db 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 @@ - - - - \ 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 @@