用Java写一个Bukkit120的获取服务器全部BC子服的功能
要实现获取Bukkit 1.20服务器全部BC子服的功能,可以使用以下代码:
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.ArrayList;
import java.util.List;
public class BCSubServerPlugin extends JavaPlugin {
private List<String> bcSubServers;
@Override
public void onEnable() {
bcSubServers = new ArrayList<>();
// 使用BukkitRunnable每隔5秒检查一次BC子服
new BukkitRunnable() {
@Override
public void run() {
bcSubServers.clear();
for (String serverName : Bukkit.getOnlinePlayers().stream()
.map(player -> player.getDisplayName().split("_")[1])
.distinct()
.toArray(String[]::new)) {
bcSubServers.add(serverName);
}
}
}.runTaskTimer(this, 0, 100); // 每隔5秒运行一次
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase("subservers")) {
sender.sendMessage("BC子服列表:");
for (String serverName : bcSubServers) {
sender.sendMessage(serverName);
}
return true;
}
return false;
}
}
这个插件会每隔5秒检查一次服务器上的BC子服,并将它们存储在一个列表中。当玩家输入/subservers命令时,会将列表中的BC子服发送给命令发送者。你可以将以上代码保存为一个Java文件,然后使用适当的构建工具进行编译和打包。
原文地址: http://www.cveoy.top/t/topic/ib36 著作权归作者所有。请勿转载和采集!