Refactor commands

This commit is contained in:
Melledy
2023-12-04 21:38:58 -08:00
parent a9f10cb83c
commit c649e94f87
23 changed files with 152 additions and 138 deletions

View File

@@ -16,6 +16,7 @@ import lombok.Getter;
@Getter
public class CommandArgs {
private List<String> 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<String> 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
/**

View File

@@ -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);
}

View File

@@ -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,37 +109,44 @@ public class CommandManager {
}
public void invoke(Player sender, String message) {
// Parse message into arguments
List<String> 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)) {
// 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)) {
handler.sendMessage(sender, "You do not have permission to use this command on another player.");
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) {
handler.sendMessage(sender, "Error: Targeted player not found or offline");
cmdArgs.sendMessage("Error: Targeted player not found or offline");
return;
}
@@ -133,10 +156,7 @@ public class CommandManager {
}
// Run command
handler.execute(sender, cmdArgs);
} else {
handler.sendMessage(sender, "You do not have permission to use this command.");
}
handler.execute(cmdArgs);
} else {
if (sender != null) {
sender.sendMessage("Invalid Command!");

View File

@@ -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");
}
}
}

View File

@@ -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<GameAvatar> 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");
}
}

View File

@@ -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<GameItem> 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");
}
}

View File

@@ -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");
}
}

View File

@@ -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<GameItem> 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");
}
}
}

View File

@@ -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<GameItem> 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

View File

@@ -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());
}
}

View File

@@ -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());
}
}

View File

@@ -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");
}
}

View File

@@ -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");
}
}

View File

@@ -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<GameItem> 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());
}
}

View File

@@ -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");
}
}
}

View File

@@ -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());
}
}

View File

@@ -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());
}
}

View File

@@ -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");
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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");
}
}

View File

@@ -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");
}
}

View File

@@ -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);
}
}