以下是一个示例的 Java 代码,用于在 Bukkit 1.20.1 中实现玩家传送到另一个玩家身边后,输入'back'可以传送回上一个位置的功能。

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.CommandExecutor;
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> previousLocations;

    @Override
    public void onEnable() {
        getCommand("back").setExecutor(this);
        previousLocations = new HashMap<>();
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (sender instanceof Player) {
            Player player = (Player) sender;

            if (command.getName().equalsIgnoreCase("back")) {
                UUID playerId = player.getUniqueId();

                if (previousLocations.containsKey(playerId)) {
                    Location previousLocation = previousLocations.get(playerId);
                    player.teleport(previousLocation);
                    previousLocations.remove(playerId);
                    player.sendMessage("你已成功返回上一个位置!");
                } else {
                    player.sendMessage("没有上一个位置可供返回!");
                }

                return true;
            }
        }

        return false;
    }

    @Override
    public void onDisable() {
        previousLocations.clear();
    }

    public void storePreviousLocation(Player player) {
        previousLocations.put(player.getUniqueId(), player.getLocation());
    }
}

在这个代码中,我们创建了一个名为TeleportPlugin的插件类,实现了CommandExecutor接口,并重写了onEnableonCommandonDisable方法。

onEnable方法中,我们注册了一个名为'back'的命令,并将其执行者设置为插件类自身。

onCommand方法中,我们首先检查命令发送者是否是一个玩家,并判断是否为'back'命令。如果是,我们获取玩家的唯一ID,并检查之前是否有存储的位置。如果有,我们将玩家传送回上一个位置,并将其从previousLocations哈希映射中移除。如果没有,我们向玩家发送一条消息表示没有可返回的位置。

storePreviousLocation方法中,我们将玩家的当前位置存储在previousLocations哈希映射中,以供后续使用。

最后,在onDisable方法中,我们清空previousLocations哈希映射,以防止数据泄漏。

请注意,这只是一个简单的示例,实际应用中可能需要更多的错误处理和安全检查。

Bukkit 1.20.1 玩家传送回上一个位置插件:Java 代码实现

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

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