mirror of https://github.com/Minestom/Minestom.git
45 lines
1.7 KiB
Java
45 lines
1.7 KiB
Java
package net.minestom.demo.commands;
|
|
|
|
import net.kyori.adventure.text.Component;
|
|
import net.minestom.server.MinecraftServer;
|
|
import net.minestom.server.command.CommandSender;
|
|
import net.minestom.server.command.builder.Command;
|
|
import net.minestom.server.command.builder.CommandContext;
|
|
import net.minestom.server.command.builder.arguments.ArgumentType;
|
|
import net.minestom.server.coordinate.Pos;
|
|
import net.minestom.server.entity.Player;
|
|
import net.minestom.server.utils.location.RelativeVec;
|
|
|
|
public class TeleportCommand extends Command {
|
|
|
|
public TeleportCommand() {
|
|
super("tp");
|
|
|
|
setDefaultExecutor((source, context) -> source.sendMessage(Component.text("Usage: /tp x y z")));
|
|
|
|
var posArg = ArgumentType.RelativeVec3("pos");
|
|
var playerArg = ArgumentType.Word("player");
|
|
|
|
addSyntax(this::onPlayerTeleport, playerArg);
|
|
addSyntax(this::onPositionTeleport, posArg);
|
|
}
|
|
|
|
private void onPlayerTeleport(CommandSender sender, CommandContext context) {
|
|
final String playerName = context.get("player");
|
|
Player pl = MinecraftServer.getConnectionManager().getPlayer(playerName);
|
|
if (sender instanceof Player player) {
|
|
player.teleport(pl.getPosition());
|
|
}
|
|
sender.sendMessage(Component.text("Teleported to player " + playerName));
|
|
}
|
|
|
|
private void onPositionTeleport(CommandSender sender, CommandContext context) {
|
|
final Player player = (Player) sender;
|
|
|
|
final RelativeVec relativeVec = context.get("pos");
|
|
final Pos position = player.getPosition().withCoord(relativeVec.from(player));
|
|
player.teleport(position);
|
|
player.sendMessage(Component.text("You have been teleported to " + position));
|
|
}
|
|
}
|