- 追加された行はこの色です。
- 削除された行はこの色です。
* はじめに [#yac3daf2]
マイクラ で、
あるきながら、ダンジョンの通路や部屋を作ったら、楽だろうなぁ。
そうがんがえ、マイクラ で、
歩くスピードで、ダンジョンつくるやり方を作りました。
ストラクチャーブロックの配置って、置く方角を気をつけるのが
面倒なので、それを、簡単にしちゃう方法の紹介となります。
* なんで、この記事をかいているのか [#eff31a5f]
ちょっと、ややこしいので、メモしたら、たくさん喜ぶ人が多いとおもったので
マイクラのストラクチャーブロックと、functionコマンドをつかうので、
いま(2019/10/19)のところ、マイクラのJava版です。
* だいたいこんなやり方 [#ad90fb4e]
* 準備は、だいたいこんなやり方 [#ad90fb4e]
- ダンジョンの通路とか、階段とかのサンプルをつくります。
-
大変だけど、これができたら、高位な錬金術師みたいになりますよ。
+ 実験用の新しいワールドを作成します。
+ ストラクチャーブロックでは、登録するだけで方角が、だいじなので、F3キーを押して、北を向きます。
+ ダンジョンの通路とか、階段とかのサンプルをつくります。
+ ストラクチャーブロックに登録します。
+ 自作のコマンドを作るプログラムに、ストラクチャーの名前、自分の立ち位置を入れます。
+ コマンドのテキストファイルができるので、functionが読めるフォルダに保存します。
+ reloadコマンドでよみこみます。
+ function コマンドで、建築
+ 大体、立ち位置が気に入らないとか言って、微調整します。
+ reloadコマンドで、読み込みます。
+ 微調整をくりかえして、完成
* コマンド [#ja058d3b]
自分が作った建築の部品を、マイクラではストラクチャーと呼んでいます。
以下に示すコマンドは、自分の立っている場所と、向きを逆算して、
ストラクチャーを、あるきながら、配置するように、するコマンドです。
** 引数 [#g629c0a7]
name: ストラクチャー名
x: ストラクチャーを配置したときの自分の相対位置
z:
y:
** コマンド例 [#h3938962]
実際に、どんなコマンドをつくるのかみてみましょう。
たとえば、
name: ストラクチャー名 : bath
x: 3
z: -1
y: -3
だとすると、
つくるコマンドは、次の6行になります。
最初の4行は、
- 北を向いているときは、北向きで登録してあるストラクチャーブロックを配置
- 同様に、東
- 同様に、南
- 同様に、西
なので、上記のいずれかのストラクチャーブロックが、置かれます。
つづく2行の意味は、
- レッドストーンを置いて、ストラクチャーブロックを置きます。
- ストラクチャーが動いて、もういらないから、ストラクチャーブロックと、レッドストーンブロックを空気に置き換えて消します。
execute if entity @p[y_rotation=-45..44] as @p positioned ~ ~ ~ run setblock ~ ~2 ~ minecraft:structure_block{mode:"LOAD", name:"bath", posX:-3 ,posZ:1, posY:-5} replace
execute if entity @p[y_rotation=45..135] as @p positioned ~ ~ ~ run setblock ~ ~2 ~ minecraft:structure_block{mode:"LOAD", name:"bath", posX:-1, posZ:-3, posY:-5, rotation:CLOCKWISE_90} replace
execute if entity @p[y_rotation=135..224] as @p positioned ~ ~ ~ run setblock ~ ~2 ~ minecraft:structure_block{mode:"LOAD", name:"bath", posX:3, posZ:-1, posY:-5, rotation:CLOCKWISE_180} replace
execute if entity @p[y_rotation=-135..-44] as @p positioned ~ ~ ~ run setblock ~ ~2 ~ minecraft:structure_block{mode:"LOAD", name:"bath", posX:1, posZ:3, posY:-5, rotation:COUNTERCLOCKWISE_90} replace
execute as @p positioned ~ ~ ~ run setblock ~ ~3 ~ minecraft:redstone_block replace
execute at @p positioned ~ ~2 ~ run fill ~ ~ ~ ~ ~1 ~ minecraft:air replace
毎回これを作るのは、大変なので、自分は、excelやrubyなどで、上記のめんどくさいのを、自動で作るようにしています。
これをテキストファイルに保存して、ファイルを保存するのですが、
保存先が、最近のバージョンで、変更されまくって、特定するのに時間がかかりました。
今のバージョン(1.14)ですと。
自分は
C:\Users\kh\AppData\Roaming\.minecraft\saves\structure\datapacks\kh\data\ns01\functions
というフォルダに、
bath.mcfunction
というファイル名で保存しています。
自分で調節できるのは、上記の
- kh
- ns01
- bath
ですね。ここに、自由に好きな名前が入れれます。
- khは、自分はパソコンに登録してある名前にしてますが、適当でいいです。
- ns01は、登録するストラクチャーの種類を自分で勝手に入れれます。
- bathは、たまたま、登録したストラクチャーがお風呂だったので、ストラクチャー名がbathだったので、bath.mcfunctionにしてます。ストラクチャー名と合わせたほうが、じぶんは、わかりやすいです。
登録後は、reloadコマンドを使って、マイクラで使える状態になります。
使うときは、上記の 名前の例ですと
function ns01:bath
となります。