BungeeCord & Spigot 跨服传送插件 (Bukkit 1.20 Java)

本教程将引导你使用 Java 为 Bukkit 1.20 创建一个实现跨服传送功能的插件。玩家可以通过指令将自己或其他玩家传送至指定的服务器。

BungeeCord 插件代码

创建一个命令处理器类来处理 BungeeCord 服务器上的传送指令:

import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.Plugin;

public class TeleportCommand extends Command {
    private Plugin plugin;

    public TeleportCommand(Plugin plugin) {
        super('teleport');
        this.plugin = plugin;
    }

    @Override
    public void execute(CommandSender sender, String[] args) {
        if (args.length != 2) {
            sender.sendMessage('Usage: /teleport <player> <server>');
            return;
        }

        String player = args[0];
        String server = args[1];

        plugin.getProxy().getPlayer(player).connect(plugin.getProxy().getServerInfo(server));
    }
}

在 BungeeCord 插件主类中注册命令处理器:

import net.md_5.bungee.api.plugin.Plugin;

public class MyPlugin extends Plugin {
    @Override
    public void onEnable() {
        getProxy().getPluginManager().registerCommand(this, new TeleportCommand(this));
    }
}

Spigot 插件代码

创建一个命令处理器类来处理 Spigot 服务器上的传送指令:

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

public class TeleportCommand implements CommandExecutor {
    private Plugin plugin;

    public TeleportCommand(Plugin plugin) {
        this.plugin = plugin;
    }

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

        Player player = (Player) sender;

        if (args.length != 2) {
            player.sendMessage('Usage: /teleport <player> <server>');
            return true;
        }

        String targetPlayer = args[0];
        String targetServer = args[1];

        plugin.getServer().getMessenger().sendToBungeeCord('teleport ' + targetPlayer + ' ' + targetServer);
        return true;
    }
}

在 Spigot 插件主类中注册命令处理器:

import org.bukkit.plugin.java.JavaPlugin;

public class MyPlugin extends JavaPlugin {
    @Override
    public void onEnable() {
        getCommand('teleport').setExecutor(new TeleportCommand(this));
    }
}

如何使用

  1. 将上述代码分别编译为 BungeeCord 和 Spigot 插件。
  2. 将 BungeeCord 插件放入 BungeeCord 服务器的 'plugins' 文件夹中。
  3. 将 Spigot 插件放入所有需要使用跨服传送功能的 Spigot 服务器的 'plugins' 文件夹中。
  4. 重启 BungeeCord 服务器和所有 Spigot 服务器。

现在,玩家可以在任何 Spigot 服务器上使用 /teleport <玩家名> <服务器名> 指令将自己或其他玩家传送至指定的服务器。

注意: 你需要将这些代码适配到你的插件环境中,确保正确引入相关的依赖库和配置文件。


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

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