Minecraft【Java版/統合版】
時の時計。(アイテム検知)

2022-09-29

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

Java版1.19.2、統合版はv1.19.30で動作確認。

【Java版】では、メインハンドとアイテム検知を利用して、時間を止めたプレイヤーだけ経験値を減らします。時計を拾うか、経験値が無くなると時間が再生。マルチプレイでもアイテムを受け渡すだけで、交代して使うことが出来ます。
【統合版】では、落ちてるアイテムは名前で検知出来るという謎仕様があるので、Java版に似た動作が簡単に出来ました。ただしアイテムの受け渡しには時計ケースを使います。(タグの切り替え装置)
※hasitemが使えると、Java版のようなタグの切り替えが出来るかも知れません。未検証

 

 

目次

1.時の時計【Java版】
・アイテム名の変更。
・Java版のコマンド作成。

2.時の時計【統合版】
・アイテム名の変更。
・統合版のコマンド作成。

 

時の時計【Java版】

時計を投げると経験値を消費して、時間を止め敵が動かなくなります。
アイテムを拾うか、経験値が無くなると時間が再生。

 

アイテム名の変更。

Java版では名前を変更したアイテムを、コマンドから直接出せるので便利です。
※メモ帳やテキストエディタでコマンドを作っておくと便利。

①名前を付けた時計を入手するコマンドを作成。
コマンドの作り方は魔女の剣と同じなので割愛します。
チャットコマンドで入手します。

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

 

Java版のコマンド作成。

画像を参考に、ブロックを配置。
◎配置したコマンドブロックの状態/すべて無条件

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

❶時の時計起動装置

①execute if entity @e[nbt={Item:{tag:{display:{Name:"\"時の時計\"",Lore:["\"説明文\""]}}}}]
②scoreboard objectives add t_skill dummy
③scoreboard players set 時の時計 t_skill 0
④execute as @e[nbt={SelectedItem:{tag:{display:{Name:"\"時の時計\"",Lore:["\"説明文\""]}}}}] at @s run tag @e[nbt={SelectedItem:{tag:{display:{Name:"\"時の時計\"",Lore:["\"説明文\""]}}}}] add c_toki

①時の時計を持っていない時、信号を送ります。
②スコアボード「t_skill」を作成。
③スコアボード「t_skill」の時の時計を0に設定します。(タイマー用)
④時の時計をメインハンドに持っているプレイヤーにタグ「c_toki」を付ける。

 

②は、動力が必要に変更。地面に埋めます。

 

❷タイマーと時間を止める装置

①execute if entity @e[tag=c_toki,level=1..]
②scoreboard players add 時の時計 t_skill 1
③execute as @e[type=!minecraft:player] at @s run data merge entity @s {NoGravity:1b,NoAI:1b,direction:[0.0,0.0,0.0],power:[0.0,0.0,0.0],Motion:[0.0,0.0,0.0]}

①タグ付きプレイヤーの経験値が1レベル以上の時、信号を送ります。
②信号がある時、スコアボード「t_skill」の時の時計に1足していきます。
③プレイヤー以外の動きを止める。

 

❸経験値タイマー

①execute if score 時の時計 t_skill matches 10..
②scoreboard players set 時の時計 t_skill 0
③experience add @p[tag=c_toki] -1 levels
④execute as @a[tag=c_toki] at @s run playsound block.note_block.guitar player @a[tag=c_toki] ~ ~ ~ 1 1.05 1

①スコアボード「t_skill」の時の時計が10以上になったら信号を出す。
②スコアボード「t_skill」の時の時計を0に設定します。
③タグ付きプレイヤーから経験値レベルを1引く。
④タグ付きプレイヤーにギター音を鳴す。

 

❹時の時計終了装置

①execute as @e[type=!minecraft:player] run data merge entity @s {NoGravity:0b,NoAI:0b,direction:[0.0,-10.0,0.0],power:[1.0,-10.0,0.0]}
②scoreboard objectives remove t_skill
③tag @a remove c_toki

①アイテムを拾うか経験値が無くなった時、プレイヤー以外の動きを再開。
②スコアボード「t_skill」を削除。
③全てのプレイヤーからタグ「c_toki」を削除。

今回はモブの動きを止めるスキルでした。アイテムを投げると起動する経験値タイマー付き装置として、他のスキルでも応用出来ると思います。

 

時の時計【統合版】

Java版と同じく、時計を投げると経験値を消費して、時間を止め敵が動かなくなります。
アイテムを拾うか、経験値が無くなると時間が再生。

タグの受け渡し装置を作ると大掛かりになりそうなので、簡単に作れる「時計ケース」で、タグの切り替えをします。

 

アイテム名の変更。

統合版ではアイテム名での検知や、名前を付けたアイテムをコマンドで出せません。(落ちてるアイテム除く)

金床を使ってチェストと時計の名前を変更しておきます。(2個)

チェスト→時計ケース
時計→時の時計

 

統合版のコマンド作成。

画像を参考に、ブロックを配置。
◎配置したコマンドブロックの状態/すべて無条件

コマンドブロックの色 ブロックの種類 レッドストーン
黄色 衝撃 レッドストーンが必要
青色 チェーン 常にアクティブ
紫色 反復 常にアクティブ

 

◻︎時の時計装置の仕組み
装置は大きく分けて【時計ケース】【アイテム検知装置】の2種類で設計してあります。
画像は逆向きですが、装置の見た目はJava版に似せて作ってあります。

【時計ケース】
「時の時計」専用ケース。タグを付けたり消したりする装置。

【アイテム検知装置】
落ちている「時の時計」を検知。経験値を消費して時間を止める装置。

 

矢印はチェストの向き。「A」と「B」には時計ケースを設置して時の時計を入れておきます。

 

❶時計ケース付、タグ装置。
時の時計専用ケース。タグを付けたり消したりする装置。

①testforblocks ~~~ ~~~ ~~~
②tag @a remove c_toki
③tag @p add c_toki

①「~~~」には「A」の座標(2回)。 後ろの「~~~」には「B」の座標を入れます。
②全てのプレイヤーから、タグ「c_toki」を削除。
③近くのプレイヤーに「c_toki」のタグを付けます。

 

❷時の時計起動装置

①testfor @e[type=item,name=時の時計]
②scoreboard objectives add t_skill dummy
③scoreboard players set 時の時計 t_skill 0

①時の時計を持っていない時、信号を送ります。
②スコアボード「t_skill」を作成。
③スコアボード「t_skill」の時の時計を0に設定します。(タイマー用)

 

②③は、レッドストーンが必要に変更。②は地面に埋めます。

 

❷タイマーと時間を止める装置

①execute @e[tag=c_toki,lm=1] ~~~ testfor @e[tag=c_toki]
②scoreboard players add 時の時計 t_skill 1
③execute @e[type=!player] ~~~ tp @s ~~~

①タグ付きプレイヤーの経験値が1レベル以上の時、信号を送ります。
②信号がある時、スコアボード「t_skill」の時の時計に1足していきます。
③プレイヤー以外の動きを止める。

 

❸経験値タイマー

①scoreboard players test 時の時計 t_skill 10
②scoreboard players set 時の時計 t_skill 0
③xp -1l @e[tag=c_toki]
④execute @e[tag=c_toki] ~~~ playsound note.guitar @a[tag=c_toki] ~~~ 1 1.05 1

①スコアボード「t_skill」の時の時計が10になったら信号を出す。
②スコアボード「t_skill」の時の時計を0に設定します。
③タグ付きプレイヤーから経験値レベルを1引く。
④タグ付きプレイヤーにギター音を鳴す。

 

❹時の時計終了装置

①scoreboard objectives remove t_skill

①アイテムを拾うか経験値が無くなった時、スコアボード「t_skill」を削除。

 

注意点

マルチプレイでも動作しますが、タグ「c_toki」が重複しているとうまく動作しません。
交代で使う時は、時計ケースに入れてタグを付け替えます。
同時に使いたい場合は、タグ名を変えて人数分の装置を作る必要があります。

 

 

おすすめ記事もどうぞ!