要实现让玩家输入指令后可以传送到其他子服务器,你需要使用 Bukkit 和 Spigot 的 API 来编写插件。下面是一个简单的示例代码:

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

public class TeleportPlugin extends JavaPlugin implements PluginMessageListener {
    
    @Override
    public void onEnable() {
        // 注册插件消息监听器
        getServer().getMessenger().registerIncomingPluginChannel(this, 'BungeeCord', this);
    }
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase('teleport')) {
            if (!(sender instanceof Player)) {
                sender.sendMessage('只有玩家可以执行此命令!');
                return true;
            }
            
            Player player = (Player) sender;
            
            if (args.length < 1) {
                player.sendMessage('请提供要传送到的子服务器名称!');
                return true;
            }
            
            String serverName = args[0];
            
            // 发送插件消息,请求传送到指定子服务器
            ByteArrayDataOutput out = ByteStreams.newDataOutput();
            out.writeUTF('Connect');
            out.writeUTF(serverName);
            player.sendPluginMessage(this, 'BungeeCord', out.toByteArray());
            
            return true;
        }
        
        return false;
    }
    
    @Override
    public void onPluginMessageReceived(String channel, Player player, byte[] message) {
        if (!channel.equals('BungeeCord')) {
            return;
        }
        
        ByteArrayDataInput in = ByteStreams.newDataInput(message);
        String subChannel = in.readUTF();
        
        if (subChannel.equals('Connect')) {
            String serverName = in.readUTF();
            
            // 确认传送成功后的操作
            player.sendMessage('你已经传送到子服务器:' + serverName);
        }
    }
}

请确保你已经导入org.bukkitcom.google.common.io的相关包。这段代码注册了一个名为teleport的命令,在玩家输入/teleport <子服务器名称>后,会发送一个插件消息给BungeeCord代理服务器,请求传送到指定的子服务器。当BungeeCord代理服务器确认传送成功后,会发送一个插件消息给插件,然后插件可以执行相应的操作。

请注意,这个插件需要在BungeeCord代理服务器上运行,并且需要在BungeeCord的配置文件中配置相应的子服务器。

Bukkit 1.20.1 插件:使用指令将玩家传送到其他 Spigot 1.20 子服务器

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

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