Minecraft【武器・防具・道具】時の時計。(アイテム検知)

2024-02-16

Java版1.19.4、統合版はv1.19.83で動作確認。

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

時の時計。

【Java版】タグと落ちてるアイテムを検知してコマンドを実行。プレイヤー以外の動きを止めます。止めている間はギター音が鳴り、経験値を消費。「時の時計」を拾うか経験値が無くなると効果が消えます。タグ付けはオフハンド検知を使用。マルチプレイでもアイテムを受け渡して使えますが、タグの切り替えに注意。

【統合版】「時の時計」の効果はJava版と同じです。マルチプレイでは、時計ケース(チェスト)でタグを切り替えて使う事が出来ます。

※統合版の新コマンド「hasitem」は、名前を変更したアイテムを検知出来ないので使用しません。

 

◻︎装置の特徴
・プレイヤー以外の動きを止める。
・タグ付きプレイヤーに効果音を鳴らす。
【Java版】
・エフェクトを使った極小タイマー。
【統合版】
・ティックの遅延を使った極小タイマー。

 

更新履歴
2023-4-12/Java版で、経験値が無い時でもタグが消えるように修正しました。
2023-3-28/統合版の新コマンドに対応! Java版ともに無駄なコマンドを省き軽量化しました。

 

 

目次

1.作成準備
・フラットワールド。
・チャットコマンド。
2.コマンドブロックの設置
3.時の時計【Java版】
・名前を付けた時計。
・Java版のコマンド作成(前半)。
・Java版のコマンド作成(後半)。
4.時の時計【統合版】
・アイテム名の変更。
・タグ付け装置。
・時の時計の効果(AND回路)。
5.ワールドデータ
・完成データのダウンロード。

※一部Java版と統合版のコマンドに違いがあるので気をつけてください。

 

作成準備

フラットワールド。

マインクラフトのバージョンも上がり、フラットワールドの作成が簡単になりました。 詳しくは、下記の関連記事を参考に作成してください。

 

 

 

チャットコマンド。

チャットに大量のコマンドログが流れ、装置作成の邪魔になるのでログを非表示にしておきます。 ※Java版では、新規ワールド作成時にも非表示に出来ます。

◻︎コマンドログの非表示 ※表示する場合 「false」を「true」に変更。

/gamerule commandBlockOutput false

装置作成に必要なコマンドブロックを手に入れます。

◻︎コマンドブロックの入手

/give @s command_block

 

コマンドブロックの設置

Java版と統合版では、コマンドやブロックの名称など違いがあります。装置の解説はJava版の名称で統一しています。

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

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

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

 

装置は開始点座標(0 -60 0)を基準に、南が正面がになるよう設置にしています。座標を合わせてブロックを設置していくと、コマンドはコピー&ペーストで作れます。

◻︎南向きを確認するには
ストラクチャーブロックを設置して、境界線の青い線が伸びる方が南。※赤い線は東。
/give @s structure_block

 

時の時計【Java版】

「時の時計」をオフハンドに持つとタグが付きます。経験値が1以上でタグが付いている時「時の時計」を投げると、エンティティの動きが止まります。経験値が無くなるか「時の時計」を拾うとタグが消え、エンティティが動き出します。※マルチプレイの際は、タグを消してからアイテムの受け渡しをしてください。

Java版ではアイテム名の変更はもちろん、エンチャントや説明文を追加した装備も検知可能。

 

名前を付けた時計。

Java版では名前や説明文を付けた装備を、コマンドから直接出す事が出来ます。※コマンドは長くなるので、メモ帳やテキストエディタを使うと作りやすいです。

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

/give @s minecraft:clock 1

【アイテム名と説明文】
②アイテム名や説明文を追加します。

{display:{Name:"\"時の時計\"",Lore:["\"説明文\""]}}

コマンドの結合
①のclockの後ろに②のコマンドを繋げます。

/give @s minecraft:clock
{display:{Name:"\"時の時計\"",Lore:["\"説明文\""]}} 1

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

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

 

Java版のコマンド作成(前半)。

オフハンド検知でタグを付けます。経験値Lv1以上のタグ付きプレイヤーが「時の時計」を投げた時、信号をオンにします。経験値が無くても、投げた「時の時計」を拾うとタグが消えます。同じ色の「ターゲットセレクター」後ろのNBTフォーマットは共通です。コマンドは長くなるので分けています。

⑥は高さ2ブロック。

【AND回路】

①execute if entity @e[nbt={Item:{tag:{display:{Name:"\"時の時計\"",Lore:["\"説明文\""]}}}}]
②execute if entity @e[tag=c_toki,level=1..]
③execute as @e[type=!minecraft:player] at @s run data merge entity @s {NoGravity:1b,NoAI:1b}

【AND回路】
①「時の時計」が落ちている時、信号を出す。
②プレイヤーに経験値が1Lv以上で、タグ「c_toki」がある時、信号を出す。
③プレイヤー以外のエンティティの動きを止めます。

【オフハンド検知】

④execute if entity @a[nbt={Inventory:[{Slot:-106b,tag:{display:{Name:"\"時の時計\"",Lore:["\"説明文\""]}}}]}]
⑤execute as @a[nbt={Inventory:[{Slot:-106b,tag:{display:{Name:"\"時の時計\"",Lore:["\"説明文\""]}}}]}] at @s run tag @a[nbt={Inventory:[{Slot:-106b,tag:{display:{Name:"\"時の時計\"",Lore:["\"説明文\""]}}}]}] add c_toki
⑥tag @a remove c_toki

【オフハンド検知】
④「時の時計」をオフハンドに持っている時、信号を出す。
⑤「時の時計」をオフハンドに持っているプレイヤーに、タグ「c_toki」を付ける。
【タグ削除】
⑥信号がオンの時、タグ「c_toki」を削除します。

 

Java版のコマンド作成(後半)。

信号がオンになった時、タグを消してエンティティを動かします。また、エフェクトタイマーを使って、約1秒間隔で信号のオンオフを繰り返し、経験値を減らします。※最小20ティック(tick)単位で時間調整が可能。

④にはレッドストーントーチ。黄色枠のコンパレーターは1回クリック(乗算モード)。

【リセット】

①execute as @e[type=!minecraft:player] run data merge entity @s {NoGravity:0b,NoAI:0b}

【リセット】
①信号がオンの時、エンティティを動かします。

【エフェクトタイマー】

②effect give @a[tag=c_toki] unluck 1 0 true
③execute if entity @a[nbt={ActiveEffects:[{Id:27}]}]
④xp add @a[tag=c_toki] -1 levels
⑤execute as @a[tag=c_toki] at @s run playsound block.note_block.guitar player @a[tag=c_toki] ~ ~ ~

【タイマー】
②タグ「c_toki」に不運のステータス効果を1秒与える(trueでモヤモヤを消しています)。
③不運のステータス効果が消えた時、信号を出す。
④タグ「c_toki」の経験値レベルを1引く。
⑤タグ「c_toki」にギター音を再生。

不運は自然発生することも無く釣りにしか効果がないので、タイマーにも使いやすいです。※タイマーは、不運以外のエフェクトでも動作可能。

◻︎経験値入手コマンド
/xp add @p 30 levels

 

時の時計【統合版】

経験値が1以上ある時「時の時計」を投げるとエンティティの動きが止まります。経験値が無くなるか「時の時計」を拾うと、エンティティが動き出します。マルチプレイでも使えるように、タグの解除と「時の時計」が受け渡しが出来る、時計ケースを作ります。

※プレイヤーにタグが残っていると効果が重複します。

 

アイテム名の変更。

金床を使ってチェストと時計の名前を変更します。

時計→「時の時計」を2個作成。

 

チェスト→「時計ケース」を2個作成。

 

タグ付け装置。

「時の時計」を出し入れする時に、プレイヤーにタグを付けたり消したりします。

開始点は座標(0 -60 0)。「A」は座標(1 -60 0)、「B」は座標(1 -60 6)。

【統合版】

①execute if blocks 1 -60 0 1 -60 0 1 -60 6 all
②tag @a remove c_toki
③tag @p add c_toki

①「A」と「B」のチェストの中身が同じ時、信号を出す。
②全てのプレイヤーからタグ「c_toki」を削除。
③近くのプレイヤーにタグ「c_toki」を追加。

「あ」にはチェストの中身が分かるように、額縁に「時の時計」を入れておきます。
②にはレッドストーンランプを設置。「A」と「B」のチェストの中身が同じ時点灯。

 

時の時計の効果(AND回路)。

タグ付きプレイヤーが「時の時計」を投げた時、エンティティの動きを止めます。

③は地面下。④はレッドストーンが必要、ティックの遅延を20に変更。⑤は条件付きに変更。

【統合版】

①execute if entity @e[type=item,name=時の時計]
②execute if entity @a[tag=c_toki,lm=1]
③execute as @e[type=!player] at @s run tp @s ~~~
④playsound note.guitar @a[tag=c_toki] ~~~ 1 1.05 1
⑤xp -1l @a[tag=c_toki]

【AND回路】
①「時の時計」が落ちている時、信号を出す。
②プレイヤーにタグ「c_toki」がある時、信号を出す。
【時の時計の効果】
③プレイヤー以外のエンティティの動きを止める。
④タグ付きプレイヤーに、ギター音を鳴らす(遅延20)。
⑤タグ付きプレイヤーの経験値レベルを1引く。

◻︎経験値入手コマンド
/xp 30l @p

 

ワールドデータ

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

【統合版】 v1.19.83
完成データでは、座標(0 -61 0)にストラクチャーブロックが埋め込んであります。
アプリで開くから、Minecraftを選びます。

ダウンロード/時の時計.mcworld

 

【Java版】 v1.19.4
完成データでは、座標(0 -61 6)のチェストに「浮游の靴」が入っています。
zipを解凍して、フォルダを「saves」に入れて起動します。

ダウンロード/時の時計.zip

※二次配布は禁止です。