要实现 Spigot 1.20 与 BungeeCord 核心之间的通信,可以使用 BungeeCord 插件 API 提供的方法。下面是一个示例代码,展示了如何在 Spigot 服务器上实现玩家输入指令后传送到其他子服务器。

首先,在 Spigot 服务器上创建一个命令处理类,例如名为'TeleportCommand'的类:

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class TeleportCommand implements CommandExecutor {

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

        Player player = (Player) sender;

        // 获取玩家输入的目标服务器名称
        if (args.length < 1) {
            player.sendMessage('请输入要传送到的服务器名称!');
            return true;
        }

        String serverName = args[0];

        // 使用 BungeeCord 插件 API 传送玩家到指定服务器
        ByteArrayDataOutput out = ByteStreams.newDataOutput();
        out.writeUTF('ConnectOther');
        out.writeUTF(player.getName());
        out.writeUTF(serverName);
        player.sendPluginMessage(YourPlugin.getInstance(), 'BungeeCord', out.toByteArray());

        return true;
    }
}

然后,在你的主插件类中注册该命令处理类:

import org.bukkit.plugin.java.JavaPlugin;

public class YourPlugin extends JavaPlugin {

    private static YourPlugin instance;

    @Override
    public void onEnable() {
        instance = this;

        // 注册命令处理类
        getCommand('teleport').setExecutor(new TeleportCommand());

        // 注册插件消息通道
        getServer().getMessenger().registerOutgoingPluginChannel(this, 'BungeeCord');
    }

    public static YourPlugin getInstance() {
        return instance;
    }
}

最后,在 BungeeCord 的配置文件'config.yml'中,确保启用了插件消息通道:

settings:
  # 允许插件消息通道
  plugin-message-channel: BungeeCord

现在,当玩家在 Spigot 服务器上使用'/teleport <服务器名称>'命令时,他们将会被传送到指定的子服务器。请注意,这需要在 BungeeCord 和 Spigot 服务器之间正确设置,并且 Spigot 服务器上必须安装 BungeeCord 插件。

Spigot 1.20 与 BungeeCord 核心通信:实现玩家指令传送

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

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