llllon_888のコマンドメモ帳

minecraft歴は長いけどコマンド歴は短い男のコマンド作成で気に留めておこうと思ったことまとめ場所。要は備忘録。偶然誰かの役に立ったらいいなって感じでわりと適当に書いてる。

複数の額縁を透明にする

minecraft java 1.17

しょうもない前置き

この前作ろうとしたものの中に 五十音表を壁に貼り付けて謎解きにしたい! という感じの発想がありそれを試した。
方法は画像データをminecraft専用に変換して、それを地図に貼り付ける。これについても今度書こうかな。
そんでその地図を額縁に入れて壁一面に貼り付けた。
でも、その画像が透過素材だったから裏の額縁見えまくりで不格好だったから額縁を透明にしようと思い立ったわけだ。
ということでコマンド行こう

額縁を透明にするコマンド


/data merge entity <エンティティのUUID> {Invisible:1}

このコマンドの<エンティティのUUID>はカーソル合わせながらコマンド打って、tabの予測変換で出せる。



これが額縁を透明にするコマンド。
dataコマンドでエンティティにInvisibleというデータを与えてます

dataコマンドは複数選択できない

なんと複数選択できないという罠。当時50個近い額縁を透明にしようと思ってた俺にとってまさしく地獄の仕様でした。
うーんどうしたものかと頭をひねっていた時に思いついたひらめき

俺が50個の額縁にコマンド打つのができないなら...こいつら各自に自分にコマンド打ってもらえばいいのでは?

複数の額縁を透明にする方法


execute as @e[distance=..30] run data merge entity @s {Invisible:1}

自分から半径30ブロック以内の額縁を透明にするコマンド



文を一個一個紐解いていこう

execute as

コマンドの実行主の選択
このコマンドを使うことでコマンドを使ったプレイヤーをここで指定したプレイヤーに変更できる。minecraftはエンティティもコマンドを実行できるので今回使う。

@e

すべてのエンティティを示すセレクター。
mob、額縁、トロッコ、プレイヤー、その他もろもろありとあらゆるエンティティを含むセレクター。
うっかり/kill @e なんてやった日には世界が終わる。

[distance=..30]

コマンドの実行主との距離を指定する。
今回はexecuteコマンドの実行主である自分との距離が30マス以内を指定する。
「..」というようにドットを二つ付けると 以上 以下 を指定できる。
例: ..30  30ブロック以内
   10..  10ブロック以上
   10..30 10ブロック以上30ブロック以内

run data merge entity @s {Invisible:1}

上で説明していた通りの透明にするコマンド。
ただし、対象を@sという実行主を対象とするセレクターに変更してある。
execute as を使っているとこの実行主に置き換えられる。

まとめ

こんな感じで複数の額縁を一斉に透明にしたよっていう話でした。
これは対象を単体しか選べない系コマンド全部に応用できそうだから覚えておいて損はなさそうだなって感じ