以下是一个用 Java 编写的示例代码,可以实现 Bukkit 1.20.1 版本中的玩家 tpa 功能,并提供一个 back 命令,允许玩家返回之前的位置。

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
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 TpaPlugin extends JavaPlugin {
    private HashMap<UUID, Location> tpaRequests = new HashMap<>();
    private HashMap<UUID, Location> backPositions = new HashMap<>();

    @Override
    public void onEnable() {
        getLogger().info('TpaPlugin has been enabled!');
    }

    @Override
    public void onDisable() {
        getLogger().info('TpaPlugin has been disabled!');
    }

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

            if (args.length != 1) {
                sender.sendMessage('Usage: /tpa <playername>');
                return true;
            }

            Player player = (Player) sender;
            Player target = Bukkit.getPlayer(args[0]);

            if (target == null) {
                sender.sendMessage('Player not found!');
                return true;
            }

            tpaRequests.put(target.getUniqueId(), player.getLocation());
            sender.sendMessage('Sent a tpa request to ' + target.getName());
            target.sendMessage('Player ' + player.getName() + ' wants to teleport to you. Use /tpaccept to accept or /tpdeny to deny.');

            return true;
        }
        else if (command.getName().equalsIgnoreCase('tpaccept')) {
            if (!(sender instanceof Player)) {
                sender.sendMessage('Only players can use this command!');
                return true;
            }

            Player player = (Player) sender;
            UUID playerId = player.getUniqueId();

            if (!tpaRequests.containsKey(playerId)) {
                player.sendMessage('No tpa requests found!');
                return true;
            }

            Location backPosition = player.getLocation();
            backPositions.put(playerId, backPosition);

            Location tpaLocation = tpaRequests.get(playerId);
            player.teleport(tpaLocation);
            player.sendMessage('Teleported to ' + tpaLocation.getWorld().getName() + ', ' + tpaLocation.getBlockX() + ', ' + tpaLocation.getBlockY() + ', ' + tpaLocation.getBlockZ());
            tpaRequests.remove(playerId);

            return true;
        }
        else if (command.getName().equalsIgnoreCase('tpdeny')) {
            if (!(sender instanceof Player)) {
                sender.sendMessage('Only players can use this command!');
                return true;
            }

            Player player = (Player) sender;
            UUID playerId = player.getUniqueId();

            if (!tpaRequests.containsKey(playerId)) {
                player.sendMessage('No tpa requests found!');
                return true;
            }

            player.sendMessage('Tpa request denied!');
            tpaRequests.remove(playerId);

            return true;
        }
        else if (command.getName().equalsIgnoreCase('back')) {
            if (!(sender instanceof Player)) {
                sender.sendMessage('Only players can use this command!');
                return true;
            }

            Player player = (Player) sender;
            UUID playerId = player.getUniqueId();

            if (!backPositions.containsKey(playerId)) {
                player.sendMessage('No previous position found!');
                return true;
            }

            Location backPosition = backPositions.get(playerId);
            player.teleport(backPosition);
            player.sendMessage('Teleported back to previous position!');

            return true;
        }

        return false;
    }
}

请注意,这只是一个示例代码,并未进行全面的错误处理和输入验证。在实际使用中,你可能需要根据自己的需求进行修改和扩展。

Bukkit 1.20.1 玩家 Teleport (TPA) 插件 Java 代码示例

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

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