我正在尝试制作一个用于在 C# 中托管 Minecraft CraftBukkit 服务器的 GUI。CraftBukkit 服务器使用 .jar 托管,其源代码可在此处找到:https ://github.com/Bukkit/CraftBukkit/ 。
到目前为止,我能够从它接收输出并像这样给它输入:
var serverProcInfo = new ProcessStartInfo("javaw",
"-jar -Xms" + Ram + "M -Xmx" + Ram + "M \"" +
JarFileLocation + "\" -nojline " + AdditionalParams)
{
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false
};
serverProc = new Process {StartInfo = serverProcInfo };
serverProc.OutputDataReceived += ServerOutputDataReceived;
serverProc.ErrorDataReceived += ServerOutputDataReceived;
serverProc.BeginOutputReadLine();
serverProc.BeginErrorReadLine();
serverProc.WaitForExit();
我想创建一个当前在线玩家的列表。
当玩家加入时,会输出这样的消息player < playername > has joined the server
。我知道我可以拆分此字符串并获取玩家姓名,但我认为这不是很好,因为有人可能会在聊天中说类似的话,而我的程序可以将其解释为好像有人加入了服务器。
我看到其他程序这样做(“BukkitGUI”),但我不确定我该怎么做。.jar 文件是否输出播放器列表?我应该在它的源代码中寻找什么来查看它的输出?
我对 C# 比较陌生,从未学习过 Java。任何帮助,将不胜感激。
EDIT1: 我发现 CraftBukkit.jar 有一个这样的类:
@SuppressWarnings("unchecked")
public Player[] getOnlinePlayers() {
List<EntityPlayer> online = playerList.players;
Player[] players = new Player[online.size()];
for (int i = 0; i < players.length; i++) {
players[i] = online.get(i).playerConnection.getPlayer();
}
return players;
}
有什么办法可以调用这个类吗?