diff --git a/pom.xml b/pom.xml index 7b4f34f..cb9feb3 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ xyz.etztech Mixtape - 2.1 + 2.2 jar Mixtape @@ -70,7 +70,7 @@ org.spigotmc spigot-api - 1.14.3-R0.1-SNAPSHOT + 1.15.2-R0.1-SNAPSHOT provided diff --git a/src/main/java/xyz/etztech/mixtape/Mixtape.java b/src/main/java/xyz/etztech/mixtape/Mixtape.java index 6b03502..aa5f6b1 100644 --- a/src/main/java/xyz/etztech/mixtape/Mixtape.java +++ b/src/main/java/xyz/etztech/mixtape/Mixtape.java @@ -5,7 +5,6 @@ import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.java.JavaPlugin; 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 java.util.ArrayList; @@ -35,8 +34,8 @@ public final class Mixtape extends JavaPlugin { database = new Database(this); this.getCommand("mixtape").setExecutor(new CommandMixtape(this)); - this.getCommand("alias").setExecutor(new CommandAlias(this)); - this.getCommand("/alias").setExecutor(new CommandSlashAlias(this)); + this.getCommand("alias").setExecutor(new CommandAlias(this, Database.AliasType.CHAT)); + this.getCommand("/alias").setExecutor(new CommandAlias(this, Database.AliasType.COMMAND)); getServer().getPluginManager().registerEvents(new CommandPreprocessListener(this), this); } diff --git a/src/main/java/xyz/etztech/mixtape/MixtapeUtil.java b/src/main/java/xyz/etztech/mixtape/MixtapeUtil.java index 91231dc..cfdbac9 100644 --- a/src/main/java/xyz/etztech/mixtape/MixtapeUtil.java +++ b/src/main/java/xyz/etztech/mixtape/MixtapeUtil.java @@ -22,7 +22,7 @@ public class MixtapeUtil { if (permission.getPermission().startsWith("mixtape.limit.") && permission.getValue()) { try { int p = Integer.parseInt(permission.getPermission().replaceFirst("mixtape.limit.", "")); - limit = limit > p ? limit : p; + limit = Math.max(limit, p); } catch (Exception ignored) {} } } diff --git a/src/main/java/xyz/etztech/mixtape/commands/CommandAlias.java b/src/main/java/xyz/etztech/mixtape/commands/CommandAlias.java index 96b2676..58763e6 100644 --- a/src/main/java/xyz/etztech/mixtape/commands/CommandAlias.java +++ b/src/main/java/xyz/etztech/mixtape/commands/CommandAlias.java @@ -1,6 +1,7 @@ package xyz.etztech.mixtape.commands; import org.apache.commons.lang.StringUtils; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -15,9 +16,11 @@ import java.util.Arrays; public class CommandAlias implements CommandExecutor { Mixtape plugin; + Database.AliasType aliasType; - public CommandAlias(Mixtape plugin) { + public CommandAlias(Mixtape plugin, Database.AliasType aliasType) { this.plugin = plugin; + this.aliasType = aliasType; } @Override @@ -27,13 +30,17 @@ public class CommandAlias implements CommandExecutor { return true; } Player player = (Player) sender; - if (!player.hasPermission("mixtape.alias.chat")) { - player.sendMessage(ChatColor.RED + "You do not have permission to create chat aliases."); + + boolean isChat = this.aliasType == Database.AliasType.CHAT; + String aliasType = isChat ? "chat" : "command"; + + if (!player.hasPermission(String.format("mixtape.alias.%s", aliasType))) { + player.sendMessage(ChatColor.RED + String.format("You do not have permission to create %s aliases.", aliasType)); return true; } if (args.length < 2) { - player.sendMessage(ChatColor.RED + "/alias "); + player.sendMessage(ChatColor.RED + (isChat ? "/" : "//") + String.format("alias <%s>", aliasType)); return true; } @@ -46,9 +53,13 @@ public class CommandAlias implements CommandExecutor { String command = StringUtils.join(Arrays.copyOfRange(args, 1, args.length), " "); - Mixtape.getDatabase().insert(player.getUniqueId().toString(), alias, command, Database.AliasType.CHAT); - player.sendMessage(ChatColor.GREEN + "Chat alias created."); + if (command.length() > 200) { + player.sendMessage(ChatColor.RED + "This alias is too large. Aliases are limited to 200 characters."); + return true; + } + Mixtape.getDatabase().insert(player.getUniqueId().toString(), alias, command, isChat ? Database.AliasType.CHAT : Database.AliasType.COMMAND); + player.sendMessage(ChatColor.GREEN + String.format("%s alias created.", StringUtils.capitalize(aliasType))); return true; } } diff --git a/src/main/java/xyz/etztech/mixtape/commands/CommandSlashAlias.java b/src/main/java/xyz/etztech/mixtape/commands/CommandSlashAlias.java deleted file mode 100644 index 4607770..0000000 --- a/src/main/java/xyz/etztech/mixtape/commands/CommandSlashAlias.java +++ /dev/null @@ -1,54 +0,0 @@ -package xyz.etztech.mixtape.commands; - -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.entity.Player; -import xyz.etztech.mixtape.Database; -import xyz.etztech.mixtape.Mixtape; -import xyz.etztech.mixtape.MixtapeUtil; - -import java.util.Arrays; - -public class CommandSlashAlias implements CommandExecutor { - - Mixtape plugin; - - public CommandSlashAlias(Mixtape plugin) { - this.plugin = plugin; - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (!(sender instanceof Player)) { - sender.sendMessage(ChatColor.RED + "This command is not supported in Console."); - return true; - } - Player player = (Player) sender; - if (!player.hasPermission("mixtape.alias.command")) { - player.sendMessage(ChatColor.RED + "You do not have permission to create command aliases."); - return true; - } - - if (args.length < 2) { - player.sendMessage(ChatColor.RED + "//alias "); - return true; - } - - if (MixtapeUtil.isLimited(player)) { - player.sendMessage(ChatColor.RED + "You have hit your limit of allowed aliases. Delete one and try again."); - return true; - } - - String alias = MixtapeUtil.stripSlash(args[0]); - - String command = StringUtils.join(Arrays.copyOfRange(args, 1, args.length), " "); - - 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 63e8d54..14cd259 100644 --- a/src/main/java/xyz/etztech/mixtape/listeners/CommandPreprocessListener.java +++ b/src/main/java/xyz/etztech/mixtape/listeners/CommandPreprocessListener.java @@ -52,15 +52,14 @@ public class CommandPreprocessListener implements Listener { String[] args = command.trim().length() == base.trim().length() ? new String[0] : command.substring(base.length()+1).split(" "); event.setCancelled(handleEvent(event.getPlayer(), base, args)); - } private boolean handleEvent(CommandSender sender, String base, String[] args) { // Global aliases if (Mixtape.getGlobal()) { - List configs = plugin.getConfig().getList("aliases"); - for (int i = 0; i < configs.size(); i++) { - LinkedHashMap config = (LinkedHashMap) configs.get(i); + List configs = plugin.getConfig().getList("aliases", new ArrayList<>()); + for (Object c : configs) { + LinkedHashMap config = (LinkedHashMap) c; String configBase = MixtapeUtil.stripSlash(config.get("alias")); if (configBase.equalsIgnoreCase(base)) { String configCommand = MixtapeUtil.stripSlash(config.get("command"));