[Minecraft] コマンドブロックはもう不要?Minescriptで作るオリジナルマイクラ体験

Minecraft

マイクラではコマンドブロックが用意されていますが、入力が難しかったりとか、
実行するには少し大変なところもあります。
MinescriptでPythonを使って自分の欲しいコマンドを自由に作ることができます。

Python実行環境準備

まずはマイクラでPythonを実行できるようにしておきます。
ここではMinescript Modを使いますので、詳しいインストール設定方法はこちらをご確認ください。

コマンド作成

自分で作成したいコマンドを考えてみます。
ここではプレイヤーを中心に円を描くコマンド(c:circleの略)を作成したいとします。
円を描くのは建築でも使えるコマンドかと思います。

  • コマンド名:c <半径>
  • コマンド内容:プレイヤーを中心に<半径>の円を描く。配置するブロックはガラスブロック(glass)とする。

ファイル作成

コマンド名に従ったファイルを作成します。
コマンド「c」であれば、c.pyというファイルを作成しましょう。

このファイルを「%appdata%\.minecraft\minescript」フォルダに保存します。

コーディング

c.pyに以下のコードを貼り付けて、上書き保存します。

import minescript
import math
import sys

def draw_circle_points(r):
    points = set()
    for x in range(-r, r + 1):
        for y in range(-r, r + 1):
            if round(math.sqrt(x**2 + y**2)) == r:
                points.add((x, y))
    return points

if __name__ == '__main__':
    r = int(sys.argv[1])
    (px, py, pz) = minescript.player_position()
    blockpacker = minescript.BlockPacker()
    for p in draw_circle_points(r):
        blockpacker.setblock((int(px) + p[0], int(py) - 1, int(pz) + p[1]), "glass")
    blockpacker.pack().write_world()
りお
りお

コーディングが難しいところかもしれませんが、
ChatGPTを利用することで精度の高いコードを出力してくれます。

(参考)ChatGPT利用

本題とずれますが、サンプルコードもChatGPTの結果を利用しました。
こちらの内容をインプットにしたところ、

pythonで円を描くコードを書いてほしい。
半径rを引数に、(0,0)の座標を中心点として、x座標とy座標の整数のタプル集合を返すようにしてほしい。

以下のような答えを返してくれました。

import math

def draw_circle_points(r):
    points = set()
    for x in range(-r, r + 1):
        for y in range(-r, r + 1):
            if round(math.sqrt(x**2 + y**2)) == r:
                points.add((x, y))
    return points

# 半径を指定して呼び出します
radius = 5
circle_points = draw_circle_points(radius)
print(circle_points)

これだけだとそのまま実行できないので少し修正は必要ですが、
やりたいことを実現するコードとしては十分な回答を返してくれています。
こういったAIツールを使うことでもコーディングを助けてくれますので、参考として載せておきます。

コマンド実行

コマンド実行は、マイクラ上のコマンドラインからバックスラッシュを文頭に書いて、コマンドを実行します。
引数に半径となる1以上の整数を指定します。

りお
りお

一度スラッシュ(/)でコマンドラインを表示させてから、スラッシュを削除してバックスラッシュ(\)を入力します。

半径30ブロックの円を描く場合は以下のようにコマンド実行します。
コマンドと引数をスペースで区切って指定します。

\c 30

実行するとこのようにガラスブロックで円を描けます。

たった20行程度のコードで、自分で作ったコマンドで円が描けるようになります。
さらにコードを追加することで、
・ガラスブロック状にコンクリートブロックを重ねて塔にしたり、
・円の中を掘って大きな穴を作ってみたり、
など、色々なことができるようになります。

りお
りお

独自のコマンドを自由に作ることができます。

まとめ

円を描くコマンド(cコマンド)を例として作成してみました。
自分なりにカスタマイズしたコマンドを自由に作成することができますので、
デフォルトで用意されているコマンドと組み合わせて使うことで、
マイクラでやりたいことを実現しやくなると思います。

コメント

タイトルとURLをコピーしました