Minecraft自動化 (2020年)
2024/09/04 公開 (2024/10/12 更新)
実行環境
- Minecraft 1.16.3
- Visual Studio 2019 Community
- Java SE Development Kit 8
必要なスキル
Minecraft 自動化では C# 言語を用いたプログラミングを行うため、C# プログラミングの基本的な知識が必要です。C#を触ったことがない方は、 Microsoft Learn のラーニングパス を一通りやっておくと理解が深まります。これに加えて非同期処理(async/await)を知っていると、スムーズに進みます。
コンテンツ
0. 環境構築
プログラミングするための環境を構築します。Minecraft に関しては setblock, data, testforblock コマンド が利用できるバージョンを使用してください。
1. 時間と天候の操作
自動化の一歩目として天候操作と時間操作を行います。RCON接続に当たって必要な設定と Visual Studio でのプロジェクト作成についても扱います。Minecraft サーバに対してどのように接続するか、どのような処理がなされるかをプログラミングを通して体験します。
2. プレイヤーの座標の取得
プレイヤーの現在地を座標という形でデータを取得します。そのままデータを受け取ると余計な文字も含まれてしまうので、正規表現によるフィルタを行い、変数として扱えるようにします。Minecraft 1.13 より、コマンドの実行場所が初期リスポーン地点になったので、/tp コマンドでは正しい座標を得られなくなりました。そこで、/data get コマンドを使用します。Minecraft 1.12.2 以前の環境では /data get コマンドがないので、/tp コマンドによって取得します。
3. ブロックの設置~基礎編~
ブロックの配置コマンド /setblock と前回やったプレイヤーの相対座標を用いて、ブロックを配置していきます。反復処理を用いて座標をインクリメント(またはデクリメント)し、どのようにブロックが積みあがるかを確認します。
4. ブロックの設置~応用編~
ブロック配置の基礎を応用し、様々な条件に合わせてブロック配置を行います。条件分岐を用いることにより、特定の座標には配置しない、配置するブロックの種類を変更する...などの複雑な処理を行うことができます。
5. 鉱石の自動探索
/execute コマンドを使用してブロックを判別し、特定のブロックが存在しているかを取得します。これを応用すれば、足元に眠っている鉱石を探し出すだけでなく、数え上げや鉱石がある座標の記録などを行うことができます。苦労して探していたダイヤ鉱石も、ピンポイントで探し出せます。
6. 整地の自動化
ブロック配置の基礎で行った、空間へのブロック配置の方法を応用して指定した範囲で整地を行います。ブロック配置にて空気ブロックを指定することで整地ができます。また、特定のブロックを整地の対象外にすることができる条件付き整地も考えてみましょう。
7. 湧き潰しの自動化
Mobが湧かないように湧き潰し作業を自動で行えるようにします。ある程度の間隔を保ちながら配置していくのはとても大変な作業ですが、自動化すれば短時間で湧き潰しが終わります。配置方法についてはいくつか工夫すべき点があるので、ゆっくり考えながらやってみましょう。
8. 建築の自動化
Excel で作成した設計図をもとに、自動で建築を行います。NuGet の NPOI パッケージを用いると、簡単にExcelにアクセスしてデータを取得することができます。取得したデータを建築したい座標と対応付けしながらブロック配置コマンドリストを作り、建築を自動化します。
9. data コマンドと NBT
チェスト内のアイテムを操作するための data コマンドと NBT について解説します。チェスト内のアイテムを整理するためにはこれらの理解が必要です。既に data コマンドと NBT の知識がある場合はこのセクションを飛ばして、次に進んでください。
10. アイテム整理の自動化
前回練習した data コマンドと NBT を使用してチェストアイテムを取得したり、アイテムを並べ替えたりしながら、チェスト内のアイテムを整理していきます。拡張メソッドや LINQ などの新しい要素を取り入れながら、自動化でできることを増やしていきましょう。
11. 農業の自動化
耕地ブロックを配置して農地を作り、小麦やじゃがいもなどの種を植えて農業を行います。手作業でやると、収穫と種まきを1ブロックずつ行うので面積が広いほど疲れてしまいます。そこで、自動で収穫と種まきををできるようなプログラムを作成してみましょう。
12. 打ち上げ花火の自動化
花火アイテムを作成して、花火を打ち上げてみましょう。花火の NBT 構造はかなり複雑なので、まずはそのキーをそれぞれ理解していくところから始めます。これを踏まえて自分で作りたい花火を設計し、プログラムに書き起こしていきます。最後に、花火を何発も打ち上げるようなプログラムをつくり、プチ花火大会を楽しみます。
サンプルコード
各回で作成したファイルを以下のリポジトリにまとめています。
https://github.com/takunology/MCwithCode_Automation/tree/main/MinecraftAutomation