Minestom/demo/src/main/java/net/minestom/demo/commands/TeleportCommand.java

45 lines
1.7 KiB
Java
Raw Normal View History

2022-01-01 18:27:52 +01:00
package net.minestom.demo.commands;
2020-08-09 10:59:12 +02:00
2021-03-04 14:41:41 +01:00
import net.kyori.adventure.text.Component;
2020-08-20 18:18:36 +02:00
import net.minestom.server.MinecraftServer;
2020-11-12 03:09:36 +01:00
import net.minestom.server.command.CommandSender;
2020-08-09 10:59:12 +02:00
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.CommandContext;
2020-08-09 10:59:12 +02:00
import net.minestom.server.command.builder.arguments.ArgumentType;
2021-07-08 13:48:28 +02:00
import net.minestom.server.coordinate.Pos;
2021-07-08 18:15:57 +02:00
import net.minestom.server.entity.Player;
2020-11-12 03:09:36 +01:00
import net.minestom.server.utils.location.RelativeVec;
2020-08-09 10:59:12 +02:00
public class TeleportCommand extends Command {
2020-11-12 03:09:36 +01:00
2020-08-09 10:59:12 +02:00
public TeleportCommand() {
super("tp");
2021-03-04 14:41:41 +01:00
setDefaultExecutor((source, context) -> source.sendMessage(Component.text("Usage: /tp x y z")));
2020-08-09 10:59:12 +02:00
2021-03-09 00:43:35 +01:00
var posArg = ArgumentType.RelativeVec3("pos");
var playerArg = ArgumentType.Word("player");
2020-11-12 03:09:36 +01:00
addSyntax(this::onPlayerTeleport, playerArg);
addSyntax(this::onPositionTeleport, posArg);
2020-08-09 10:59:12 +02:00
}
2020-11-12 03:09:36 +01:00
private void onPlayerTeleport(CommandSender sender, CommandContext context) {
final String playerName = context.get("player");
Player pl = MinecraftServer.getConnectionManager().getPlayer(playerName);
if (sender instanceof Player player) {
2020-11-12 03:09:36 +01:00
player.teleport(pl.getPosition());
}
2021-07-08 18:15:57 +02:00
sender.sendMessage(Component.text("Teleported to player " + playerName));
2020-11-12 03:09:36 +01:00
}
private void onPositionTeleport(CommandSender sender, CommandContext context) {
final Player player = (Player) sender;
2020-11-12 03:09:36 +01:00
final RelativeVec relativeVec = context.get("pos");
2021-07-09 18:18:52 +02:00
final Pos position = player.getPosition().withCoord(relativeVec.from(player));
player.teleport(position);
2021-03-04 14:41:41 +01:00
player.sendMessage(Component.text("You have been teleported to " + position));
2020-11-12 03:09:36 +01:00
}
2020-08-09 10:59:12 +02:00
}