以下是一个使用Java编写的Bukkit插件,适配BungeeCord与Spigot联动,允许玩家在A服务器上通过tpa命令传送到B服务器好友身边。

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.messaging.PluginMessageListener;

public class MyPlugin extends JavaPlugin implements PluginMessageListener {

    @Override
    public void onEnable() {
        Bukkit.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
        Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
    }

    @Override
    public void onDisable() {
        Bukkit.getServer().getMessenger().unregisterIncomingPluginChannel(this);
        Bukkit.getServer().getMessenger().unregisterOutgoingPluginChannel(this);
    }

    @Override
    public void onPluginMessageReceived(String channel, Player player, byte[] message) {
        // 不需要处理接收的消息
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (command.getName().equalsIgnoreCase("tpa")) {
            if (!(sender instanceof Player)) {
                sender.sendMessage(ChatColor.RED + "该命令只能由玩家执行!");
                return true;
            }

            Player player = (Player) sender;
            if (args.length != 1) {
                player.sendMessage(ChatColor.RED + "正确用法:/tpa <玩家名>");
                return true;
            }

            String targetPlayerName = args[0];
            Player targetPlayer = Bukkit.getPlayer(targetPlayerName);
            if (targetPlayer == null) {
                player.sendMessage(ChatColor.RED + "无法找到玩家 " + targetPlayerName);
                return true;
            }

            sendBungeeCordMessage(player, targetPlayer);
            player.sendMessage(ChatColor.GREEN + "已发送传送请求给 " + targetPlayer.getName());
            return true;
        }
        return false;
    }

    private void sendBungeeCordMessage(Player player, Player targetPlayer) {
        ByteArrayDataOutput out = ByteStreams.newDataOutput();
        out.writeUTF("ConnectOther");
        out.writeUTF(player.getName());
        out.writeUTF(targetPlayer.getServer().getInfo().getName());
        player.sendPluginMessage(this, "BungeeCord", out.toByteArray());
    }
}

请注意,这只是一个基本的插件框架,你可能需要根据你的具体需求进行修改和完善。此外,你还需要在插件的plugin.yml文件中添加以下内容,以确保你的插件能够正常工作:

name: MyPlugin
version: 1.0
main: com.example.MyPlugin
author: YourName
description: A plugin for Bukkit 1.20.1 that allows players to teleport to their friends on other servers using BungeeCord and Spigot.
api-version: 1.20.1-R0.1-SNAPSHOT

请将com.example.MyPlugin替换为你的插件类的完整路径

用Java写一个Bukkit 1201 适配BungeeCord与Spigot联动的 玩家在A服务器可以tpa到B服务器好友身边

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

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