mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-14 14:24:37 +01:00
Refactor commands
This commit is contained in:
@@ -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
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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!");
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user