diff --git a/src/main/java/xyz/etztech/mixtape/Database.java b/src/main/java/xyz/etztech/mixtape/Database.java index 0f4b8f1..3cc8bac 100644 --- a/src/main/java/xyz/etztech/mixtape/Database.java +++ b/src/main/java/xyz/etztech/mixtape/Database.java @@ -23,7 +23,7 @@ public class Database extends DataSource { private void create() { try { Connection connection = getConnection(); - final String CREATE = "CREATE TABLE IF NOT EXISTS `aliases` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `uuid` VARCHAR(36) NOT NULL, `from` VARCHAR(200) NOT NULL, `to` VARCHAR(200) NOT NULL, `type` VARCHAR(6) NOT NULL );"; + final String CREATE = "CREATE TABLE IF NOT EXISTS `aliases` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `uuid` VARCHAR(36) NOT NULL, `from` VARCHAR(200) NOT NULL, `to` VARCHAR(200) NOT NULL, `type` VARCHAR(7) NOT NULL );"; PreparedStatement pst = connection.prepareStatement(CREATE); pst.execute(); connection.close(); @@ -88,6 +88,54 @@ public class Database extends DataSource { return results; } + public List getAliases(String uuid, AliasType type) { + List results = new ArrayList<>(); + try { + Connection connection = getConnection(); + final String SELECT = "SELECT `uuid`, `from`, `to`, `type` FROM `aliases` WHERE `uuid` = ? AND `type` = ?;"; + PreparedStatement pst = connection.prepareStatement(SELECT); + pst.setString(1, uuid); + pst.setString(2, type.name()); + ResultSet rs = pst.executeQuery(); + while (rs.next()) { + Alias alias = new Alias(); + alias.setUuid(uuid); + alias.setFrom(rs.getString("from")); + alias.setTo(rs.getString("to")); + alias.setType(AliasType.valueOf(rs.getString("type"))); + results.add(alias); + } + connection.close(); + } catch (Exception ex) { + ex.printStackTrace(); + } + return results; + } + + public Alias getAlias(String uuid, String from) { + try { + Connection connection = getConnection(); + final String SELECT = "SELECT `uuid`, `from`, `to`, `type` FROM `aliases` WHERE `uuid` = ? AND `from` = ?;"; + PreparedStatement pst = connection.prepareStatement(SELECT); + pst.setString(1, uuid); + pst.setString(2, from); + ResultSet rs = pst.executeQuery(); + if (rs.next()) { + Alias alias = new Alias(); + alias.setUuid(uuid); + alias.setFrom(rs.getString("from")); + alias.setTo(rs.getString("to")); + alias.setType(AliasType.valueOf(rs.getString("type"))); + return alias; + } + connection.close(); + } catch (Exception ex) { + ex.printStackTrace(); + } + return null; + } + + public int exists(String uuid, String from) { try { Connection connection = getConnection(); diff --git a/src/main/java/xyz/etztech/mixtape/Mixtape.java b/src/main/java/xyz/etztech/mixtape/Mixtape.java index 9e3bb31..29dbe3e 100644 --- a/src/main/java/xyz/etztech/mixtape/Mixtape.java +++ b/src/main/java/xyz/etztech/mixtape/Mixtape.java @@ -7,9 +7,10 @@ import xyz.etztech.mixtape.commands.CommandAlias; import xyz.etztech.mixtape.commands.CommandMixtape; import xyz.etztech.mixtape.commands.CommandSlashAlias; import xyz.etztech.mixtape.listeners.CommandPreprocessListener; -import xyz.etztech.mixtape.listeners.PlayerJoinListener; -import java.util.*; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; import java.util.logging.Logger; public final class Mixtape extends JavaPlugin { @@ -22,8 +23,6 @@ public final class Mixtape extends JavaPlugin { private static int loops; - private static Map> chatAliases = new HashMap<>(); - private static Map> commandAliases = new HashMap<>(); private static boolean global; @Override @@ -39,7 +38,6 @@ public final class Mixtape extends JavaPlugin { this.getCommand("/alias").setExecutor(new CommandSlashAlias(this)); getServer().getPluginManager().registerEvents(new CommandPreprocessListener(this), this); - getServer().getPluginManager().registerEvents(new PlayerJoinListener(this), this); } @Override @@ -68,51 +66,6 @@ public final class Mixtape extends JavaPlugin { return database; } - public static void loadAliases(String uuid) { - Map chats = new HashMap<>(); - Map commands = new HashMap<>(); - List aliases = database.getAliases(uuid); - for (Alias alias : aliases) { - if (alias.getType().equals(Database.AliasType.CHAT)) { - chats.put(alias.getFrom(), alias.getTo()); - } else if (alias.getType().equals(Database.AliasType.COMMAND)) { - commands.put(alias.getFrom(), alias.getTo()); - } - } - chatAliases.put(uuid, chats); - commandAliases.put(uuid, commands); - Bukkit.getConsoleSender().sendMessage(String.format("Loaded %s aliases for %s", aliases.size(), uuid)); - } - - - public static void setCommandAlias(String uuid, String alias, String command) { - Map map = new HashMap<>(); - if (commandAliases.containsKey(uuid)) { - map = commandAliases.get(uuid); - } - map.put(alias, command); - commandAliases.put(uuid, map); - database.insert(uuid, alias, command, Database.AliasType.COMMAND); - } - - public static Map getCommandAliases(String uuid) { - return commandAliases.containsKey(uuid) ? commandAliases.get(uuid) : new HashMap<>(); - } - - - public static void setChatAlias(String uuid, String alias, String command) { - Map map = new HashMap<>(); - if (chatAliases.containsKey(uuid)) { - map = chatAliases.get(uuid); - } - map.put(alias, command); - chatAliases.put(uuid, map); - database.insert(uuid, alias, command, Database.AliasType.CHAT); - } - - public static Map getChatAliases(String uuid) { - return chatAliases.containsKey(uuid) ? chatAliases.get(uuid) : new HashMap<>(); - } public static boolean getGlobal() { return global; diff --git a/src/main/java/xyz/etztech/mixtape/commands/CommandAlias.java b/src/main/java/xyz/etztech/mixtape/commands/CommandAlias.java index ff2ce21..766345d 100644 --- a/src/main/java/xyz/etztech/mixtape/commands/CommandAlias.java +++ b/src/main/java/xyz/etztech/mixtape/commands/CommandAlias.java @@ -6,6 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import xyz.etztech.mixtape.Database; import xyz.etztech.mixtape.Mixtape; import xyz.etztech.mixtape.MixtapeUtil; @@ -40,7 +41,7 @@ public class CommandAlias implements CommandExecutor { String command = StringUtils.join(Arrays.copyOfRange(args, 1, args.length), " "); - Mixtape.setChatAlias(player.getUniqueId().toString(), alias, command); + Mixtape.getDatabase().insert(player.getUniqueId().toString(), alias, command, Database.AliasType.CHAT); player.sendMessage(ChatColor.GREEN + "Chat alias created."); return true; diff --git a/src/main/java/xyz/etztech/mixtape/commands/CommandSlashAlias.java b/src/main/java/xyz/etztech/mixtape/commands/CommandSlashAlias.java index bfb25b4..5c666ad 100644 --- a/src/main/java/xyz/etztech/mixtape/commands/CommandSlashAlias.java +++ b/src/main/java/xyz/etztech/mixtape/commands/CommandSlashAlias.java @@ -6,6 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import xyz.etztech.mixtape.Database; import xyz.etztech.mixtape.Mixtape; import xyz.etztech.mixtape.MixtapeUtil; @@ -40,7 +41,7 @@ public class CommandSlashAlias implements CommandExecutor { String command = StringUtils.join(Arrays.copyOfRange(args, 1, args.length), " "); - Mixtape.setCommandAlias(player.getUniqueId().toString(), alias, command); + Mixtape.getDatabase().insert(player.getUniqueId().toString(), alias, command, Database.AliasType.COMMAND); player.sendMessage(ChatColor.GREEN + "Command alias created."); return true; diff --git a/src/main/java/xyz/etztech/mixtape/listeners/CommandPreprocessListener.java b/src/main/java/xyz/etztech/mixtape/listeners/CommandPreprocessListener.java index 8f0acef..0e3bb0c 100644 --- a/src/main/java/xyz/etztech/mixtape/listeners/CommandPreprocessListener.java +++ b/src/main/java/xyz/etztech/mixtape/listeners/CommandPreprocessListener.java @@ -10,6 +10,8 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.server.ServerCommandEvent; +import xyz.etztech.mixtape.Alias; +import xyz.etztech.mixtape.Database; import xyz.etztech.mixtape.Mixtape; import xyz.etztech.mixtape.MixtapeUtil; @@ -84,30 +86,30 @@ public class CommandPreprocessListener implements Listener { } // Command aliases - Map commands = Mixtape.getCommandAliases(player.getUniqueId().toString()); - for (String alias : commands.keySet()) { - if (alias.equalsIgnoreCase(base)) { - String resolved = resolve(commands.get(alias), args); - resolved = resolved.startsWith("/") ? resolved : "/" + resolved; + List commands = Mixtape.getDatabase().getAliases(player.getUniqueId().toString(), Database.AliasType.COMMAND); + for (Alias alias : commands) { + if (alias.getFrom().equalsIgnoreCase(base)) { + String resolved = resolve(alias.getTo(), args); if (!ERROR.equalsIgnoreCase(resolved)) { + resolved = resolved.startsWith("/") ? resolved : "/" + resolved; player.chat(resolved); } else { - player.sendMessage(ChatColor.RED + usage(base, commands.get(alias))); + player.sendMessage(ChatColor.RED + usage(base, alias.getTo())); } return true; } } // Chat aliases - Map chats = Mixtape.getChatAliases(player.getUniqueId().toString()); - for (String alias : chats.keySet()) { - if (alias.equalsIgnoreCase(base)) { - String resolved = resolve(chats.get(alias), args); + List chats = Mixtape.getDatabase().getAliases(player.getUniqueId().toString(), Database.AliasType.CHAT); + for (Alias alias : chats) { + if (alias.getFrom().equalsIgnoreCase(base)) { + String resolved = resolve(alias.getTo(), args); if (!ERROR.equalsIgnoreCase(resolved)) { resolved = resolved.startsWith("/") ? "." + resolved : resolved; player.chat(resolved); } else { - player.sendMessage(ChatColor.RED + usage(base, chats.get(alias))); + player.sendMessage(ChatColor.RED + usage(base, alias.getTo())); } return true; } diff --git a/src/main/java/xyz/etztech/mixtape/listeners/PlayerJoinListener.java b/src/main/java/xyz/etztech/mixtape/listeners/PlayerJoinListener.java deleted file mode 100644 index dbd4842..0000000 --- a/src/main/java/xyz/etztech/mixtape/listeners/PlayerJoinListener.java +++ /dev/null @@ -1,31 +0,0 @@ -package xyz.etztech.mixtape.listeners; - -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; -import xyz.etztech.mixtape.Mixtape; - -public class PlayerJoinListener implements Listener { - - - Mixtape plugin; - - public PlayerJoinListener(Mixtape plugin) { - this.plugin = plugin; - } - - @EventHandler(priority= EventPriority.HIGH, ignoreCancelled=true) - public void onPlayerJoin(PlayerJoinEvent event) { - Player player = event.getPlayer(); - Mixtape.loadAliases(player.getUniqueId().toString()); - } - - - - - - - -}