BungeeCord & Spigot 跨服传送插件 (Bukkit 1.20 Java)
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));
}
}
如何使用
- 将上述代码分别编译为 BungeeCord 和 Spigot 插件。
- 将 BungeeCord 插件放入 BungeeCord 服务器的 'plugins' 文件夹中。
- 将 Spigot 插件放入所有需要使用跨服传送功能的 Spigot 服务器的 'plugins' 文件夹中。
- 重启 BungeeCord 服务器和所有 Spigot 服务器。
现在,玩家可以在任何 Spigot 服务器上使用 /teleport <玩家名> <服务器名> 指令将自己或其他玩家传送至指定的服务器。
注意: 你需要将这些代码适配到你的插件环境中,确保正确引入相关的依赖库和配置文件。
原文地址: https://www.cveoy.top/t/topic/fPLL 著作权归作者所有。请勿转载和采集!