mirror of https://github.com/Minestom/Minestom.git
Improved demo commands clarity
This commit is contained in:
parent
60d01fab11
commit
6e77bb8358
|
@ -12,11 +12,11 @@ import org.jetbrains.annotations.NotNull;
|
|||
public interface CommandExecutor {
|
||||
|
||||
/**
|
||||
* Executes the command callback once the syntax has been called (or the default executor)
|
||||
* Executes the command callback once the syntax has been called (or the default executor).
|
||||
*
|
||||
* @param source the sender of the command
|
||||
* @param sender the sender of the command
|
||||
* @param args contains all the parsed arguments,
|
||||
* the id is the one initialized when creating the argument object
|
||||
*/
|
||||
void apply(@NotNull CommandSender source, @NotNull Arguments args);
|
||||
void apply(@NotNull CommandSender sender, @NotNull Arguments args);
|
||||
}
|
|
@ -233,7 +233,7 @@ public class Vector {
|
|||
}
|
||||
|
||||
/**
|
||||
* Gets a new vector.
|
||||
* Gets a new vector with the same values.
|
||||
*
|
||||
* @return vector
|
||||
*/
|
||||
|
@ -264,4 +264,13 @@ public class Vector {
|
|||
public void setZ(float z) {
|
||||
this.z = z;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a new {@link Position} from this vector.
|
||||
*
|
||||
* @return this vector as a position
|
||||
*/
|
||||
public Position toPosition() {
|
||||
return new Position(x, y, z);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,8 +3,7 @@ package demo;
|
|||
import demo.blocks.BurningTorchBlock;
|
||||
import demo.blocks.StoneBlock;
|
||||
import demo.blocks.UpdatableBlockDemo;
|
||||
import demo.commands.GamemodeCommand;
|
||||
import demo.commands.TestCommand;
|
||||
import demo.commands.*;
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.command.CommandManager;
|
||||
import net.minestom.server.instance.block.BlockManager;
|
||||
|
@ -30,13 +29,13 @@ public class Main {
|
|||
CommandManager commandManager = MinecraftServer.getCommandManager();
|
||||
commandManager.register(new TestCommand());
|
||||
commandManager.register(new GamemodeCommand());
|
||||
/*commandManager.register(new EntitySelectorCommand());
|
||||
commandManager.register(new EntitySelectorCommand());
|
||||
commandManager.register(new HealthCommand());
|
||||
commandManager.register(new SimpleCommand());
|
||||
commandManager.register(new GamemodeCommand());
|
||||
commandManager.register(new DimensionCommand());
|
||||
commandManager.register(new ShutdownCommand());
|
||||
commandManager.register(new TeleportCommand());*/
|
||||
commandManager.register(new TeleportCommand());
|
||||
|
||||
commandManager.setUnknownCommandCallback((sender, command) -> sender.sendMessage("unknown command"));
|
||||
|
||||
|
|
|
@ -17,15 +17,15 @@ public class HealthCommand extends Command {
|
|||
|
||||
setDefaultExecutor(this::defaultExecutor);
|
||||
|
||||
Argument arg0 = ArgumentType.Word("mode").from("set", "add");
|
||||
Argument modeArg = ArgumentType.Word("mode").from("set", "add");
|
||||
|
||||
Argument arg1 = ArgumentType.Integer("value").between(0, 100);
|
||||
Argument valueArg = ArgumentType.Integer("value").between(0, 100);
|
||||
|
||||
setArgumentCallback(this::modeCallback, arg0);
|
||||
setArgumentCallback(this::valueCallback, arg1);
|
||||
setArgumentCallback(this::onModeError, modeArg);
|
||||
setArgumentCallback(this::onValueError, valueArg);
|
||||
|
||||
addSyntax(this::execute2, arg0, arg1);
|
||||
addSyntax(this::execute, arg0);
|
||||
addSyntax(this::sendSuggestionMessage, modeArg);
|
||||
addSyntax(this::onHealthCommand, modeArg, valueArg);
|
||||
}
|
||||
|
||||
private boolean condition(CommandSender sender, String commandString) {
|
||||
|
@ -40,11 +40,11 @@ public class HealthCommand extends Command {
|
|||
sender.sendMessage("Correct usage: health [set/add] [number]");
|
||||
}
|
||||
|
||||
private void modeCallback(CommandSender sender, String value, int error) {
|
||||
private void onModeError(CommandSender sender, String value, int error) {
|
||||
sender.sendMessage("SYNTAX ERROR: '" + value + "' should be replaced by 'set' or 'add'");
|
||||
}
|
||||
|
||||
private void valueCallback(CommandSender sender, String value, int error) {
|
||||
private void onValueError(CommandSender sender, String value, int error) {
|
||||
switch (error) {
|
||||
case ArgumentNumber.NOT_NUMBER_ERROR:
|
||||
sender.sendMessage("SYNTAX ERROR: '" + value + "' isn't a number!");
|
||||
|
@ -55,14 +55,14 @@ public class HealthCommand extends Command {
|
|||
}
|
||||
}
|
||||
|
||||
private void execute(CommandSender sender, Arguments args) {
|
||||
private void sendSuggestionMessage(CommandSender sender, Arguments args) {
|
||||
sender.sendMessage("/health " + args.getWord("mode") + " [Integer]");
|
||||
}
|
||||
|
||||
private void execute2(CommandSender sender, Arguments args) {
|
||||
Player player = (Player) sender;
|
||||
String mode = args.getWord("mode");
|
||||
int value = args.getInteger("value");
|
||||
private void onHealthCommand(CommandSender sender, Arguments args) {
|
||||
final Player player = (Player) sender;
|
||||
final String mode = args.getWord("mode");
|
||||
final int value = args.getInteger("value");
|
||||
|
||||
switch (mode.toLowerCase()) {
|
||||
case "set":
|
||||
|
@ -72,6 +72,7 @@ public class HealthCommand extends Command {
|
|||
player.setHealth(player.getHealth() + value);
|
||||
break;
|
||||
}
|
||||
|
||||
player.sendMessage("You have now " + player.getHealth() + " health");
|
||||
}
|
||||
|
||||
|
|
|
@ -1,42 +1,45 @@
|
|||
package demo.commands;
|
||||
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.Arguments;
|
||||
import net.minestom.server.command.builder.Command;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.arguments.ArgumentType;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.utils.Position;
|
||||
import net.minestom.server.utils.location.RelativeVec;
|
||||
|
||||
public class TeleportCommand extends Command {
|
||||
|
||||
public TeleportCommand() {
|
||||
super("tp");
|
||||
|
||||
setDefaultExecutor((source, args) -> source.sendMessage("Usage: /tp x y z"));
|
||||
|
||||
Argument x = ArgumentType.Float("x");
|
||||
Argument y = ArgumentType.Float("y");
|
||||
Argument z = ArgumentType.Float("z");
|
||||
Argument playerArg = ArgumentType.Word("pl");
|
||||
Argument posArg = ArgumentType.RelativeVec3("pos");
|
||||
Argument playerArg = ArgumentType.Word("player");
|
||||
|
||||
setArgumentCallback((source, value, error) -> {
|
||||
System.out.println("error: " + error);
|
||||
}, x);
|
||||
|
||||
addSyntax((sender, args) -> {
|
||||
Player pl = MinecraftServer.getConnectionManager().getPlayer(args.getWord("pl"));
|
||||
if (pl != null && sender.isPlayer()) {
|
||||
Player player = (Player) sender;
|
||||
player.teleport(pl.getPosition());
|
||||
}
|
||||
}, playerArg);
|
||||
|
||||
addSyntax((source, args) -> {
|
||||
final float posX = args.getFloat("x");
|
||||
final float posY = args.getFloat("y");
|
||||
final float posZ = args.getFloat("z");
|
||||
|
||||
((Player) source).teleport(new Position(posX, posY, posZ));
|
||||
source.sendMessage("TELEPORTING");
|
||||
}, x, y, z);
|
||||
addSyntax(this::onPlayerTeleport, playerArg);
|
||||
addSyntax(this::onPositionTeleport, posArg);
|
||||
}
|
||||
|
||||
private void onPlayerTeleport(CommandSender sender, Arguments args) {
|
||||
Player pl = MinecraftServer.getConnectionManager().getPlayer(args.getWord("player"));
|
||||
if (pl != null && sender.isPlayer()) {
|
||||
Player player = (Player) sender;
|
||||
player.teleport(pl.getPosition());
|
||||
}
|
||||
}
|
||||
|
||||
private void onPositionTeleport(CommandSender sender, Arguments args) {
|
||||
final Player player = sender.asPlayer();
|
||||
|
||||
final RelativeVec relativeVec = args.getRelativeVector("pos");
|
||||
final Position position = relativeVec.fromRelativePosition(player).toPosition();
|
||||
|
||||
player.teleport(position);
|
||||
player.sendMessage("You have been teleported to " + position);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue