Added a command to manipulate health

This commit is contained in:
kuroppoi 2022-07-22 11:48:41 +02:00
parent 654cc6bb19
commit a6f9e649ff
2 changed files with 77 additions and 0 deletions

View file

@ -17,6 +17,7 @@ import brainwine.gameserver.command.commands.EntityCommand;
import brainwine.gameserver.command.commands.ExportCommand;
import brainwine.gameserver.command.commands.GenerateZoneCommand;
import brainwine.gameserver.command.commands.GiveCommand;
import brainwine.gameserver.command.commands.HealthCommand;
import brainwine.gameserver.command.commands.HelpCommand;
import brainwine.gameserver.command.commands.ImportCommand;
import brainwine.gameserver.command.commands.KickCommand;
@ -71,6 +72,7 @@ public class CommandManager {
registerCommand(new PositionCommand());
registerCommand(new RickrollCommand());
registerCommand(new EntityCommand());
registerCommand(new HealthCommand());
}
public static void executeCommand(CommandExecutor executor, String commandLine) {

View file

@ -0,0 +1,75 @@
package brainwine.gameserver.command.commands;
import static brainwine.gameserver.entity.player.NotificationType.ALERT;
import brainwine.gameserver.GameServer;
import brainwine.gameserver.command.Command;
import brainwine.gameserver.command.CommandExecutor;
import brainwine.gameserver.entity.player.Player;
public class HealthCommand extends Command {
@Override
public void execute(CommandExecutor executor, String[] args) {
Player target = null;
if(args.length < 2) {
if(args.length == 0 || !(executor instanceof Player)) {
executor.notify(String.format("Usage: %s", getUsage(executor)), ALERT);
return;
}
target = (Player)executor;
} else {
target = GameServer.getInstance().getPlayerManager().getPlayer(args[1]);
}
if(target == null) {
executor.notify("This player does not exist.", ALERT);
return;
} else if(!target.isOnline()) {
executor.notify("This player is offline.", ALERT);
return;
}
float health = 0;
try {
health = Float.parseFloat(args[0]);
} catch(NumberFormatException e) {
executor.notify("Health must be a valid number.", ALERT);
return;
}
target.setHealth(health);
target.alert(String.format("Your health has been set to %s", target.getHealth()));
if(target != executor) {
executor.notify(String.format("Set %s's health to %s", target.getName(), target.getHealth()), ALERT);
}
}
@Override
public String getName() {
return "health";
}
@Override
public String[] getAliases() {
return new String[] { "hp" };
}
@Override
public String getDescription() {
return "Sets a player's health.";
}
@Override
public String getUsage(CommandExecutor executor) {
return String.format("/health <amount> %s", executor instanceof Player ? "[player]" : "<player>");
}
@Override
public boolean canExecute(CommandExecutor executor) {
return executor.isAdmin();
}
}