parent
14c844182c
commit
1848569b0a
|
@ -23,7 +23,7 @@ public class Database extends DataSource {
|
||||||
private void create() {
|
private void create() {
|
||||||
try {
|
try {
|
||||||
Connection connection = getConnection();
|
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);
|
PreparedStatement pst = connection.prepareStatement(CREATE);
|
||||||
pst.execute();
|
pst.execute();
|
||||||
connection.close();
|
connection.close();
|
||||||
|
@ -88,6 +88,54 @@ public class Database extends DataSource {
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Alias> getAliases(String uuid, AliasType type) {
|
||||||
|
List<Alias> 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) {
|
public int exists(String uuid, String from) {
|
||||||
try {
|
try {
|
||||||
Connection connection = getConnection();
|
Connection connection = getConnection();
|
||||||
|
|
|
@ -7,9 +7,10 @@ import xyz.etztech.mixtape.commands.CommandAlias;
|
||||||
import xyz.etztech.mixtape.commands.CommandMixtape;
|
import xyz.etztech.mixtape.commands.CommandMixtape;
|
||||||
import xyz.etztech.mixtape.commands.CommandSlashAlias;
|
import xyz.etztech.mixtape.commands.CommandSlashAlias;
|
||||||
import xyz.etztech.mixtape.listeners.CommandPreprocessListener;
|
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;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public final class Mixtape extends JavaPlugin {
|
public final class Mixtape extends JavaPlugin {
|
||||||
|
@ -22,8 +23,6 @@ public final class Mixtape extends JavaPlugin {
|
||||||
|
|
||||||
private static int loops;
|
private static int loops;
|
||||||
|
|
||||||
private static Map<String, Map<String, String>> chatAliases = new HashMap<>();
|
|
||||||
private static Map<String, Map<String, String>> commandAliases = new HashMap<>();
|
|
||||||
private static boolean global;
|
private static boolean global;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -39,7 +38,6 @@ public final class Mixtape extends JavaPlugin {
|
||||||
this.getCommand("/alias").setExecutor(new CommandSlashAlias(this));
|
this.getCommand("/alias").setExecutor(new CommandSlashAlias(this));
|
||||||
|
|
||||||
getServer().getPluginManager().registerEvents(new CommandPreprocessListener(this), this);
|
getServer().getPluginManager().registerEvents(new CommandPreprocessListener(this), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerJoinListener(this), this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -68,51 +66,6 @@ public final class Mixtape extends JavaPlugin {
|
||||||
return database;
|
return database;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loadAliases(String uuid) {
|
|
||||||
Map<String, String> chats = new HashMap<>();
|
|
||||||
Map<String, String> commands = new HashMap<>();
|
|
||||||
List<Alias> 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<String, String> 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<String, String> getCommandAliases(String uuid) {
|
|
||||||
return commandAliases.containsKey(uuid) ? commandAliases.get(uuid) : new HashMap<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static void setChatAlias(String uuid, String alias, String command) {
|
|
||||||
Map<String, String> 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<String, String> getChatAliases(String uuid) {
|
|
||||||
return chatAliases.containsKey(uuid) ? chatAliases.get(uuid) : new HashMap<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean getGlobal() {
|
public static boolean getGlobal() {
|
||||||
return global;
|
return global;
|
||||||
|
|
|
@ -6,6 +6,7 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import xyz.etztech.mixtape.Database;
|
||||||
import xyz.etztech.mixtape.Mixtape;
|
import xyz.etztech.mixtape.Mixtape;
|
||||||
import xyz.etztech.mixtape.MixtapeUtil;
|
import xyz.etztech.mixtape.MixtapeUtil;
|
||||||
|
|
||||||
|
@ -40,7 +41,7 @@ public class CommandAlias implements CommandExecutor {
|
||||||
|
|
||||||
String command = StringUtils.join(Arrays.copyOfRange(args, 1, args.length), " ");
|
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.");
|
player.sendMessage(ChatColor.GREEN + "Chat alias created.");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -6,6 +6,7 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import xyz.etztech.mixtape.Database;
|
||||||
import xyz.etztech.mixtape.Mixtape;
|
import xyz.etztech.mixtape.Mixtape;
|
||||||
import xyz.etztech.mixtape.MixtapeUtil;
|
import xyz.etztech.mixtape.MixtapeUtil;
|
||||||
|
|
||||||
|
@ -40,7 +41,7 @@ public class CommandSlashAlias implements CommandExecutor {
|
||||||
|
|
||||||
String command = StringUtils.join(Arrays.copyOfRange(args, 1, args.length), " ");
|
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.");
|
player.sendMessage(ChatColor.GREEN + "Command alias created.");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -10,6 +10,8 @@ import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
import org.bukkit.event.server.ServerCommandEvent;
|
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.Mixtape;
|
||||||
import xyz.etztech.mixtape.MixtapeUtil;
|
import xyz.etztech.mixtape.MixtapeUtil;
|
||||||
|
|
||||||
|
@ -84,30 +86,30 @@ public class CommandPreprocessListener implements Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Command aliases
|
// Command aliases
|
||||||
Map<String, String> commands = Mixtape.getCommandAliases(player.getUniqueId().toString());
|
List<Alias> commands = Mixtape.getDatabase().getAliases(player.getUniqueId().toString(), Database.AliasType.COMMAND);
|
||||||
for (String alias : commands.keySet()) {
|
for (Alias alias : commands) {
|
||||||
if (alias.equalsIgnoreCase(base)) {
|
if (alias.getFrom().equalsIgnoreCase(base)) {
|
||||||
String resolved = resolve(commands.get(alias), args);
|
String resolved = resolve(alias.getTo(), args);
|
||||||
resolved = resolved.startsWith("/") ? resolved : "/" + resolved;
|
|
||||||
if (!ERROR.equalsIgnoreCase(resolved)) {
|
if (!ERROR.equalsIgnoreCase(resolved)) {
|
||||||
|
resolved = resolved.startsWith("/") ? resolved : "/" + resolved;
|
||||||
player.chat(resolved);
|
player.chat(resolved);
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(ChatColor.RED + usage(base, commands.get(alias)));
|
player.sendMessage(ChatColor.RED + usage(base, alias.getTo()));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Chat aliases
|
// Chat aliases
|
||||||
Map<String, String> chats = Mixtape.getChatAliases(player.getUniqueId().toString());
|
List<Alias> chats = Mixtape.getDatabase().getAliases(player.getUniqueId().toString(), Database.AliasType.CHAT);
|
||||||
for (String alias : chats.keySet()) {
|
for (Alias alias : chats) {
|
||||||
if (alias.equalsIgnoreCase(base)) {
|
if (alias.getFrom().equalsIgnoreCase(base)) {
|
||||||
String resolved = resolve(chats.get(alias), args);
|
String resolved = resolve(alias.getTo(), args);
|
||||||
if (!ERROR.equalsIgnoreCase(resolved)) {
|
if (!ERROR.equalsIgnoreCase(resolved)) {
|
||||||
resolved = resolved.startsWith("/") ? "." + resolved : resolved;
|
resolved = resolved.startsWith("/") ? "." + resolved : resolved;
|
||||||
player.chat(resolved);
|
player.chat(resolved);
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(ChatColor.RED + usage(base, chats.get(alias)));
|
player.sendMessage(ChatColor.RED + usage(base, alias.getTo()));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue