Minecraft【武器・防具・道具】時の時計。(範囲検知)

2024-05-11

Java版1.20.6、統合版はv1.20.81で動作確認。

時計を投げると時間が止まる(経験値消費)。

時の時計。v1.20

「時の時計」を投げると近くのプレイヤーの経験値を減らし、モブの動きを止めるます。「時の時計」を拾うか経験値が無くなると効果は解除。コマンドは少し異なりますが、今回はJava版・統合版ともにほぼ同じ仕組みで作る事が出来ました。中級者向けの装置となります。キーボード、コントローラー推奨。※Java版は新コマンド、データコンポーネントに対応。統合版は「hasitem」で装備のデータ値(耐久値)を検知します。

 

◻︎装置の特徴
・プレイヤー以外の動きを止める。
・アイテムを基準に範囲検知。
【Java版】
・防具立てを使った極小タイマー。
【統合版】
・ティックの遅延を使った極小タイマー。

 

更新履歴
2024-5-9/古い情報を更新しました。Java版(1.20.5〜)のデータコンポーネントに対応。
2023-4-12/Java版で、経験値が無い時でもタグが消えるように修正しました。
2023-3-28/統合版の新コマンドに対応! Java版ともに無駄なコマンドを省き軽量化しました。

 

プレイ動画。v1.1(旧式)

 

 

目次

1.作成準備
・ログの非表示。
2.コマンドブロックの設置
3.時の時計【Java版】
・時計の入手(名前を変更)。・防具立ての召喚。・範囲の検知(Java版)。
4.時の時計【統合版】
・時計の入手(データ値を変更)。・範囲の検知(統合版)。
5.ワールドデータ
・完成データのダウンロード。

 

※「as」や「minecraft:」などのコマンドは簡略化しています。一部のコマンド、マルチプレイやサーバーでは必要な場合があります。

 

作成準備

マルチプレイ対応。※同時使用すると効果が重なります。

ログの非表示。

◻︎ログの非表示とコマンドブロックを入手。

/gamerule commandBlockOutput false
/give @s command_block

 

コマンドブロックの設置

コマンドブロックは画像に合わせて配置。「ブロック種類」「レッドストーン」を変更します。 変更がある場合は、個別に解説していきます。

◎配置したコマンドブロックの状態/すべて無条件。※()内は統合版の名称。

コマンドブロックの色 ブロックの種類 レッドストーン
黄色 インパルス 動力が必要
青色 チェーン(鎖) 常時実行
紫色 リピート 常時実行

 

時の時計【Java版】

「時の時計」を投げた時、3ブロック内にいるプレイヤーにタグが付き装置が起動します。「時の時計」を拾うか経験値が無くなると、タグが消え装置は停止します。※使用中はタグの付いたプレイヤーの経験値が消費されます。

※さらにコンパクトなアマスタ式に変更しました。

 

時計の入手(名前を変更)。

アイテムIDにアイテム名や説明文、エンチャントを追加します。※コマンドは長くなるので、メモ帳やテキストエディタを使うと便利です。

【時計】
①時計を1個入手するコマンド。

/give @s clock 1

【アイテム名と説明文】
②アイテム名や説明文を追加します(NBT形式)。※item_nameにすると、金床で名前を変更出来ない装備になります。

[custom_name="時の時計",lore=["説明文"]]

コマンドの結合
アイテムIDに②のコマンド(NBT形式)を繋げます。

give @s clock[custom_name="時の時計",lore=["説明文"]] 1

※さらに、エンチャントを付ける場合。(耐久度Lv1)
.....["説明文"],enchantments={levels:{"unbreaking":1}}] 1

改行無しの1行で、チャットに入力して「時の時計」を入手します。

 

防具立ての召喚。

防具立てを使ったクロック回路で、1秒を計る装置を作ります。

/summon armor_stand ~ ~ ~ {CustomName:"\"時間\""}

◻︎防具立てに「ロードストーン」を被せます。
item replace entity @e[name="時間"] armor.head with lodestone

 

範囲の検知(Java版)。

アイテムを基準に、範囲検知してコマンドを実行します。

⑤⑥は動力が必要。⑦条件付き。

【Java版】

①execute at @e[nbt={Item:{components:{"minecraft:custom_name":"\"時の時計\""}}}] run tag @p[distance=..3] add c_toki
------
②tag @a[nbt={Inventory:[{components:{"minecraft:custom_name":"\"時の時計\""}}]}] remove c_toki
------
③execute if entity @a[tag=c_toki,level=..0] run tag @a remove c_toki
------
④execute if entity @a[tag=c_toki,level=1..] run execute at @e[name="時間"] run tp @e[name="時間"] ~ ~ ~ ~18 ~
⑤execute at @e[type=!player] run tp @s ~ ~ ~
⑥execute if entity @e[name="時間",y_rotation=0] run xp add @a[tag=c_toki] -1 levels
⑦execute at @a[tag=c_toki] run playsound block.note_block.guitar player @a[tag=c_toki] ~ ~ ~

◻︎タグ付きプレイヤー対象
①「時の時計」を投げた時、3ブロック内にいるプレイヤーにタグ「c_toki」を付ける。
------
②「時の時計」がインベントリにある時、タグ「c_toki」を削除。
------
③経験値が0の時、タグ「c_toki」を削除。
------
④経験値が1以上の時、防具立て「時間」を回転。
⑤プレイヤー以外のエンティティを止める。
⑥防具立ての「時間」が0度を向いた時、経験値を1減らす。
⑦プレイヤーにギター音を鳴らす。

※アイテムIDや、説明文は省略可。金床が使える環境では注意が必要。「minecraft:」が必要です。 コマンドの詳細は割愛。

 

時の時計【統合版】

「hasitem」でアイテムのデータ値(耐久値)も区別出来るようになったので、Java版とほぼ同じ仕組みで作成出来ました。 名前検知比べると万能では無いですが、装置が大幅に簡略化出来そうです。※タグ付け装置不要。データ値が区別出来ないアイテムもあります。

 

時計の入手(データ値を変更)。

データ値を変更したアイテムを入手して、金床で名前を変更します。時計→「時の時計」を作成。

【時計】

①時計を1個入手するコマンド。

/give @s clock 1 100

※同じ名前のアイテムは重なってしまいますが、データ値(耐久値)を変更したアイテムだけを検知出来ます。

 

範囲の検知(統合版)。

アイテムを基準に、範囲検知してコマンドを実行します。※統合版ではティックの遅延が使えるので、防具立ては不要です。

⑤⑥は動力が必要。⑥はティックの遅延20。⑦条件付き。

【統合版】

①execute at @e[name=時の時計] run tag @p[r=3] add c_toki
------
②tag @a[hasitem={item=clock,quantity=1,data=100}] remove c_toki
------
③execute if entity @a[tag=c_toki,l=0] run tag @a remove c_toki
------
④execute if entity @a[tag=c_toki,lm=1]
⑤execute as @e[type=!player] at @s run tp @s ~~~
⑥execute at @a[tag=c_toki] run playsound note.guitar @a[tag=c_toki,lm=1] ~~~ 1 1 1
⑦xp -1L @a[tag=c_toki]

◻︎タグ付きプレイヤー対象
①「時の時計」を投げた時、3ブロック内にいるプレイヤーにタグ「c_toki」を付ける。
------
②「時の時計」(データ値100)がインベントリに1個ある時、タグ「c_toki」を削除。
------
③経験値(最大)が0の時、タグ「c_toki」を削除。
------
④経験値(最小)が1以上の時、信号を出す。
⑤プレイヤー以外のエンティティを止める。
⑥20ティック(約1秒)毎に、経験値を1減らす(ティックの遅延20)。
⑦プレイヤーにギター音を鳴らす。

タグ付きプレイヤーがアイテムを拾うか、経験値が0になるとタグが消えるようにしています。 ◻︎タグの確認。 /tag @a list

 

ワールドデータ

完成データのダウンロード。

準備中...。

※二次配布は禁止です。