準備
サーバー
マインクラフトのサーバーをあらかじめ用意しておきます。 Dockerで動かすのが一番ラクそうだったのでこちらのDockerイメージを使ってサーバーを動かしました。
docker runする際に25565に加えて25575のポートも使えるようにしておきます。このポートはこの後つくるC#プログラムからマイクラサーバと通信するために使います。
docker run -e EULA=TRUE -d -p 25565:25565 -p 25575:25575 --name mc itzg/minecraft-server
クライアント
MinecraftJava Editionを使います。バージョンは1.92.2です。
ライブラリ
C#でマイクラサーバーをいじれるMinecraftConnectionというライブラリを使います。 Nugetパッケージが公開されているのでインストールしておきます。
その他
次のような環境でプログラムを書きます。
- .NET 6
- Visual Studio 2022
Hello Worldする
サーバーとの疎通確認も兼ねて、画面にHello World!と表示させてみます。passはRCON用のパスワードでserver.propertiesに記載があります。
using MinecraftConnection; var address ="127.0.0.1"; ushort port =25575; var pass ="minecraft"; var command =new MinecraftCommands(address, port, pass); command.DisplayTitle("Hello, Minecraft!");
大雨の中ですが表示できました。
花火を打ち上げてみる
花火を打ち上げるAPIがあったので打ち上げてみました。 打ち上げる位置はPositionというクラスにx, y, zの座標を渡してnewします。
using MinecraftConnection; using MinecraftConnection.Entity; var address ="127.0.0.1"; ushort port =25575; var pass ="minecraft"; var command =new MinecraftCommands(address, port, pass); var position =new Position(-101.5, 66.0, -51.5); var fireworks =new Fireworks() { LifeTime =30, Type = FireworkType.LargeBall, Colors = FireworkOption.RandomColor(), FadeColors =new List<FireworkColors> { FireworkColors.WHITE }, }; command.SetOffFireworks(position, fireworks);
花火が打ちあがりました。エモいですね。