以下是使用Java编写的Bukkit插件代码,实现了玩家传送到另一个玩家身边后,可以输入“back”命令传送回上一个位置:

import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.HashMap;
import java.util.UUID;

public class TeleportPlugin extends JavaPlugin implements CommandExecutor {

    private HashMap<UUID, Location> prevLocations;

    @Override
    public void onEnable() {
        // 初始化HashMap
        prevLocations = new HashMap<>();

        // 注册命令
        getCommand("back").setExecutor(this);
    }

    @Override
    public void onDisable() {
        // 清空HashMap
        prevLocations.clear();
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage("Only players can use this command.");
            return true;
        }

        Player player = (Player) sender;

        // 如果玩家输入的是/back命令
        if (command.getName().equalsIgnoreCase("back")) {
            // 检查玩家是否有上一个位置
            if (prevLocations.containsKey(player.getUniqueId())) {
                // 获取上一个位置
                Location prevLocation = prevLocations.get(player.getUniqueId());

                // 传送玩家到上一个位置
                player.teleport(prevLocation);

                // 从HashMap中移除上一个位置
                prevLocations.remove(player.getUniqueId());

                player.sendMessage("You have been teleported back.");
            } else {
                player.sendMessage("You don't have a previous location to teleport back to.");
            }

            return true;
        }

        return false;
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage("Only players can use this command.");
            return true;
        }

        Player player = (Player) sender;
        Player targetPlayer = player.getServer().getPlayer(args[0]);

        // 检查目标玩家是否在线
        if (targetPlayer == null) {
            player.sendMessage("The specified player is not online.");
            return true;
        }

        // 保存当前位置到HashMap
        prevLocations.put(player.getUniqueId(), player.getLocation());

        // 传送玩家到目标玩家身边
        player.teleport(targetPlayer.getLocation());

        player.sendMessage("You have been teleported to " + targetPlayer.getName() + "'s location.");

        return true;
    }
}

请注意,这只是一个简单的示例代码,你需要将其保存为一个Java文件,并将其编译为一个可用的Bukkit插件。

Bukkit 1.20.1 插件:玩家传送回上一个位置 - Java 代码示例

原文地址: https://www.cveoy.top/t/topic/pWu1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录