ひでぼ~blog

C#ときどきゲーム

MinecraftConnectionを試す

C#でマイクラがアツイという噂を聞いたので試してみます。

準備

サーバー

マインクラフトのサーバーをあらかじめ用意しておきます。 Dockerで動かすのが一番ラクそうだったのでこちらのDockerイメージを使ってサーバーを動かしました。

hub.docker.com

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パッケージが公開されているのでインストールしておきます。

www.nuget.org

その他

次のような環境でプログラムを書きます。

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);

花火が打ちあがりました。エモいですね。