diff --git a/pom.xml b/pom.xml index 06875da..ad7596d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.refracdevelopment SimpleTags - 1.0-beta.2 + 1.0-beta.3 jar SimpleTags @@ -79,6 +79,10 @@ jitpack.io https://jitpack.io + + AlessioDP + https://repo.alessiodp.com/releases/ + codemc-repo https://repo.codemc.org/repository/maven-public/ @@ -90,7 +94,13 @@ org.spigotmc spigot-api - 1.16.5-R0.1-SNAPSHOT + 1.8.8-R0.1-SNAPSHOT + provided + + + org.spigotmc + spigot-api + 1.20-R0.1-SNAPSHOT provided @@ -120,12 +130,24 @@ HeadDatabase-API 1.3.1 provided + + + io.papermc.paper + paper-api + + com.github.Tweetzy Skulls 3.10.0 provided + + + me.TechsCode + UltraEconomyAPI + + de.tr7zw @@ -133,5 +155,16 @@ 2.11.3 provided + + net.byteflux + libby-bukkit + 1.3.0 + + + org.mariadb.jdbc + mariadb-java-client + 3.1.4 + provided + diff --git a/src/main/java/me/refracdevelopment/simpletags/SimpleTags.java b/src/main/java/me/refracdevelopment/simpletags/SimpleTags.java index 30ecb19..9031b7c 100644 --- a/src/main/java/me/refracdevelopment/simpletags/SimpleTags.java +++ b/src/main/java/me/refracdevelopment/simpletags/SimpleTags.java @@ -6,14 +6,23 @@ import dev.rosewood.rosegarden.manager.Manager; import dev.rosewood.rosegarden.utils.NMSUtil; import lombok.Getter; -import me.refracdevelopment.simpletags.config.*; -import me.refracdevelopment.simpletags.data.ProfileManager; -import me.refracdevelopment.simpletags.database.DataType; -import me.refracdevelopment.simpletags.database.MySQLManager; import me.refracdevelopment.simpletags.listeners.ChatListener; import me.refracdevelopment.simpletags.listeners.MenuListener; import me.refracdevelopment.simpletags.listeners.PlayerListener; -import me.refracdevelopment.simpletags.manager.*; +import me.refracdevelopment.simpletags.manager.CommandManager; +import me.refracdevelopment.simpletags.manager.MenuManager; +import me.refracdevelopment.simpletags.manager.TagManager; +import me.refracdevelopment.simpletags.manager.configuration.ConfigurationManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.cache.Config; +import me.refracdevelopment.simpletags.manager.configuration.cache.ConfigFile; +import me.refracdevelopment.simpletags.manager.configuration.cache.Menus; +import me.refracdevelopment.simpletags.manager.configuration.cache.Tags; +import me.refracdevelopment.simpletags.manager.data.DataType; +import me.refracdevelopment.simpletags.manager.data.MySQLManager; +import me.refracdevelopment.simpletags.manager.data.PlayerMapper; +import me.refracdevelopment.simpletags.player.data.ProfileManager; +import me.refracdevelopment.simpletags.utilities.DownloadUtil; import me.refracdevelopment.simpletags.utilities.Tasks; import me.refracdevelopment.simpletags.utilities.chat.Color; import me.refracdevelopment.simpletags.utilities.chat.PAPIExpansion; @@ -56,6 +65,8 @@ public void enable() { long startTiming = System.currentTimeMillis(); PluginManager pluginManager = this.getServer().getPluginManager(); + DownloadUtil.downloadAndEnable(); + // Check if the server is on 1.7 if (NMSUtil.getVersionNumber() <= 7) { Color.log("&cSimpleTags 1.7 is in legacy mode, please update to 1.8+"); @@ -63,6 +74,13 @@ public void enable() { return; } + // Make sure the server has PlaceholderAPI + if (pluginManager.getPlugin("PlaceholderAPI") == null) { + Color.log("&cPlease install PlaceholderAPI onto your server to use this plugin."); + pluginManager.disablePlugin(this); + return; + } + // Make sure the server has NBTAPI if (pluginManager.getPlugin("NBTAPI") == null) { Color.log("&cPlease install NBTAPI onto your server to use this plugin."); @@ -101,7 +119,11 @@ public void enable() { @Override public void disable() { - // unused + // Plugin shutdown logic + if (dataType == DataType.MYSQL) { + mySQLManager.shutdown(); + } + this.getServer().getScheduler().cancelTasks(this); } @Override @@ -112,24 +134,25 @@ protected List> getManagerLoadPriority() { public void loadFiles() { tagsFile = new ConfigFile(this, "tags.yml"); menusFile = new ConfigFile(this, "menus.yml"); - tagsFile.load(); - menusFile.load(); Config.loadConfig(); Tags.loadConfig(); Menus.loadConfig(); } private void loadManagers() { - if (Config.DATA_TYPE.equalsIgnoreCase("MYSQL")) { - dataType = DataType.MYSQL; - mySQLManager = new MySQLManager(this); - getMySQLManager().connect(); - getMySQLManager().createT(); - Color.log("&aEnabled MySQL support!"); - } else { - dataType = DataType.FLAT_FILE; - playerMapper = new PlayerMapper(getDataFolder().getAbsolutePath() + File.separator + "playerdata"); - Color.log("&aEnabled Flat File support!"); + switch (Config.DATA_TYPE.toUpperCase()) { + case "MYSQL": + dataType = DataType.MYSQL; + mySQLManager = new MySQLManager(this); + getMySQLManager().connect(); + getMySQLManager().createT(); + Color.log("&aEnabled MySQL support!"); + break; + case "FLAT_FILE": + dataType = DataType.FLAT_FILE; + playerMapper = new PlayerMapper(getDataFolder().getAbsolutePath() + File.separator + "playerdata"); + Color.log("&aEnabled Flat File support!"); + break; } profileManager = new ProfileManager(); diff --git a/src/main/java/me/refracdevelopment/simpletags/commands/command/CreateCommand.java b/src/main/java/me/refracdevelopment/simpletags/commands/command/CreateCommand.java index b09fa86..5c4b3a7 100644 --- a/src/main/java/me/refracdevelopment/simpletags/commands/command/CreateCommand.java +++ b/src/main/java/me/refracdevelopment/simpletags/commands/command/CreateCommand.java @@ -7,10 +7,10 @@ import dev.rosewood.rosegarden.command.framework.annotation.RoseExecutable; import dev.rosewood.rosegarden.utils.StringPlaceholders; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.config.ConfigFile; -import me.refracdevelopment.simpletags.config.Tags; import me.refracdevelopment.simpletags.data.Tag; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.cache.ConfigFile; +import me.refracdevelopment.simpletags.manager.configuration.cache.Tags; import me.refracdevelopment.simpletags.utilities.Permissions; import me.refracdevelopment.simpletags.utilities.chat.Placeholders; import org.bukkit.entity.Player; diff --git a/src/main/java/me/refracdevelopment/simpletags/commands/command/DeleteCommand.java b/src/main/java/me/refracdevelopment/simpletags/commands/command/DeleteCommand.java index 6360974..03cbf29 100644 --- a/src/main/java/me/refracdevelopment/simpletags/commands/command/DeleteCommand.java +++ b/src/main/java/me/refracdevelopment/simpletags/commands/command/DeleteCommand.java @@ -7,9 +7,9 @@ import dev.rosewood.rosegarden.command.framework.annotation.RoseExecutable; import dev.rosewood.rosegarden.utils.StringPlaceholders; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.config.ConfigFile; -import me.refracdevelopment.simpletags.config.Tags; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.cache.ConfigFile; +import me.refracdevelopment.simpletags.manager.configuration.cache.Tags; import me.refracdevelopment.simpletags.utilities.Permissions; import me.refracdevelopment.simpletags.utilities.chat.Placeholders; import org.bukkit.entity.Player; diff --git a/src/main/java/me/refracdevelopment/simpletags/commands/command/EditCommand.java b/src/main/java/me/refracdevelopment/simpletags/commands/command/EditCommand.java index db2e6be..e77b9b3 100644 --- a/src/main/java/me/refracdevelopment/simpletags/commands/command/EditCommand.java +++ b/src/main/java/me/refracdevelopment/simpletags/commands/command/EditCommand.java @@ -7,9 +7,9 @@ import dev.rosewood.rosegarden.command.framework.annotation.RoseExecutable; import dev.rosewood.rosegarden.utils.StringPlaceholders; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.config.ConfigFile; -import me.refracdevelopment.simpletags.config.Tags; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.cache.ConfigFile; +import me.refracdevelopment.simpletags.manager.configuration.cache.Tags; import me.refracdevelopment.simpletags.utilities.Permissions; import me.refracdevelopment.simpletags.utilities.chat.Placeholders; import org.bukkit.entity.Player; diff --git a/src/main/java/me/refracdevelopment/simpletags/commands/command/ListCommand.java b/src/main/java/me/refracdevelopment/simpletags/commands/command/ListCommand.java index c8d6143..0431f88 100644 --- a/src/main/java/me/refracdevelopment/simpletags/commands/command/ListCommand.java +++ b/src/main/java/me/refracdevelopment/simpletags/commands/command/ListCommand.java @@ -6,7 +6,7 @@ import dev.rosewood.rosegarden.command.framework.RoseCommandWrapper; import dev.rosewood.rosegarden.command.framework.annotation.RoseExecutable; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; import me.refracdevelopment.simpletags.utilities.Permissions; import org.bukkit.entity.Player; diff --git a/src/main/java/me/refracdevelopment/simpletags/commands/command/ReloadCommand.java b/src/main/java/me/refracdevelopment/simpletags/commands/command/ReloadCommand.java index 4a6dfc0..f433245 100644 --- a/src/main/java/me/refracdevelopment/simpletags/commands/command/ReloadCommand.java +++ b/src/main/java/me/refracdevelopment/simpletags/commands/command/ReloadCommand.java @@ -6,7 +6,7 @@ import dev.rosewood.rosegarden.command.framework.RoseCommandWrapper; import dev.rosewood.rosegarden.command.framework.annotation.RoseExecutable; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; import me.refracdevelopment.simpletags.utilities.Permissions; import me.refracdevelopment.simpletags.utilities.Tasks; diff --git a/src/main/java/me/refracdevelopment/simpletags/commands/command/SetCommand.java b/src/main/java/me/refracdevelopment/simpletags/commands/command/SetCommand.java index aeab6c1..8265cf3 100644 --- a/src/main/java/me/refracdevelopment/simpletags/commands/command/SetCommand.java +++ b/src/main/java/me/refracdevelopment/simpletags/commands/command/SetCommand.java @@ -8,9 +8,9 @@ import dev.rosewood.rosegarden.command.framework.annotation.RoseExecutable; import dev.rosewood.rosegarden.utils.StringPlaceholders; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.data.ProfileData; import me.refracdevelopment.simpletags.data.Tag; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; +import me.refracdevelopment.simpletags.player.data.ProfileData; import me.refracdevelopment.simpletags.utilities.Permissions; import me.refracdevelopment.simpletags.utilities.Tasks; import me.refracdevelopment.simpletags.utilities.Utilities; diff --git a/src/main/java/me/refracdevelopment/simpletags/commands/command/TagsCommand.java b/src/main/java/me/refracdevelopment/simpletags/commands/command/TagsCommand.java index 152e8de..2b4be04 100644 --- a/src/main/java/me/refracdevelopment/simpletags/commands/command/TagsCommand.java +++ b/src/main/java/me/refracdevelopment/simpletags/commands/command/TagsCommand.java @@ -6,7 +6,7 @@ import dev.rosewood.rosegarden.command.framework.RoseCommandWrapper; import dev.rosewood.rosegarden.command.framework.annotation.RoseExecutable; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; import me.refracdevelopment.simpletags.menu.TagsMenu; import org.bukkit.entity.Player; diff --git a/src/main/java/me/refracdevelopment/simpletags/commands/command/VersionCommand.java b/src/main/java/me/refracdevelopment/simpletags/commands/command/VersionCommand.java index 9be3fc0..5707719 100644 --- a/src/main/java/me/refracdevelopment/simpletags/commands/command/VersionCommand.java +++ b/src/main/java/me/refracdevelopment/simpletags/commands/command/VersionCommand.java @@ -6,7 +6,7 @@ import dev.rosewood.rosegarden.command.framework.RoseCommandWrapper; import dev.rosewood.rosegarden.command.framework.annotation.RoseExecutable; import dev.rosewood.rosegarden.utils.StringPlaceholders; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; import me.refracdevelopment.simpletags.utilities.Permissions; public class VersionCommand extends RoseCommand { diff --git a/src/main/java/me/refracdevelopment/simpletags/database/DataType.java b/src/main/java/me/refracdevelopment/simpletags/database/DataType.java deleted file mode 100644 index 437cabb..0000000 --- a/src/main/java/me/refracdevelopment/simpletags/database/DataType.java +++ /dev/null @@ -1,5 +0,0 @@ -package me.refracdevelopment.simpletags.database; - -public enum DataType { - MYSQL, FLAT_FILE -} \ No newline at end of file diff --git a/src/main/java/me/refracdevelopment/simpletags/listeners/ChatListener.java b/src/main/java/me/refracdevelopment/simpletags/listeners/ChatListener.java index 86cf519..370cbd6 100644 --- a/src/main/java/me/refracdevelopment/simpletags/listeners/ChatListener.java +++ b/src/main/java/me/refracdevelopment/simpletags/listeners/ChatListener.java @@ -1,12 +1,14 @@ package me.refracdevelopment.simpletags.listeners; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.config.Config; -import me.refracdevelopment.simpletags.data.ProfileData; +import me.refracdevelopment.simpletags.manager.configuration.cache.Config; +import me.refracdevelopment.simpletags.player.data.ProfileData; +import me.refracdevelopment.simpletags.utilities.chat.Color; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; public class ChatListener implements Listener { @@ -19,4 +21,14 @@ public void onChat(AsyncPlayerChatEvent event) { event.setFormat(profile.getTagPrefix() + event.getFormat()); } } + + @EventHandler + public void onReload(PlayerCommandPreprocessEvent event) { + Player player = event.getPlayer(); + + if (event.getMessage().equalsIgnoreCase("/reload") || + event.getMessage().equalsIgnoreCase("/reload confirm")) { + Color.sendMessage(player, "%prefix% Use of /reload is not recommended as it can cause issues often cases. Please restart your server when possible."); + } + } } \ No newline at end of file diff --git a/src/main/java/me/refracdevelopment/simpletags/listeners/PlayerListener.java b/src/main/java/me/refracdevelopment/simpletags/listeners/PlayerListener.java index ce5564b..8eb5144 100644 --- a/src/main/java/me/refracdevelopment/simpletags/listeners/PlayerListener.java +++ b/src/main/java/me/refracdevelopment/simpletags/listeners/PlayerListener.java @@ -1,42 +1,38 @@ package me.refracdevelopment.simpletags.listeners; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.data.Profile; +import me.refracdevelopment.simpletags.manager.configuration.cache.Config; +import me.refracdevelopment.simpletags.player.Profile; import me.refracdevelopment.simpletags.utilities.Tasks; import me.refracdevelopment.simpletags.utilities.Utilities; +import me.refracdevelopment.simpletags.utilities.chat.Color; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; public class PlayerListener implements Listener { @EventHandler - public void onLogin(AsyncPlayerPreLoginEvent event) { - try { - SimpleTags.getInstance().getProfileManager().handleProfileCreation(event.getUniqueId(), event.getName()); - } catch (NullPointerException exception) { - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_FULL, "&cERROR: Could not create profile!"); - } + public void onLogin(PlayerLoginEvent event) { + Player player = event.getPlayer(); + + SimpleTags.getInstance().getProfileManager().handleProfileCreation(player.getUniqueId(), player.getName()); + + Profile profile = SimpleTags.getInstance().getProfileManager().getProfile(player.getUniqueId()); + Tasks.runAsync(SimpleTags.getInstance(), () -> profile.getData().load()); } @EventHandler public void onJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); Profile profile = SimpleTags.getInstance().getProfileManager().getProfile(player.getUniqueId()); - - try { - Tasks.runAsync(SimpleTags.getInstance(), () -> profile.getData().load()); - } catch (NullPointerException exception) { - player.kickPlayer(ChatColor.RED + "ERROR: Profile returned null."); - return; - } - if (profile == null || profile.getData() == null) { - player.kickPlayer(ChatColor.RED + "ERROR: Profile returned null."); + player.kickPlayer(Color.translate(Config.KICK_MESSAGES_ERROR)); return; } diff --git a/src/main/java/me/refracdevelopment/simpletags/manager/TagManager.java b/src/main/java/me/refracdevelopment/simpletags/manager/TagManager.java index 3ec5401..ef759fc 100644 --- a/src/main/java/me/refracdevelopment/simpletags/manager/TagManager.java +++ b/src/main/java/me/refracdevelopment/simpletags/manager/TagManager.java @@ -1,5 +1,6 @@ package me.refracdevelopment.simpletags.manager; +import lombok.Getter; import me.refracdevelopment.simpletags.SimpleTags; import me.refracdevelopment.simpletags.data.Tag; import me.refracdevelopment.simpletags.utilities.chat.Color; @@ -8,6 +9,7 @@ import java.util.List; import java.util.Optional; +@Getter public class TagManager { private final List loadedTags = new ArrayList<>(); @@ -39,10 +41,6 @@ public Tag getCachedTag(String name) { return null; } - public List getLoadedTags() { - return loadedTags; - } - public void updateTags() { SimpleTags.getInstance().getProfileManager().getProfiles().values().forEach(profile -> { if (getCachedTag(profile.getData().getTag()) == null) { diff --git a/src/main/java/me/refracdevelopment/simpletags/manager/ConfigurationManager.java b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/ConfigurationManager.java similarity index 96% rename from src/main/java/me/refracdevelopment/simpletags/manager/ConfigurationManager.java rename to src/main/java/me/refracdevelopment/simpletags/manager/configuration/ConfigurationManager.java index b24f2e8..fb089c1 100644 --- a/src/main/java/me/refracdevelopment/simpletags/manager/ConfigurationManager.java +++ b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/ConfigurationManager.java @@ -1,4 +1,4 @@ -package me.refracdevelopment.simpletags.manager; +package me.refracdevelopment.simpletags.manager.configuration; import dev.rosewood.rosegarden.RosePlugin; import dev.rosewood.rosegarden.config.CommentedFileConfiguration; @@ -10,7 +10,6 @@ public class ConfigurationManager extends AbstractConfigurationManager { public enum Setting implements RoseSetting { // Config Settings - DEBUG("debug", false, "Used to debug errors"), USE_CHAT("use-chat", false, "Automatically add tags to chat behind a player's name."), DATA_TYPE("data-type", "FLAT_FILE", "Choose your data saving type:", "MYSQL - Database saving", "FLAT_FILE - Local Json file saving in the playerdata/player.json file"), MYSQL_HOST("mysql.host", "127.0.0.1"), diff --git a/src/main/java/me/refracdevelopment/simpletags/manager/LocaleManager.java b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/LocaleManager.java similarity index 79% rename from src/main/java/me/refracdevelopment/simpletags/manager/LocaleManager.java rename to src/main/java/me/refracdevelopment/simpletags/manager/configuration/LocaleManager.java index ee3a568..c0f802f 100644 --- a/src/main/java/me/refracdevelopment/simpletags/manager/LocaleManager.java +++ b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/LocaleManager.java @@ -1,4 +1,4 @@ -package me.refracdevelopment.simpletags.manager; +package me.refracdevelopment.simpletags.manager.configuration; import dev.rosewood.rosegarden.RosePlugin; import dev.rosewood.rosegarden.manager.AbstractLocaleManager; diff --git a/src/main/java/me/refracdevelopment/simpletags/config/Config.java b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/Config.java similarity index 51% rename from src/main/java/me/refracdevelopment/simpletags/config/Config.java rename to src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/Config.java index c060330..8c77e3c 100644 --- a/src/main/java/me/refracdevelopment/simpletags/config/Config.java +++ b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/Config.java @@ -1,18 +1,22 @@ -package me.refracdevelopment.simpletags.config; +package me.refracdevelopment.simpletags.manager.configuration.cache; -import me.refracdevelopment.simpletags.manager.ConfigurationManager; +import me.refracdevelopment.simpletags.SimpleTags; +import me.refracdevelopment.simpletags.manager.configuration.ConfigurationManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; import me.refracdevelopment.simpletags.utilities.chat.Color; public class Config { - public static boolean DEBUG; public static boolean USE_CHAT; public static String DATA_TYPE; + public static String KICK_MESSAGES_ERROR; public static void loadConfig() { - DEBUG = ConfigurationManager.Setting.DEBUG.getBoolean(); + final LocaleManager localeManager = SimpleTags.getInstance().getManager(LocaleManager.class); + USE_CHAT = ConfigurationManager.Setting.USE_CHAT.getBoolean(); DATA_TYPE = ConfigurationManager.Setting.DATA_TYPE.getString(); + KICK_MESSAGES_ERROR = localeManager.getLocaleMessage("kick-messages-error"); Color.log("&c=========================================="); Color.log("&eAll files have been loaded correctly!"); diff --git a/src/main/java/me/refracdevelopment/simpletags/config/ConfigFile.java b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/ConfigFile.java similarity index 97% rename from src/main/java/me/refracdevelopment/simpletags/config/ConfigFile.java rename to src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/ConfigFile.java index 7cbaf0d..134d0ab 100644 --- a/src/main/java/me/refracdevelopment/simpletags/config/ConfigFile.java +++ b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/ConfigFile.java @@ -1,4 +1,4 @@ -package me.refracdevelopment.simpletags.config; +package me.refracdevelopment.simpletags.manager.configuration.cache; import me.refracdevelopment.simpletags.utilities.chat.Color; import org.bukkit.ChatColor; diff --git a/src/main/java/me/refracdevelopment/simpletags/config/Menus.java b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/Menus.java similarity index 86% rename from src/main/java/me/refracdevelopment/simpletags/config/Menus.java rename to src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/Menus.java index 0f4f9ae..62e4bf6 100644 --- a/src/main/java/me/refracdevelopment/simpletags/config/Menus.java +++ b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/Menus.java @@ -1,4 +1,4 @@ -package me.refracdevelopment.simpletags.config; +package me.refracdevelopment.simpletags.manager.configuration.cache; import me.refracdevelopment.simpletags.SimpleTags; import org.bukkit.configuration.ConfigurationSection; diff --git a/src/main/java/me/refracdevelopment/simpletags/config/Tags.java b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/Tags.java similarity index 83% rename from src/main/java/me/refracdevelopment/simpletags/config/Tags.java rename to src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/Tags.java index 5a3be2e..7c20124 100644 --- a/src/main/java/me/refracdevelopment/simpletags/config/Tags.java +++ b/src/main/java/me/refracdevelopment/simpletags/manager/configuration/cache/Tags.java @@ -1,4 +1,4 @@ -package me.refracdevelopment.simpletags.config; +package me.refracdevelopment.simpletags.manager.configuration.cache; import me.refracdevelopment.simpletags.SimpleTags; import org.bukkit.configuration.ConfigurationSection; diff --git a/src/main/java/me/refracdevelopment/simpletags/manager/data/DataType.java b/src/main/java/me/refracdevelopment/simpletags/manager/data/DataType.java new file mode 100644 index 0000000..d37673c --- /dev/null +++ b/src/main/java/me/refracdevelopment/simpletags/manager/data/DataType.java @@ -0,0 +1,5 @@ +package me.refracdevelopment.simpletags.manager.data; + +public enum DataType { + MYSQL, FLAT_FILE +} \ No newline at end of file diff --git a/src/main/java/me/refracdevelopment/simpletags/database/MySQLManager.java b/src/main/java/me/refracdevelopment/simpletags/manager/data/MySQLManager.java similarity index 88% rename from src/main/java/me/refracdevelopment/simpletags/database/MySQLManager.java rename to src/main/java/me/refracdevelopment/simpletags/manager/data/MySQLManager.java index aaa3f10..7861c73 100644 --- a/src/main/java/me/refracdevelopment/simpletags/database/MySQLManager.java +++ b/src/main/java/me/refracdevelopment/simpletags/manager/data/MySQLManager.java @@ -1,9 +1,9 @@ -package me.refracdevelopment.simpletags.database; +package me.refracdevelopment.simpletags.manager.data; import dev.rosewood.rosegarden.lib.hikaricp.HikariConfig; import dev.rosewood.rosegarden.lib.hikaricp.HikariDataSource; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.manager.ConfigurationManager; +import me.refracdevelopment.simpletags.manager.configuration.ConfigurationManager; import me.refracdevelopment.simpletags.utilities.Tasks; import me.refracdevelopment.simpletags.utilities.chat.Color; @@ -26,16 +26,16 @@ public MySQLManager(SimpleTags plugin) { } public void createT() { - Tasks.runAsync(plugin, () -> createTables()); + Tasks.runAsync(plugin, this::createTables); } public boolean connect() { try { Color.log("&eConnecting to MySQL..."); HikariConfig config = new HikariConfig(); - Class.forName("com.mysql.cj.jdbc.Driver"); - config.setDriverClassName("com.mysql.cj.jdbc.Driver"); - config.setJdbcUrl("jdbc:mysql://" + host + ':' + port + '/' + database); + Class.forName("org.mariadb.jdbc.Driver"); + config.setDriverClassName("org.mariadb.jdbc.Driver"); + config.setJdbcUrl("jdbc:mariadb://" + host + ':' + port + '/' + database); config.setUsername(username); config.setPassword(password); config.addDataSourceProperty("cachePrepStmts", "true"); @@ -57,7 +57,11 @@ public void shutdown() { public void createTables() { - createTable("SimpleTags", "uuid VARCHAR(36) NOT NULL PRIMARY KEY, name VARCHAR(16), tag VARCHAR(50), tagPrefix VARCHAR(50)"); + createTable("SimpleTags", + "uuid VARCHAR(36) NOT NULL PRIMARY KEY," + + "name VARCHAR(255)," + + "tag VARCHAR(255)," + + "tagPrefix VARCHAR(255)"); } public boolean isInitiated() { diff --git a/src/main/java/me/refracdevelopment/simpletags/config/PlayerMapper.java b/src/main/java/me/refracdevelopment/simpletags/manager/data/PlayerMapper.java similarity index 98% rename from src/main/java/me/refracdevelopment/simpletags/config/PlayerMapper.java rename to src/main/java/me/refracdevelopment/simpletags/manager/data/PlayerMapper.java index ee3aa5b..41fe1af 100644 --- a/src/main/java/me/refracdevelopment/simpletags/config/PlayerMapper.java +++ b/src/main/java/me/refracdevelopment/simpletags/manager/data/PlayerMapper.java @@ -1,4 +1,4 @@ -package me.refracdevelopment.simpletags.config; +package me.refracdevelopment.simpletags.manager.data; import com.google.gson.JsonObject; import com.google.gson.JsonParser; diff --git a/src/main/java/me/refracdevelopment/simpletags/database/SelectCall.java b/src/main/java/me/refracdevelopment/simpletags/manager/data/SelectCall.java similarity index 64% rename from src/main/java/me/refracdevelopment/simpletags/database/SelectCall.java rename to src/main/java/me/refracdevelopment/simpletags/manager/data/SelectCall.java index d878d2d..f1f89a6 100644 --- a/src/main/java/me/refracdevelopment/simpletags/database/SelectCall.java +++ b/src/main/java/me/refracdevelopment/simpletags/manager/data/SelectCall.java @@ -1,4 +1,4 @@ -package me.refracdevelopment.simpletags.database; +package me.refracdevelopment.simpletags.manager.data; import java.sql.ResultSet; diff --git a/src/main/java/me/refracdevelopment/simpletags/menu/TagsItem.java b/src/main/java/me/refracdevelopment/simpletags/menu/TagsItem.java index 441d076..5e8a16b 100644 --- a/src/main/java/me/refracdevelopment/simpletags/menu/TagsItem.java +++ b/src/main/java/me/refracdevelopment/simpletags/menu/TagsItem.java @@ -9,9 +9,9 @@ import lombok.Setter; import me.arcaniax.hdb.api.HeadDatabaseAPI; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.config.Menus; -import me.refracdevelopment.simpletags.data.ProfileData; import me.refracdevelopment.simpletags.data.Tag; +import me.refracdevelopment.simpletags.manager.configuration.cache.Menus; +import me.refracdevelopment.simpletags.player.data.ProfileData; import me.refracdevelopment.simpletags.utilities.ItemBuilder; import me.refracdevelopment.simpletags.utilities.Utilities; import me.refracdevelopment.simpletags.utilities.chat.Color; diff --git a/src/main/java/me/refracdevelopment/simpletags/menu/TagsMenu.java b/src/main/java/me/refracdevelopment/simpletags/menu/TagsMenu.java index 75305de..cd78166 100644 --- a/src/main/java/me/refracdevelopment/simpletags/menu/TagsMenu.java +++ b/src/main/java/me/refracdevelopment/simpletags/menu/TagsMenu.java @@ -2,10 +2,11 @@ import de.tr7zw.nbtapi.NBTItem; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.config.Menus; -import me.refracdevelopment.simpletags.data.ProfileData; import me.refracdevelopment.simpletags.data.Tag; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.cache.Config; +import me.refracdevelopment.simpletags.manager.configuration.cache.Menus; +import me.refracdevelopment.simpletags.player.data.ProfileData; import me.refracdevelopment.simpletags.utilities.Utilities; import me.refracdevelopment.simpletags.utilities.chat.Color; import me.refracdevelopment.simpletags.utilities.chat.Placeholders; @@ -43,19 +44,19 @@ public void handleMenu(InventoryClickEvent e) { if (e.getCurrentItem() == null) return; if (e.getCurrentItem().getItemMeta() == null) return; - if (e.getCurrentItem().getType().equals(Utilities.getMaterial("DARK_OAK_BUTTON").parseMaterial())) { + if (e.getCurrentItem().getType().equals(Utilities.getMaterial(Menus.TAGS_ITEMS.getString("left.material")).parseMaterial())) { if (ChatColor.stripColor(e.getCurrentItem().getItemMeta().getDisplayName()).equalsIgnoreCase("Left")) { if (page != 0) { page = page - 1; super.open(); } - } else if (ChatColor.stripColor(e.getCurrentItem().getItemMeta().getDisplayName()).equalsIgnoreCase("Right")) { - if (!((index + 1) >= plugin.getTagManager().getLoadedTags().size())) { - page = page + 1; - super.open(); - } } - } else if (e.getCurrentItem().getType().equals(Utilities.getMaterial("BARRIER").parseMaterial())) { + } else if (e.getCurrentItem().getType().equals(Utilities.getMaterial(Menus.TAGS_ITEMS.getString("right.material")).parseMaterial())) { + if (!((index + 1) >= plugin.getTagManager().getLoadedTags().size())) { + page = page + 1; + super.open(); + } + } else if (e.getCurrentItem().getType().equals(Utilities.getMaterial(Menus.TAGS_ITEMS.getString("close.material")).parseMaterial())) { player.closeInventory(); } @@ -101,7 +102,7 @@ public void setMenuItems() { for (int i = 0; i < getMaxItemsPerPage(); i++) { index = getMaxItemsPerPage() * page + i; if (index >= tags.size()) break; - if (tags.get(index) != null && playerMenuUtility.getOwner().hasPermission("simpletags.tag." + tags.get(index).getConfigName())) { + if (tags.get(index) != null) { inventory.addItem(tags.get(index).toItemStack(playerMenuUtility.getOwner(), tags.get(index).getConfigName())); } } diff --git a/src/main/java/me/refracdevelopment/simpletags/data/Profile.java b/src/main/java/me/refracdevelopment/simpletags/player/Profile.java similarity index 80% rename from src/main/java/me/refracdevelopment/simpletags/data/Profile.java rename to src/main/java/me/refracdevelopment/simpletags/player/Profile.java index d5ddb07..1510bfb 100644 --- a/src/main/java/me/refracdevelopment/simpletags/data/Profile.java +++ b/src/main/java/me/refracdevelopment/simpletags/player/Profile.java @@ -1,8 +1,9 @@ -package me.refracdevelopment.simpletags.data; +package me.refracdevelopment.simpletags.player; import lombok.Getter; import lombok.Setter; import me.refracdevelopment.simpletags.SimpleTags; +import me.refracdevelopment.simpletags.player.data.ProfileData; import java.util.UUID; diff --git a/src/main/java/me/refracdevelopment/simpletags/data/ProfileData.java b/src/main/java/me/refracdevelopment/simpletags/player/data/ProfileData.java similarity index 95% rename from src/main/java/me/refracdevelopment/simpletags/data/ProfileData.java rename to src/main/java/me/refracdevelopment/simpletags/player/data/ProfileData.java index 9288169..f3c4130 100644 --- a/src/main/java/me/refracdevelopment/simpletags/data/ProfileData.java +++ b/src/main/java/me/refracdevelopment/simpletags/player/data/ProfileData.java @@ -1,9 +1,9 @@ -package me.refracdevelopment.simpletags.data; +package me.refracdevelopment.simpletags.player.data; import lombok.Getter; import lombok.Setter; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.database.DataType; +import me.refracdevelopment.simpletags.manager.data.DataType; import me.refracdevelopment.simpletags.utilities.chat.Color; import org.bukkit.entity.Player; diff --git a/src/main/java/me/refracdevelopment/simpletags/data/ProfileManager.java b/src/main/java/me/refracdevelopment/simpletags/player/data/ProfileManager.java similarity index 83% rename from src/main/java/me/refracdevelopment/simpletags/data/ProfileManager.java rename to src/main/java/me/refracdevelopment/simpletags/player/data/ProfileManager.java index 337e9e1..3d1b51d 100644 --- a/src/main/java/me/refracdevelopment/simpletags/data/ProfileManager.java +++ b/src/main/java/me/refracdevelopment/simpletags/player/data/ProfileManager.java @@ -1,6 +1,7 @@ -package me.refracdevelopment.simpletags.data; +package me.refracdevelopment.simpletags.player.data; import me.refracdevelopment.simpletags.SimpleTags; +import me.refracdevelopment.simpletags.player.Profile; import me.refracdevelopment.simpletags.utilities.Tasks; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -17,11 +18,9 @@ public ProfileManager() { // Refresh to remove profiles from a previous instance of plugin // This is basically /reload support (not recommended) Bukkit.getOnlinePlayers().forEach(onlinePlayer -> { - Tasks.runAsync(SimpleTags.getInstance(), () -> { - getProfiles().clear(); - handleProfileCreation(onlinePlayer.getUniqueId(), onlinePlayer.getName()); - getProfile(onlinePlayer.getUniqueId()).getData().load(); - }); + getProfiles().clear(); + handleProfileCreation(onlinePlayer.getUniqueId(), onlinePlayer.getName()); + Tasks.runAsync(SimpleTags.getInstance(), () -> getProfile(onlinePlayer.getUniqueId()).getData().load()); }); } diff --git a/src/main/java/me/refracdevelopment/simpletags/utilities/DownloadUtil.java b/src/main/java/me/refracdevelopment/simpletags/utilities/DownloadUtil.java new file mode 100644 index 0000000..2917e0a --- /dev/null +++ b/src/main/java/me/refracdevelopment/simpletags/utilities/DownloadUtil.java @@ -0,0 +1,20 @@ +package me.refracdevelopment.simpletags.utilities; + +import me.refracdevelopment.simpletags.SimpleTags; +import net.byteflux.libby.BukkitLibraryManager; +import net.byteflux.libby.Library; + +public class DownloadUtil { + + public static void downloadAndEnable() { + BukkitLibraryManager libraryManager = new BukkitLibraryManager(SimpleTags.getInstance()); + Library lib = Library.builder() + .groupId("org{}mariadb{}jdbc") // "{}" is replaced with ".", useful to avoid unwanted changes made by maven-shade-plugin + .artifactId("mariadb-java-client") + .version("3.1.4") + .build(); + + libraryManager.addMavenCentral(); + libraryManager.loadLibrary(lib); + } +} \ No newline at end of file diff --git a/src/main/java/me/refracdevelopment/simpletags/utilities/Utilities.java b/src/main/java/me/refracdevelopment/simpletags/utilities/Utilities.java index b4366f4..c51e343 100644 --- a/src/main/java/me/refracdevelopment/simpletags/utilities/Utilities.java +++ b/src/main/java/me/refracdevelopment/simpletags/utilities/Utilities.java @@ -2,8 +2,8 @@ import com.cryptomorin.xseries.XMaterial; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.database.DataType; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; +import me.refracdevelopment.simpletags.manager.data.DataType; import org.bukkit.Bukkit; import org.bukkit.entity.Player; diff --git a/src/main/java/me/refracdevelopment/simpletags/utilities/chat/Color.java b/src/main/java/me/refracdevelopment/simpletags/utilities/chat/Color.java index 5e99b53..b65afab 100644 --- a/src/main/java/me/refracdevelopment/simpletags/utilities/chat/Color.java +++ b/src/main/java/me/refracdevelopment/simpletags/utilities/chat/Color.java @@ -3,19 +3,17 @@ import dev.rosewood.rosegarden.hook.PlaceholderAPIHook; import dev.rosewood.rosegarden.utils.HexUtils; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.config.Config; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.jetbrains.annotations.Nullable; public class Color { public static String translate(CommandSender sender, String source) { source = Placeholders.setPlaceholders(sender, source); - if (sender instanceof Player && Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { + if (sender instanceof Player) { return PlaceholderAPIHook.applyPlaceholders((Player) sender, translate(source)); } else return translate(source); } @@ -24,21 +22,19 @@ public static String translate(String source) { return HexUtils.colorify(source); } - public static void log(String message) { + public static void sendMessage(Player player, String message) { final LocaleManager locale = SimpleTags.getInstance().getManager(LocaleManager.class); - String prefix = locale.getLocaleMessage("prefix"); + message = Placeholders.setPlaceholders(player, message); - locale.sendCustomMessage(Bukkit.getConsoleSender(), prefix + message); + locale.sendCustomMessage(player, message); } - public static void sendDebug(@Nullable CommandSender sender, String message) { - if (!Config.DEBUG) return; - if (sender != null) { - sender.sendMessage(translate("&7Debug: " + message)); - return; - } + public static void log(String message) { + final LocaleManager locale = SimpleTags.getInstance().getManager(LocaleManager.class); + + String prefix = locale.getLocaleMessage("prefix"); - log("&7Debug: " + message); + locale.sendCustomMessage(Bukkit.getConsoleSender(), prefix + message); } } diff --git a/src/main/java/me/refracdevelopment/simpletags/utilities/chat/PAPIExpansion.java b/src/main/java/me/refracdevelopment/simpletags/utilities/chat/PAPIExpansion.java index 5702f4d..6d649ff 100644 --- a/src/main/java/me/refracdevelopment/simpletags/utilities/chat/PAPIExpansion.java +++ b/src/main/java/me/refracdevelopment/simpletags/utilities/chat/PAPIExpansion.java @@ -2,7 +2,7 @@ import me.clip.placeholderapi.expansion.PlaceholderExpansion; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.data.ProfileData; +import me.refracdevelopment.simpletags.player.data.ProfileData; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/refracdevelopment/simpletags/utilities/chat/Placeholders.java b/src/main/java/me/refracdevelopment/simpletags/utilities/chat/Placeholders.java index fb47f9c..81a52ca 100644 --- a/src/main/java/me/refracdevelopment/simpletags/utilities/chat/Placeholders.java +++ b/src/main/java/me/refracdevelopment/simpletags/utilities/chat/Placeholders.java @@ -2,8 +2,8 @@ import dev.rosewood.rosegarden.utils.StringPlaceholders; import me.refracdevelopment.simpletags.SimpleTags; -import me.refracdevelopment.simpletags.data.ProfileData; -import me.refracdevelopment.simpletags.manager.LocaleManager; +import me.refracdevelopment.simpletags.manager.configuration.LocaleManager; +import me.refracdevelopment.simpletags.player.data.ProfileData; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/me/refracdevelopment/simpletags/utilities/menu/PaginatedMenu.java b/src/main/java/me/refracdevelopment/simpletags/utilities/menu/PaginatedMenu.java index 9128a6c..73b50cc 100644 --- a/src/main/java/me/refracdevelopment/simpletags/utilities/menu/PaginatedMenu.java +++ b/src/main/java/me/refracdevelopment/simpletags/utilities/menu/PaginatedMenu.java @@ -1,12 +1,14 @@ package me.refracdevelopment.simpletags.utilities.menu; -import me.refracdevelopment.simpletags.config.Menus; +import lombok.Getter; +import me.refracdevelopment.simpletags.manager.configuration.cache.Menus; import me.refracdevelopment.simpletags.utilities.Utilities; import me.refracdevelopment.simpletags.utilities.chat.Color; /** * A class extending the functionality of the regular Menu, but making it Paginated */ +@Getter public abstract class PaginatedMenu extends Menu { protected int page = 0; @@ -44,7 +46,4 @@ public void addMenuBorder() { } } - public int getMaxItemsPerPage() { - return maxItemsPerPage; - } } \ No newline at end of file diff --git a/src/main/java/me/refracdevelopment/simpletags/utilities/menu/PlayerMenuUtility.java b/src/main/java/me/refracdevelopment/simpletags/utilities/menu/PlayerMenuUtility.java index b095696..aba8f7e 100644 --- a/src/main/java/me/refracdevelopment/simpletags/utilities/menu/PlayerMenuUtility.java +++ b/src/main/java/me/refracdevelopment/simpletags/utilities/menu/PlayerMenuUtility.java @@ -1,5 +1,6 @@ package me.refracdevelopment.simpletags.utilities.menu; +import lombok.Getter; import org.bukkit.entity.Player; /** @@ -7,6 +8,7 @@ * menu system no matter how many inventories are opened or closed. * Each player has one of these objects, and only one. */ +@Getter public class PlayerMenuUtility { private final Player owner; @@ -15,7 +17,4 @@ public PlayerMenuUtility(Player p) { this.owner = p; } - public Player getOwner() { - return owner; - } } \ No newline at end of file diff --git a/src/main/resources/locale/en_US.yml b/src/main/resources/locale/en_US.yml index 9f7e4f1..93fcf21 100644 --- a/src/main/resources/locale/en_US.yml +++ b/src/main/resources/locale/en_US.yml @@ -16,6 +16,9 @@ tag-set: '&aSet %player%''s &atag to %tag-name%&a.' tag-updated: '&aYour tag has been updated to %tag-prefix%&a.' tag-reset: '&aYour tag has been reset.' +# Kick Messages +kick-messages-error: '&cERROR: Profile returned null.' + # Base Command Message base-command-color: '&e' base-command-help: '&eUse &b/%cmd% help &efor command information.' diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index b25a048..1bdc64d 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -9,7 +9,7 @@ softdepend: - Skulls - HeadDatabase description: A simple tags plugin -website: https://discord.refracdev.ml/ +website: https://discord.gg/EFeSKPg739 permissions: simpletags.*: