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;
}
このクラスを呼び出す方法はありますか?