〇Pycraft mod for MinetestとPythonで作成した螺旋階段付きの塔(昼間)
〇Pycraft mod for MinetestとPythonで作成した螺旋階段付きの塔(夜間)
作成方法
1. Pycraft mod for MinetestのインストールPycraft mod for Minetestをインストールしていない場合は、以下の記事を参考にしてインストールしてください。
Ubuntu20.04でPycraft mod for MinetestとPythonを使用して指定されたブロックの床を作成する
2. プログラミング
以下のコードで、螺旋階段付きの塔を作成します。Thonnyの場合は、以下のコードを保存後、緑色の再生ボタンをクリックして実行してください。
import mcpi.minecraft as minecraft
import mcpi.block as block
import mcpi.vec3 as Vec3
# ローカルサーバに接続
mc = minecraft.Minecraft.create("127.0.0.1")
# プレイヤーの位置を取得
pos = mc.player.getPos()
print(pos)
pos.z += 10
# 塔の高さ
tower_ys=48
# 塔の幅
tower_xs=7
# 塔の奥行き
tower_zs=7
# 塔の外壁
for dx in range(tower_xs):
for dz in range(tower_zs):
for dy in range(tower_ys):
if dx == 0 or dz == 0 or dx == tower_xs-1 or dz == tower_zs-1:
mc.setBlock( pos.x+dx, pos.y+dy, pos.z+dz, block.STONE_BRICK )
else:
mc.setBlock( pos.x+dx, pos.y+dy, pos.z+dz, block.AIR )
# 入り口
mc.setBlock( pos.x+int(tower_xs/2), pos.y, pos.z, block.AIR )
mc.setBlock( pos.x+int(tower_xs/2), pos.y+1, pos.z, block.AIR )
# 明かり
for dy in range(4):
mc.setBlock( pos.x, pos.y+dy*12, pos.z+int(tower_zs/2), block.SEA_LANTERN )
mc.setBlock( pos.x+tower_xs-1, pos.y+dy*12, pos.z+int(tower_zs/2), block.SEA_LANTERN )
# 螺旋階段
pos2 = Vec3.Vec3(pos.x + 1, pos.y, pos.z + 2)
# 4週分
for stair_loop in range(4):
for zs in range(tower_zs-4):
mc.setBlock( pos2.x, pos2.y, pos2.z, block.STAIRS_COBBLESTONE.id,2 )
pos2.y += 1
pos2.z += 1
pos2.y -= 1
mc.setBlock( pos2.x, pos2.y, pos2.z, block.STONE_BRICK.id )
pos2.x += 1
pos2.y += 1
for xs in range(tower_xs-4):
mc.setBlock( pos2.x, pos2.y, pos2.z, block.STAIRS_COBBLESTONE.id,0 )
pos2.y += 1
pos2.x += 1
pos2.y -= 1
mc.setBlock( pos2.x, pos2.y, pos2.z, block.STONE_BRICK.id )
pos2.z -= 1
pos2.y += 1
for zs in range(tower_zs-4):
mc.setBlock( pos2.x, pos2.y, pos2.z, block.STAIRS_COBBLESTONE.id,3 )
pos2.y += 1
pos2.z -= 1
pos2.y -= 1
mc.setBlock( pos2.x, pos2.y, pos2.z, block.STONE_BRICK.id )
pos2.x -= 1
pos2.y += 1
for xs in range(tower_xs-4):
mc.setBlock( pos2.x, pos2.y, pos2.z, block.STAIRS_COBBLESTONE.id,1 )
pos2.y += 1
pos2.x -= 1
pos2.y -= 1
mc.setBlock( pos2.x, pos2.y, pos2.z, block.STONE_BRICK.id )
pos2.z += 1
pos2.y += 1
# 最上階
for dx in range(tower_xs):
for dz in range(tower_zs-2):
mc.setBlock( pos.x+dx, pos.y+tower_ys-1, pos.z+dz+2, block.STONE_BRICK )
for dx in range(tower_xs):
for dz in range(tower_zs):
if dx == 0 or dz == 0 or dx == tower_xs-1 or dz == tower_zs-1:
if (dx+dz)%2 == 0:
mc.setBlock( pos.x+dx, pos.y+tower_ys, pos.z+dz, block.STONE_BRICK )
0 件のコメント:
コメントを投稿