準備
サーバー
マインクラフトのサーバーをあらかじめ用意しておきます。 Dockerで動かすのが一番ラクそうだったのでこちらのDockerイメージを使ってサーバーを動かしました。
docker runする際に25565に加えて25575のポートも使えるようにしておきます。このポートはこの後つくるC#プログラムからマイクラサーバと通信するために使います。
docker run -e EULA=TRUE -d -p 25565:25565 -p 25575:25575 --name mc itzg/minecraft-server
クライアント
Minecraft Java 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);
花火が打ちあがりました。エモいですね。