Blazor を一言で言うなら、C#とHTMLを組み合わせてWebアプリを作れるフレームワーク です。正確には ASP.NET Core 上で動作する機能の1つですが、詳しい説明は省きます。気になる人は調べてみてください。
目的
Visual Studio で Blazor アプリのプロジェクトを作成し、CoreRCON経由でマイクラにコマンドを投げる!
前回、Xamarin で CoreRCON が利用できることを確認できたので、これを Webアプリから動かせるかを検証します。
実行環境
- Windows 10
- .NET Core 5.0.100
- Visual Studio 2019 Version 16.8.2
- Minecraft 1.16.3 (バニラ版, RCON許可済みサーバ)
- CoreRCON 5.0.0 (NuGet)
1. Blazor プロジェクトの作成
まずは Blazor プロジェクトを作ります。.NET Core 3.1 以上でないと作成できないのでご注意を。
認証は必要ないので、サーバを選択してそのまま作成します。
これでプロジェクトが作成できました。確認のために、そのまま実行してみましょう。
これだけで綺麗なWebページが作成できました。
2. CoreRCON の追加
これがないと始まりません。マイクラにコマンドを投げるために必要なパッケージです。バージョン 5.0.0 でインストールしてください。
追加できたら using しておきます。ソリューションエクスプローラ―から _imports.razor
を開いて RCON を追記します。
@using CoreRCON
あと、これも追記しておいてください。IPアドレス変換と非同期処理を行うのに必要です。
@using System.Net; @using System.Threading.Tasks;
これで準備ができました。
3. Webページの作成
コマンドを投げるためのページを作ります。ソリューションエクスプローラの Pages
ディレクトリ内にある index.razor
を編集します。入力フォームをつくり、続けて C# のコードを書いていきます。
@page "/" <h1>マイクラにコマンドを投げる!</h1> <div> <label>コマンド</label> <div class="m-1"> <input class="form-control" @bind="command" /> </div> <div class="mt-3"> <button type="button" class="btn btn-outline-primary" @onclick="Send">Send</button> </div> </div> @code{ static IPAddress ipaddress = IPAddress.Parse("127.0.0.1"); static ushort port = 25575; static string password = "minecraft"; static RCON rcon = new RCON(ipaddress, port, password); private string command; //Web UI private async Task Send() { await rcon.ConnectAsync(); var weather_result = await rcon.SendCommandAsync(command); } }
プログラムが書けたら Minecraft とサーバを起動して、実行してみましょう。
実際に動かしている様子です。
動画では時間や天候を操作しています。ライブラリが優秀なのでソースコードも少し書くだけで動かせます。デザインに関しては適当なので、もっと凝ったものを作ろうと思えば作れると思います。JavaScript の代わりに C# を書いているので、高度なUIなどはマイクロソフトのリファレンスなどを参照したほうが良さそうです。
4. 感想とか
今までに WPFアプリ, Android アプリ, iOS アプリ, UWP アプリ, コンソールアプリ, ASP.NET Core と様々なプラットフォームでやってきましたが、 どの環境でも問題なく動かせるのは正直スゴイと思います。C#言語1つで様々な環境に対応でき、ライブラリさえ導入できればロジックの部分はほぼ変更無しで移植できるのが嬉しい点です。
マイクラでプログラミングしたい方へ
プログラムを動かしてマイクラを自動化する企画を考えたり、その方法を公開したりしています。興味があればぜひご覧ください。
https://www.mcwithcode.com/%E3%83%88%E3%83%83%E3%83%97www.mcwithcode.com
ソースコード
今回作成したソースコードです。参考にどうぞ。
参考
参考になったサイトです。ありがとうございます。