mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-28 22:47:41 +02:00
78 lines
2.5 KiB
Java
78 lines
2.5 KiB
Java
package fr.themode.demo.commands;
|
|
|
|
import fr.themode.command.Arguments;
|
|
import fr.themode.command.Command;
|
|
import fr.themode.command.arguments.Argument;
|
|
import fr.themode.command.arguments.ArgumentType;
|
|
import fr.themode.command.arguments.number.ArgumentNumber;
|
|
import net.minestom.server.entity.Player;
|
|
|
|
public class HealthCommand extends Command<Player> {
|
|
|
|
public HealthCommand() {
|
|
super("health", "h", "healthbar");
|
|
|
|
setCondition(this::condition);
|
|
|
|
setDefaultExecutor(this::defaultExecutor);
|
|
|
|
Argument arg0 = ArgumentType.Word("mode").from("set", "add");
|
|
|
|
Argument arg1 = ArgumentType.Integer("value").between(0, 100);
|
|
|
|
addCallback(this::modeCallback, arg0);
|
|
addCallback(this::valueCallback, arg1);
|
|
|
|
addSyntax(this::execute, arg0);
|
|
addSyntax(this::execute2, arg0, arg1);
|
|
}
|
|
|
|
private boolean condition(Player player) {
|
|
// Your custom condition, called no matter the syntax used
|
|
boolean hasPerm = true;
|
|
if (!hasPerm) {
|
|
player.sendMessage("You do not have permission !");
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private void defaultExecutor(Player player, Arguments args) {
|
|
player.sendMessage("Correct usage: health [set/add] [number]");
|
|
}
|
|
|
|
private void modeCallback(Player player, String value, int error) {
|
|
player.sendMessage("SYNTAX ERROR: '" + value + "' should be replaced by 'set' or 'add'");
|
|
}
|
|
|
|
private void valueCallback(Player player, String value, int error) {
|
|
switch (error) {
|
|
case ArgumentNumber.NOT_NUMBER_ERROR:
|
|
player.sendMessage("SYNTAX ERROR: '" + value + "' isn't a number!");
|
|
break;
|
|
case ArgumentNumber.RANGE_ERROR:
|
|
player.sendMessage("SYNTAX ERROR: " + value + " is not between 0 and 100");
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void execute(Player player, Arguments args) {
|
|
player.sendMessage("/health " + args.getWord("mode") + " [Integer]");
|
|
}
|
|
|
|
private void execute2(Player player, Arguments args) {
|
|
String mode = args.getWord("mode");
|
|
int value = args.getInteger("value");
|
|
|
|
switch (mode.toLowerCase()) {
|
|
case "set":
|
|
player.setHealth(value);
|
|
break;
|
|
case "add":
|
|
player.setHealth(player.getHealth() + value);
|
|
break;
|
|
}
|
|
player.sendMessage("You have now " + player.getHealth() + " health");
|
|
}
|
|
|
|
} |