【C#, Minecraft】Blazor アプリでマイクラにコマンドを投げる

Blazor を一言で言うなら、C#とHTMLを組み合わせてWebアプリを作れるフレームワーク です。正確には ASP.NET Core 上で動作する機能の1つですが、詳しい説明は省きます。気になる人は調べてみてください。

docs.microsoft.com

目的

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 以上でないと作成できないのでご注意を。

f:id:takunology:20201209003512p:plain

認証は必要ないので、サーバを選択してそのまま作成します。

f:id:takunology:20201209003542p:plain

これでプロジェクトが作成できました。確認のために、そのまま実行してみましょう。

f:id:takunology:20201209003641p:plain

これだけで綺麗なWebページが作成できました。

2. CoreRCON の追加

これがないと始まりません。マイクラにコマンドを投げるために必要なパッケージです。バージョン 5.0.0 でインストールしてください。

f:id:takunology:20201209003912p:plain

追加できたら using しておきます。ソリューションエクスプローラ―から _imports.razor を開いて RCON を追記します。

@using CoreRCON

f:id:takunology:20201209004232p:plain

あと、これも追記しておいてください。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 とサーバを起動して、実行してみましょう。

f:id:takunology:20201209013344p:plain

実際に動かしている様子です。

youtu.be

動画では時間や天候を操作しています。ライブラリが優秀なのでソースコードも少し書くだけで動かせます。デザインに関しては適当なので、もっと凝ったものを作ろうと思えば作れると思います。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

ソースコード

今回作成したソースコードです。参考にどうぞ。

github.com

参考

参考になったサイトです。ありがとうございます。

docs.microsoft.com