Minecraft 自動化

C# 言語を用いて Minecraft にコマンドを送信し、自動化します。例えば、面倒な整地作業や湧き潰し(松明の配置)などをプログラムにやらせることができます。他にも、ダイヤモンド鉱石を探したり、自動で建築したり、効率化だけでなく便利な機能も作ることができます。

実行環境

本サイトでは次のような環境で進めていきます。詳細については 第0回 環境構築をご覧ください。

  • Minecraft 1.16.3
  • Visual Studio 2019 Community
  • Java SE Development Kit 8
必要なスキル

Minecraft 自動化では C# 言語を用いたプログラミングを行うため、C# プログラミングの基本的な知識が必要です。C#を触ったことがない方は、 Microsoft Learn のラーニングパス を一通りやっておくと理解が深まります。これに加えて非同期処理(async/await)を知っていると、スムーズに進みます。

資料や動画について

本サイトではPDF資料と動画によるコンテンツを提供しています。PDFに関しては Google Drive にて自由にダウンロードできます。ただし、資料に関しては個人利用に限ります。 また、 資料や動画の編集や複製、再配布は禁止です。

#0 環境構築

プログラミングするための環境を構築します。Minecraft に関しては setblock, data, testforblock コマンド が利用できるバージョン(1.13以上) を使用してください。

PDF資料 解説動画
#1 時間と天候の操作

自動化の一歩目として天候操作と時間操作を行います。RCON接続に当たって必要な設定と Visual Studio でのプロジェクト作成についても扱います。Minecraft サーバに対してどのように接続するか、どのような処理がなされるかをプログラミングを通して体験します。

PDF資料 解説動画
#2 プレイヤーの座標の取得

プレイヤーの現在地を座標という形でデータを取得します。そのままデータを受け取ると余計な文字も含まれてしまうので、正規表現によるフィルタを行い、変数として扱えるようにします。Minecraft 1.13 より、コマンドの実行場所が初期リスポーン地点になったので、/tp コマンドでは正しい座標を得られなくなりました。そこで、/data get コマンドを使用します。Minecraft 1.12.2 以前の環境では /data get コマンドがないので、/tp コマンドによって取得します。

PDF資料 解説動画
#3 ブロック配置の基礎

ブロックの配置コマンド /setblock と前回やったプレイヤーの相対座標を用いて、ブロックを配置していきます。反復処理を用いて座標をインクリメント(またはデクリメント)し、どのようにブロックが積みあがるかを確認します。

PDF資料 解説動画
#4 ブロック配置の応用

#3 ブロック配置の基礎を応用し、様々な条件に合わせてブロック配置を行います。条件分岐を用いることにより、特定の座標には配置しない、配置するブロックの種類を変更する...などの複雑な処理を行うことができます。

PDF資料 解説動画
#5 鉱石探索の自動化

/execute コマンドを使用してブロックを判別し、特定のブロックが存在しているかを取得します。これを応用すれば、足元に眠っている鉱石を探し出すだけでなく、数え上げや鉱石がある座標の記録などを行うことができます。苦労して探していたダイヤ鉱石も、ピンポイントで探し出せます。

PDF資料 解説動画
#6 整地の自動化

#3 ブロック配置の基礎で行った、空間へのブロック配置の方法を応用して指定した範囲で整地を行います。ブロック配置にて空気ブロックを指定することで整地ができます。また、特定のブロックを整地の対象外にすることができる条件付き整地も考えてみます。

PDF資料 解説動画
#7 湧き潰しの自動化

Mobが湧かないように湧き潰し作業を自動で行えるようにします。ある程度の間隔を保ちながら配置していくのはとても大変な作業ですが、自動化すれば短時間で湧き潰しが終わります。配置方法についてはいくつか工夫すべき点があるので、ゆっくり考えながらやってみましょう。

PDF資料 解説動画
#8 建築の自動化

Excel で作成した設計図をもとに、自動で建築を行います。NuGet の NPOI パッケージを用いると、簡単にExcelにアクセスしてデータを取得することができます。取得したデータを建築したい座標と対応付けしながらブロック配置コマンドリストを作り、建築を自動化します。

PDF資料 解説動画
#9 dataコマンドとNBT

チェスト内のアイテムを操作するための data コマンドと NBT について解説します。チェスト内のアイテムを整理するためにはこれらの理解が必要です。既に data コマンドと NBT の知識がある場合はこのセクションを飛ばして、次に進んでください。

PDF資料 解説動画
#10 アイテム整理の自動化

前回練習した data コマンドと NBT を使用してチェストアイテムを取得したり、アイテムを並べ替えたりしながら、チェスト内のアイテムを整理していきます。拡張メソッドや LINQ などの新しい要素を取り入れながら、自動化でできることを増やしていきましょう。

PDF資料 解説動画
#11 農業の自動化

耕地ブロックを配置して農地を作り、小麦やじゃがいもなどの種を植えて農業を行います。手作業でやると、収穫と種まきを1ブロックずつ行うので面積が広いほど疲れてしまいます。そこで、自動で収穫と種まきををできるようなプログラムを作成してみましょう。

PDF資料 解説動画
#12 打ち上げ花火の自動化

花火アイテムを作成して、花火を打ち上げてみましょう。花火の NBT 構造はかなり複雑なので、まずはそのキーをそれぞれ理解していくところから始めます。これを踏まえて自分で作りたい花火を設計し、プログラムに書き起こしていきます。最後に、花火を何発も打ち上げるようなプログラムをつくり、プチ花火大会を楽しみます。

PDF資料 解説動画