diff --git a/src/main/java/emu/lunarcore/command/CommandArgs.java b/src/main/java/emu/lunarcore/command/CommandArgs.java index 7925480..5bda103 100644 --- a/src/main/java/emu/lunarcore/command/CommandArgs.java +++ b/src/main/java/emu/lunarcore/command/CommandArgs.java @@ -16,6 +16,7 @@ import lombok.Getter; @Getter public class CommandArgs { private List list; + private Player sender; private Player target; private int targetUid; @@ -29,6 +30,7 @@ public class CommandArgs { private static String EMPTY_STRING = ""; public CommandArgs(Player sender, List args) { + this.sender = sender; this.list = args; // Parse args. Maybe regex is better. @@ -103,6 +105,18 @@ public class CommandArgs { return this.list.get(index); } + /** + * Sends a message to the command sender + * @param message + */ + public void sendMessage(String message) { + if (sender != null) { + sender.sendMessage(message); + } else { + LunarCore.getLogger().info(message); + } + } + // Utility commands /** diff --git a/src/main/java/emu/lunarcore/command/CommandHandler.java b/src/main/java/emu/lunarcore/command/CommandHandler.java index cd75b14..84d340e 100644 --- a/src/main/java/emu/lunarcore/command/CommandHandler.java +++ b/src/main/java/emu/lunarcore/command/CommandHandler.java @@ -1,8 +1,5 @@ package emu.lunarcore.command; -import emu.lunarcore.LunarCore; -import emu.lunarcore.game.player.Player; - public interface CommandHandler { public default Command getData() { @@ -13,14 +10,6 @@ public interface CommandHandler { return getData().label(); } - public default void sendMessage(Player player, String message) { - if (player != null) { - player.sendMessage(message); - } else { - LunarCore.getLogger().info(message); - } - } - - public void execute(Player sender, CommandArgs args); + public void execute(CommandArgs args); } diff --git a/src/main/java/emu/lunarcore/command/CommandManager.java b/src/main/java/emu/lunarcore/command/CommandManager.java index 746f0d2..95f15f6 100644 --- a/src/main/java/emu/lunarcore/command/CommandManager.java +++ b/src/main/java/emu/lunarcore/command/CommandManager.java @@ -39,11 +39,12 @@ public class CommandManager { } } + /** + * Adds a command that players and server console users can use. Command handlers must have the proper command annotation attached to them. + */ public CommandManager registerCommand(CommandHandler handler) { Command command = handler.getClass().getAnnotation(Command.class); - if (command == null) { - return this; - } + if (command == null) return this; this.getLabels().put(command.label(), handler); this.getCommands().put(command.label(), handler); @@ -55,11 +56,14 @@ public class CommandManager { return this; } + /** + * Removes a command from use. + * @param label The command name + * @return + */ public CommandManager unregisterCommand(String label) { CommandHandler handler = this.getLabels().get(label); - if (handler == null) { - return this; - } + if (handler == null) return this; Command command = handler.getClass().getAnnotation(Command.class); if (command == null) { @@ -76,6 +80,12 @@ public class CommandManager { return this; } + /** + * Checks if the sender has permission to use this command. Will always return true if the sender is the server console. + * @param sender The sender of the command. + * @param command + * @return true if the sender has permission to use this command + */ private boolean checkPermission(Player sender, Command command) { if (sender == null || command.permission().isEmpty()) { return true; @@ -84,6 +94,12 @@ public class CommandManager { return sender.getAccount().hasPermission(command.permission()); } + /** + * Checks if the sender has permission to use this command on other players. Will always return true if the sender is the server console. + * @param sender The sender of the command. + * @param command + * @return true if the sender has permission to use this command + */ private boolean checkTargetPermission(Player sender, Command command) { if (sender == null || command.permission().isEmpty()) { return true; @@ -93,50 +109,54 @@ public class CommandManager { } public void invoke(Player sender, String message) { + // Parse message into arguments List args = Arrays.stream(message.split(" ")).collect(Collectors.toCollection(ArrayList::new)); // Get command label String label = args.remove(0).toLowerCase(); + // Filter out command prefixes if (label.startsWith("/") || label.startsWith("!")) { label = label.substring(1); } - // Get handler + // Get command handler CommandHandler handler = this.commands.get(label); - // Execute + // Execute command if (handler != null) { - // Command annotation data + // Get command annotation data Command command = handler.getData(); - // Check permission - if (this.checkPermission(sender, command)) { - // Build command arguments - CommandArgs cmdArgs = new CommandArgs(sender, args); - - // Check targeted permission - if (sender != cmdArgs.getTarget() && !this.checkTargetPermission(sender, command)) { - handler.sendMessage(sender, "You do not have permission to use this command on another player."); - return; - } - - // Make sure our command has a target - if (command.requireTarget() && cmdArgs.getTarget() == null) { - handler.sendMessage(sender, "Error: Targeted player not found or offline"); - return; - } - - // Log - if (sender != null && LunarCore.getConfig().getLogOptions().commands) { - LunarCore.getLogger().info("[UID: " + sender.getUid() + "] " + sender.getName() + " used command: " + message); - } - - // Run command - handler.execute(sender, cmdArgs); - } else { - handler.sendMessage(sender, "You do not have permission to use this command."); + // Check if sender has permission to run the command. + if (sender != null && !this.checkPermission(sender, command)) { + // We have a double null check here just in case + sender.sendMessage("You do not have permission to use this command."); + return; } + + // Build command arguments + CommandArgs cmdArgs = new CommandArgs(sender, args); + + // Check targeted permission + if (sender != cmdArgs.getTarget() && !this.checkTargetPermission(sender, command)) { + cmdArgs.sendMessage("You do not have permission to use this command on another player."); + return; + } + + // Make sure our command has a target + if (command.requireTarget() && cmdArgs.getTarget() == null) { + cmdArgs.sendMessage("Error: Targeted player not found or offline"); + return; + } + + // Log + if (sender != null && LunarCore.getConfig().getLogOptions().commands) { + LunarCore.getLogger().info("[UID: " + sender.getUid() + "] " + sender.getName() + " used command: " + message); + } + + // Run command + handler.execute(cmdArgs); } else { if (sender != null) { sender.sendMessage("Invalid Command!"); diff --git a/src/main/java/emu/lunarcore/command/commands/AccountCommand.java b/src/main/java/emu/lunarcore/command/commands/AccountCommand.java index 402ac3b..1ae37bc 100644 --- a/src/main/java/emu/lunarcore/command/commands/AccountCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/AccountCommand.java @@ -4,16 +4,15 @@ import emu.lunarcore.command.Command; import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; import emu.lunarcore.game.account.AccountHelper; -import emu.lunarcore.game.player.Player; import emu.lunarcore.util.Utils; @Command(label = "account", permission = "admin.account", desc = "/account {create | delete} [username] (reserved player uid). Creates or deletes an account.") public class AccountCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { if (args.size() < 2) { - this.sendMessage(sender, "Invalid amount of args"); + args.sendMessage("Invalid amount of args"); return; } @@ -30,16 +29,16 @@ public class AccountCommand implements CommandHandler { } if (AccountHelper.createAccount(username, null, reservedUid) != null) { - this.sendMessage(sender, "Account created"); + args.sendMessage("Account created"); } else { - this.sendMessage(sender, "Account already exists"); + args.sendMessage("Account already exists"); } } case "delete" -> { if (AccountHelper.deleteAccount(username)) { - this.sendMessage(sender, "Account deleted"); + args.sendMessage("Account deleted"); } else { - this.sendMessage(sender, "Account doesnt exist"); + args.sendMessage("Account doesnt exist"); } } } diff --git a/src/main/java/emu/lunarcore/command/commands/AvatarCommand.java b/src/main/java/emu/lunarcore/command/commands/AvatarCommand.java index 5d960d7..4bc1268 100644 --- a/src/main/java/emu/lunarcore/command/commands/AvatarCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/AvatarCommand.java @@ -8,14 +8,13 @@ import emu.lunarcore.command.Command; import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; import emu.lunarcore.game.avatar.GameAvatar; -import emu.lunarcore.game.player.Player; import emu.lunarcore.server.packet.send.PacketPlayerSyncScNotify; @Command(label = "avatar", aliases = {"a"}, requireTarget = true, permission = "player.avatar", desc = "/avatar {cur | all | lineup} lv(level) p(ascension) r(eidolon) s(skill levels). Sets the current avatar's properties") public class AvatarCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { // Temp avatar list List changeList = new ArrayList<>(); @@ -52,9 +51,9 @@ public class AvatarCommand implements CommandHandler { // Send packet args.getTarget().sendPacket(new PacketPlayerSyncScNotify(changeList.toArray(GameAvatar[]::new))); // Send message - this.sendMessage(sender, "Set avatar(s) properties successfully"); + args.sendMessage("Set avatar(s) properties successfully"); } else { - this.sendMessage(sender, "No avatar properties to change"); + args.sendMessage("No avatar properties to change"); } } diff --git a/src/main/java/emu/lunarcore/command/commands/ClearCommand.java b/src/main/java/emu/lunarcore/command/commands/ClearCommand.java index 26cb4c5..5d5a9fe 100644 --- a/src/main/java/emu/lunarcore/command/commands/ClearCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/ClearCommand.java @@ -8,13 +8,12 @@ import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; import emu.lunarcore.game.enums.ItemMainType; import emu.lunarcore.game.inventory.GameItem; -import emu.lunarcore.game.player.Player; -@Command(label = "clear", permission = "player.clear", requireTarget = true, desc = "/clear {relics | lightcones | materials | items}. Removes filtered items from the player inventory.") +@Command(label = "clear", permission = "player.clear", requireTarget = true, desc = "/clear {relics | lightcones | materials | items} lv(filter level). Removes filter items from the targeted player's inventory.") public class ClearCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { List toRemove = new LinkedList<>(); String type = args.get(0).toLowerCase(); @@ -52,7 +51,7 @@ public class ClearCommand implements CommandHandler { } args.getTarget().getInventory().removeItems(toRemove); - this.sendMessage(sender, "Removed " + toRemove.size() + " items"); + args.sendMessage("Removed " + toRemove.size() + " items"); } } diff --git a/src/main/java/emu/lunarcore/command/commands/GenderCommand.java b/src/main/java/emu/lunarcore/command/commands/GenderCommand.java index f9924a7..38ec131 100644 --- a/src/main/java/emu/lunarcore/command/commands/GenderCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/GenderCommand.java @@ -12,7 +12,7 @@ import emu.lunarcore.server.packet.send.PacketGetHeroBasicTypeInfoScRsp; public class GenderCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { // Set world level Player target = args.getTarget(); PlayerGender playerGender = null; @@ -42,9 +42,9 @@ public class GenderCommand implements CommandHandler { // Send packet and response message target.sendPacket(new PacketGetHeroBasicTypeInfoScRsp(target)); - this.sendMessage(sender, "Gender for " + target.getName() + " set successfully"); + args.sendMessage("Gender for " + target.getName() + " set successfully"); } else { - this.sendMessage(sender, "Error: Invalid input"); + args.sendMessage("Error: Invalid input"); } } diff --git a/src/main/java/emu/lunarcore/command/commands/GiveAllCommand.java b/src/main/java/emu/lunarcore/command/commands/GiveAllCommand.java index c8ce349..d2e2b78 100644 --- a/src/main/java/emu/lunarcore/command/commands/GiveAllCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/GiveAllCommand.java @@ -15,16 +15,22 @@ import emu.lunarcore.game.enums.ItemSubType; import emu.lunarcore.game.inventory.GameItem; import emu.lunarcore.game.player.Player; -@Command(label = "giveall", aliases = {"ga"}, permission = "player.give", requireTarget = true, desc = "/giveall {materials | avatars | lightcones | relics}. Gives the targeted player items.") +@Command( + label = "giveall", + aliases = {"ga"}, + permission = "player.give", + requireTarget = true, + desc = "/giveall {materials | avatars | lightcones | relics} lv(level). Gives the targeted player items." +) public class GiveAllCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { Player target = args.getTarget(); String type = args.get(0).toLowerCase(); switch (type) { - default -> this.sendMessage(sender, "Error: Invalid type"); + default -> args.sendMessage("Error: Invalid type"); case "m", "materials", "mats" -> { List items = new ArrayList<>(); @@ -43,13 +49,13 @@ public class GiveAllCommand implements CommandHandler { target.getInventory().addItems(items, true); // Send message - this.sendMessage(sender, "Giving " + target.getName() + " " + items.size() + " items"); + args.sendMessage("Giving " + target.getName() + " " + items.size() + " items"); } case "lc", "lightcones" -> { // Make sure we dont go over the inventory limit var tab = args.getTarget().getInventory().getInventoryTab(ItemMainType.Equipment); if (tab.getSize() >= tab.getMaxCapacity()) { - this.sendMessage(sender, target.getName() + " has too many of this item type"); + args.sendMessage(target.getName() + " has too many of this item type"); return; } @@ -68,7 +74,7 @@ public class GiveAllCommand implements CommandHandler { target.getInventory().addItems(items, true); // Send message - this.sendMessage(sender, "Giving " + target.getName() + " " + items.size() + " light cones"); + args.sendMessage("Giving " + target.getName() + " " + items.size() + " light cones"); } case "ic", "icons" -> { // Get UnlockedHeads @@ -78,13 +84,13 @@ public class GiveAllCommand implements CommandHandler { } // Send message - this.sendMessage(sender, "Added all icons to " + target.getName()); + args.sendMessage("Added all icons to " + target.getName()); } case "r", "relics" -> { // Make sure we dont go over the inventory limit var tab = args.getTarget().getInventory().getInventoryTab(ItemMainType.Relic); if (tab.getSize() >= tab.getMaxCapacity()) { - this.sendMessage(sender, target.getName() + " has too many of this item type"); + args.sendMessage(target.getName() + " has too many of this item type"); return; } @@ -103,7 +109,7 @@ public class GiveAllCommand implements CommandHandler { target.getInventory().addItems(items, true); // Send message - this.sendMessage(sender, "Giving " + target.getName() + " " + items.size() + " relics"); + args.sendMessage("Giving " + target.getName() + " " + items.size() + " relics"); } case "a", "characters", "avatars" -> { // All avatars and their eidolons @@ -129,7 +135,7 @@ public class GiveAllCommand implements CommandHandler { } // Send message - this.sendMessage(sender, "Giving " + target.getName() + " all avatars"); + args.sendMessage("Giving " + target.getName() + " all avatars"); } } } diff --git a/src/main/java/emu/lunarcore/command/commands/GiveCommand.java b/src/main/java/emu/lunarcore/command/commands/GiveCommand.java index bed9824..f48fee7 100644 --- a/src/main/java/emu/lunarcore/command/commands/GiveCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/GiveCommand.java @@ -11,7 +11,6 @@ import emu.lunarcore.data.excel.ItemExcel; import emu.lunarcore.game.avatar.GameAvatar; import emu.lunarcore.game.enums.ItemMainType; import emu.lunarcore.game.inventory.GameItem; -import emu.lunarcore.game.player.Player; import emu.lunarcore.util.Utils; @Command( @@ -19,12 +18,12 @@ import emu.lunarcore.util.Utils; aliases = {"g", "item"}, permission = "player.give", requireTarget = true, - desc = "/give [item id] x(amount). Gives the targeted player an item." + desc = "/give [item id] x(amount) lv(level) r(rank) p(promotion). Gives the targeted player an item." ) public class GiveCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { // Setup items List items = new LinkedList<>(); @@ -38,7 +37,7 @@ public class GiveCommand implements CommandHandler { ItemExcel itemData = GameData.getItemExcelMap().get(itemId); if (itemData == null) { - this.sendMessage(sender, "Item \"" + arg + "\" does not exist!"); + args.sendMessage("Item \"" + arg + "\" does not exist!"); continue; } @@ -65,7 +64,7 @@ public class GiveCommand implements CommandHandler { } // Send message - this.sendMessage(sender, "Giving " + args.getTarget().getName() + " " + amount + " of " + itemId); + args.sendMessage("Giving " + args.getTarget().getName() + " " + amount + " of " + itemId); } // Add to player inventory diff --git a/src/main/java/emu/lunarcore/command/commands/HealCommand.java b/src/main/java/emu/lunarcore/command/commands/HealCommand.java index 65af9b4..9b41abd 100644 --- a/src/main/java/emu/lunarcore/command/commands/HealCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/HealCommand.java @@ -4,13 +4,12 @@ import emu.lunarcore.command.Command; import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; import emu.lunarcore.game.player.lineup.PlayerLineup; -import emu.lunarcore.game.player.Player; @Command(label = "heal", permission = "player.heal", requireTarget = true, desc = "/heal. Heals your avatars.") public class HealCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { PlayerLineup lineup = args.getTarget().getCurrentLineup(); lineup.forEachAvatar(avatar -> { avatar.setCurrentHp(lineup, 10000); @@ -18,7 +17,7 @@ public class HealCommand implements CommandHandler { }); lineup.refreshLineup(); - this.sendMessage(sender, "Healed all avatars for " + args.getTarget().getName()); + args.sendMessage("Healed all avatars for " + args.getTarget().getName()); } } diff --git a/src/main/java/emu/lunarcore/command/commands/HelpCommand.java b/src/main/java/emu/lunarcore/command/commands/HelpCommand.java index dfb248d..9dad813 100644 --- a/src/main/java/emu/lunarcore/command/commands/HelpCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/HelpCommand.java @@ -4,21 +4,20 @@ import emu.lunarcore.LunarCore; import emu.lunarcore.command.Command; import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; -import emu.lunarcore.game.player.Player; @Command(label = "help", permission = "player.help", desc = "/help. Displays a list of available commands.") public class HelpCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { - this.sendMessage(sender, "Displaying list of commands:"); + public void execute(CommandArgs args) { + args.sendMessage("Displaying list of commands:"); var labels = LunarCore.getCommandManager().getLabels().keySet().stream().sorted().toList(); for (var label : labels) { Command command = LunarCore.getCommandManager().getLabels().get(label).getClass().getAnnotation(Command.class); if (command == null) continue; - this.sendMessage(sender, command.desc()); + args.sendMessage(command.desc()); } } diff --git a/src/main/java/emu/lunarcore/command/commands/KickCommand.java b/src/main/java/emu/lunarcore/command/commands/KickCommand.java index 5e334ed..90510cf 100644 --- a/src/main/java/emu/lunarcore/command/commands/KickCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/KickCommand.java @@ -3,7 +3,6 @@ package emu.lunarcore.command.commands; import emu.lunarcore.command.Command; import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; -import emu.lunarcore.game.player.Player; @Command( label = "kick", @@ -14,11 +13,11 @@ import emu.lunarcore.game.player.Player; public final class KickCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { // Kick player args.getTarget().getSession().close(); // Send message - this.sendMessage(sender, "Player kicked successfully"); + args.sendMessage("Player kicked successfully"); } } diff --git a/src/main/java/emu/lunarcore/command/commands/LineupCommand.java b/src/main/java/emu/lunarcore/command/commands/LineupCommand.java index 570c711..2d8eb9d 100644 --- a/src/main/java/emu/lunarcore/command/commands/LineupCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/LineupCommand.java @@ -16,13 +16,13 @@ import emu.lunarcore.util.Utils; public class LineupCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { // Get target player Player target = args.getTarget(); // Do not set lineup while the target player is in a battle if (target.isInBattle()) { - this.sendMessage(sender, "Error: The targeted player is in a battle"); + args.sendMessage("Error: The targeted player is in a battle"); return; } @@ -56,9 +56,9 @@ public class LineupCommand implements CommandHandler { lineup.refreshLineup(); target.getScene().syncLineup(); - this.sendMessage(sender, "Set the lineup of " + target.getName() + " successfully"); + args.sendMessage("Set the lineup of " + target.getName() + " successfully"); } else { - this.sendMessage(sender, "No avatars could be added"); + args.sendMessage("No avatars could be added"); } } diff --git a/src/main/java/emu/lunarcore/command/commands/MailCommand.java b/src/main/java/emu/lunarcore/command/commands/MailCommand.java index d153520..362fcef 100644 --- a/src/main/java/emu/lunarcore/command/commands/MailCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/MailCommand.java @@ -10,13 +10,12 @@ import emu.lunarcore.data.GameData; import emu.lunarcore.data.excel.ItemExcel; import emu.lunarcore.game.inventory.GameItem; import emu.lunarcore.game.mail.Mail; -import emu.lunarcore.game.player.Player; @Command(label = "mail", aliases = {"m"}, permission = "player.mail", requireTarget = true, desc = "/mail [content]. Sends the targeted player a system mail.") public class MailCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { // Get attachments List attachments = new ArrayList<>(); @@ -42,7 +41,7 @@ public class MailCommand implements CommandHandler { // Send to target args.getTarget().getMailbox().sendMail(mail); - this.sendMessage(sender, "Sending mail to " + args.getTarget().getName()); + args.sendMessage("Sending mail to " + args.getTarget().getName()); } } diff --git a/src/main/java/emu/lunarcore/command/commands/PermissionCommand.java b/src/main/java/emu/lunarcore/command/commands/PermissionCommand.java index 878c83f..517047d 100644 --- a/src/main/java/emu/lunarcore/command/commands/PermissionCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/PermissionCommand.java @@ -3,13 +3,12 @@ package emu.lunarcore.command.commands; import emu.lunarcore.command.Command; import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; -import emu.lunarcore.game.player.Player; @Command(label = "permission", aliases = {"perm"}, permission = "admin.permission", requireTarget = true, desc = "/permission {add | remove | clear} [permission]. Gives/removes a permission from the targeted player.") public class PermissionCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { String type = args.get(0).toLowerCase(); String permission = args.get(1).toLowerCase(); @@ -20,7 +19,7 @@ public class PermissionCommand implements CommandHandler { args.getTarget().getAccount().addPermission(permission); } // Send message - this.sendMessage(sender, "Added permission for " + args.getTarget().getName()); + args.sendMessage("Added permission for " + args.getTarget().getName()); } case "remove" -> { // Remove permission @@ -28,16 +27,16 @@ public class PermissionCommand implements CommandHandler { args.getTarget().getAccount().removePermission(permission); } // Send message - this.sendMessage(sender, "Removed permission for " + args.getTarget().getName()); + args.sendMessage("Removed permission for " + args.getTarget().getName()); } case "clear" -> { // Clear permissions args.getTarget().getAccount().clearPermission(); // Send message - this.sendMessage(sender, "Cleared permissions for " + args.getTarget().getName()); + args.sendMessage("Cleared permissions for " + args.getTarget().getName()); } default -> { - this.sendMessage(sender, "Error: Invalid arguments"); + args.sendMessage("Error: Invalid arguments"); } } } diff --git a/src/main/java/emu/lunarcore/command/commands/RefillMPCommand.java b/src/main/java/emu/lunarcore/command/commands/RefillMPCommand.java index 5e0b7f8..e82b824 100644 --- a/src/main/java/emu/lunarcore/command/commands/RefillMPCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/RefillMPCommand.java @@ -4,15 +4,14 @@ import emu.lunarcore.GameConstants; import emu.lunarcore.command.Command; import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; -import emu.lunarcore.game.player.Player; @Command(label = "refill", aliases = {"rf"}, permission = "player.refill", requireTarget = true, desc = "/refill - refill your skill points in open world.") public class RefillMPCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { - sender.getCurrentLineup().addMp(GameConstants.MAX_MP); - this.sendMessage(sender, "Successfully refilled skill points for " + args.getTarget().getName()); + public void execute(CommandArgs args) { + args.getTarget().getCurrentLineup().addMp(GameConstants.MAX_MP); + args.sendMessage("Successfully refilled skill points for " + args.getTarget().getName()); } } diff --git a/src/main/java/emu/lunarcore/command/commands/RefillSPCommand.java b/src/main/java/emu/lunarcore/command/commands/RefillSPCommand.java index edf443c..7173e56 100644 --- a/src/main/java/emu/lunarcore/command/commands/RefillSPCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/RefillSPCommand.java @@ -4,13 +4,12 @@ import emu.lunarcore.command.Command; import emu.lunarcore.game.player.lineup.PlayerLineup; import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; -import emu.lunarcore.game.player.Player; @Command(label = "energy", permission = "player.energy", requireTarget = true, desc = "/energy. Refills all characters energy in current lineup.") public class RefillSPCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { PlayerLineup lineup = args.getTarget().getCurrentLineup(); lineup.forEachAvatar(avatar -> { avatar.setCurrentSp(lineup, 10000); @@ -18,7 +17,7 @@ public class RefillSPCommand implements CommandHandler { }); lineup.refreshLineup(); - this.sendMessage(sender, "Refilled SP for " + args.getTarget().getName()); + args.sendMessage("Refilled SP for " + args.getTarget().getName()); } } diff --git a/src/main/java/emu/lunarcore/command/commands/ReloadCommand.java b/src/main/java/emu/lunarcore/command/commands/ReloadCommand.java index 21bfaaa..3856b18 100644 --- a/src/main/java/emu/lunarcore/command/commands/ReloadCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/ReloadCommand.java @@ -4,15 +4,14 @@ import emu.lunarcore.LunarCore; import emu.lunarcore.command.Command; import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; -import emu.lunarcore.game.player.Player; @Command(label = "reload", permission = "admin.reload", desc = "/reload. Reloads the server config.") public class ReloadCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { LunarCore.loadConfig(); - this.sendMessage(sender, "Reloaded the server config"); + args.sendMessage("Reloaded the server config"); } } diff --git a/src/main/java/emu/lunarcore/command/commands/SceneCommand.java b/src/main/java/emu/lunarcore/command/commands/SceneCommand.java index 32c109f..b0164b0 100644 --- a/src/main/java/emu/lunarcore/command/commands/SceneCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/SceneCommand.java @@ -7,14 +7,13 @@ import emu.lunarcore.data.GameData; import emu.lunarcore.data.config.AnchorInfo; import emu.lunarcore.data.config.FloorInfo; import emu.lunarcore.data.excel.MazePlaneExcel; -import emu.lunarcore.game.player.Player; import emu.lunarcore.util.Utils; @Command(label = "scene", aliases = {"sc"}, permission = "player.scene", requireTarget = true, desc = "/scene [scene id] [floor id]. Teleports the player to the specified scene.") public class SceneCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { // Get arguments int planeId = Utils.parseSafeInt(args.get(0)); int floorId = Utils.parseSafeInt(args.get(1)); @@ -22,7 +21,7 @@ public class SceneCommand implements CommandHandler { // Get maze plane MazePlaneExcel excel = GameData.getMazePlaneExcelMap().get(planeId); if (excel == null) { - this.sendMessage(sender, "Error: Maze plane not found"); + args.sendMessage("Error: Maze plane not found"); return; } @@ -33,7 +32,7 @@ public class SceneCommand implements CommandHandler { // Get floor info FloorInfo floor = GameData.getFloorInfo(planeId, floorId); if (floor == null) { - this.sendMessage(sender, "Error: Floor info not found"); + args.sendMessage("Error: Floor info not found"); return; } @@ -42,7 +41,7 @@ public class SceneCommand implements CommandHandler { AnchorInfo anchor = floor.getAnchorInfo(startGroup, anchorId); if (anchor == null) { - this.sendMessage(sender, "Error: Floor info not found"); + args.sendMessage("Error: Floor info not found"); return; } @@ -51,7 +50,7 @@ public class SceneCommand implements CommandHandler { // Send packet if (success) { - this.sendMessage(sender, "Teleported player to " + planeId); + args.sendMessage("Teleported player to " + planeId); } } diff --git a/src/main/java/emu/lunarcore/command/commands/SetLevelCommand.java b/src/main/java/emu/lunarcore/command/commands/SetLevelCommand.java index 22e5d96..1ac4155 100644 --- a/src/main/java/emu/lunarcore/command/commands/SetLevelCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/SetLevelCommand.java @@ -4,17 +4,16 @@ import emu.lunarcore.util.Utils; import emu.lunarcore.command.Command; import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; -import emu.lunarcore.game.player.Player; @Command(label = "setlevel", aliases = {"level"}, permission = "player.setlevel", requireTarget = true, desc = "/setlevel [level] - Sets the targeted player's trailblazer level.") public class SetLevelCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { int targetLevel = Utils.parseSafeInt(args.get(0)); args.getTarget().setLevel(targetLevel); - this.sendMessage(sender, "Set level to " + targetLevel); + args.sendMessage("Set level to " + targetLevel); } } diff --git a/src/main/java/emu/lunarcore/command/commands/SpawnCommand.java b/src/main/java/emu/lunarcore/command/commands/SpawnCommand.java index d41608c..bb03c3c 100644 --- a/src/main/java/emu/lunarcore/command/commands/SpawnCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/SpawnCommand.java @@ -21,11 +21,11 @@ import emu.lunarcore.util.Utils; public class SpawnCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { Player target = args.getTarget(); if (target.getScene() == null) { - this.sendMessage(sender, "Error: Target is not in scene"); + args.sendMessage("Error: Target is not in scene"); return; } @@ -37,7 +37,7 @@ public class SpawnCommand implements CommandHandler { // Enforce scene max entity limit if (target.getScene().getEntities().size() + amount >= LunarCore.getConfig().getServerOptions().getSceneMaxEntites()) { - this.sendMessage(sender, "Error: Max entities in scene reached"); + args.sendMessage("Error: Max entities in scene reached"); return; } @@ -63,7 +63,7 @@ public class SpawnCommand implements CommandHandler { } if (monsterInfo == null || groupInfo == null) { - this.sendMessage(sender, "Error: No existing monster config found in this scene"); + args.sendMessage("Error: No existing monster config found in this scene"); return; } @@ -83,7 +83,7 @@ public class SpawnCommand implements CommandHandler { } // Send message when done - this.sendMessage(sender, "Spawning " + amount + " monsters"); + args.sendMessage("Spawning " + amount + " monsters"); return; } @@ -108,7 +108,7 @@ public class SpawnCommand implements CommandHandler { } if (propInfo == null || groupInfo == null) { - this.sendMessage(sender, "Error: No existing prop config found in this scene"); + args.sendMessage("Error: No existing prop config found in this scene"); return; } @@ -124,11 +124,11 @@ public class SpawnCommand implements CommandHandler { } // Send message when done - this.sendMessage(sender, "Spawning " + amount + " props"); + args.sendMessage("Spawning " + amount + " props"); return; } - this.sendMessage(sender, "Error: Invalid id"); + args.sendMessage("Error: Invalid id"); } } diff --git a/src/main/java/emu/lunarcore/command/commands/UnstuckCommand.java b/src/main/java/emu/lunarcore/command/commands/UnstuckCommand.java index 0a1b2e0..b7ece32 100644 --- a/src/main/java/emu/lunarcore/command/commands/UnstuckCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/UnstuckCommand.java @@ -10,16 +10,16 @@ import emu.lunarcore.game.player.Player; public class UnstuckCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { // Make sure were on the game server if (LunarCore.getGameDatabase() == null) { - this.sendMessage(sender, "Error: Game database not connected"); + args.sendMessage("Error: Game database not connected"); return; } // TODO add some logic to handle unstucking the target if theyre online if (args.getTarget() != null) { - this.sendMessage(sender, "Error: Targeted player is online"); + args.sendMessage("Error: Targeted player is online"); return; } @@ -32,10 +32,10 @@ public class UnstuckCommand implements CommandHandler { player.save(); // Done - this.sendMessage(sender, "Player unstuck successfully"); + args.sendMessage("Player unstuck successfully"); } else { // Done - this.sendMessage(sender, "Error: Player not found in database"); + args.sendMessage("Error: Player not found in database"); } } diff --git a/src/main/java/emu/lunarcore/command/commands/WorldLevelCommand.java b/src/main/java/emu/lunarcore/command/commands/WorldLevelCommand.java index b940f0c..d97aad6 100644 --- a/src/main/java/emu/lunarcore/command/commands/WorldLevelCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/WorldLevelCommand.java @@ -3,14 +3,13 @@ package emu.lunarcore.command.commands; import emu.lunarcore.command.Command; import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandHandler; -import emu.lunarcore.game.player.Player; import emu.lunarcore.util.Utils; @Command(label = "worldlevel", aliases = {"wl"}, permission = "player.worldlevel", requireTarget = true, desc = "/worldlevel [world level]. Sets the targeted player's equilibrium level.") public class WorldLevelCommand implements CommandHandler { @Override - public void execute(Player sender, CommandArgs args) { + public void execute(CommandArgs args) { // Set world level int level = Utils.parseSafeInt(args.get(0)); level = Math.min(Math.max(level, 0), 6); @@ -18,7 +17,7 @@ public class WorldLevelCommand implements CommandHandler { args.getTarget().setWorldLevel(level); // Done - this.sendMessage(sender, "Set world level to " + level); + args.sendMessage("Set world level to " + level); } }