前回の続き。第2回目。tick.jsonを正しく作成し、周期処理が行われるように設定しよう。
tick.json
「tick」は、時計のチクタクを表す擬音の英単語です。
その名の通り、周期処理の制御ができます。
Minecraftでは、ブロックの状態や時刻の更新、Mobのスポーンやイベントの発生などといったゲームの動作に必要な処理を、すべて包括して一つのループに組み込み周期的に実行している。このループ1回のことをティック(英:Tick)またはゲームティック(英:Game Tick)と呼ぶ。
ティック Minecraft Wiki
つまり、ある周期毎にゲーム内部で更新がかかっており、そこに独自の処理を入れてしまおうということをデータパック作成ではやりたい。
そのtickを設定する「tick.json」を作ります。
tick.jsonの場所
datapackのルートディレクトリから、「data/minecraft/tags/functions」の配下に「tick.json」という名前で配置させます。
tick.jsonの中身
valueの中にArrayで定義します。Arrayの中には、「名前空間:function名」で設定します。
{
"values": [
"limit_height:damage"
]
}
呼び出すmcfunctionを作成する
tick.jsonに設定したfunction「limit_height:damage」を作成しましょう。
前回をもとに高さを超えた場合にダメージを与える処理を書き込みます。
前回ではコマンド実行したのでターゲットセレクタを「@s」にしましたが、tickの場合「@s」は使えない点に注意しましょう。
execute as @a store result score @a position run data get entity @s Pos[1]
execute as @a if score @s heigher < @s position run effect give @a instant_damage 1 1 true
動作確認
動作確認のためにコマンドブロックを置いて、ボタンクリックでscoreを+5している。
1人プレイであればちゃんと動いているといえそうだ。
まとめ
tickの設定と、その呼び出し先のfunctionを作成しました。
次回は、取得ブロックの管理の検討をします。
コメント