投稿者:ヘイホーの叫び
投稿日:2024/7/30
ジャンル:
アルゴリズム 機構・技術
環境:通常
情報番号:5
説明
通常、コマンドにおける条件検索は論理積 (AND、かつ)しか使えません
しかし、「ド・モルガンの法則」を利用すれば、論理和 (OR、または)を使える場合があります
場合は以下の二つ
一:元の条件の否定 (NOT、~でない) が可能である場合
二:元の条件の否定 (NOT、~でない) が不可能または困難である場合
このページでは二について解説しています
一についてはOR条件をご覧ください
原理
二の条件(例)
r=v (rm=v は v が含まれてしまい、計算が面倒)
c=w (対象エンティティ数が定数でない場合などは困難)
dx=x,dy=y,dz=z (エンティティごとに当たり判定が異なるため、多くの場合困難)
元の条件が上記のようなものである場合、コマンドが複数必要となります
/tag <object>[tag=true] remove true
/tag <object>[r=v] add true
/tag <object>[tag=!true,c=w] add true
/tag <object>[tag=!true,dx=x,dy=y,dz=z] add true
/<command> ※<object>[tag=true]
なお、tagを付与する代わりにscoreを加算していき、そのscoreが1以上であることを条件とすることも可能です
この場合、いくつの条件を満たしたかが分かります
使いどころは多くないと思われますが、排他的論理和 (XOR)の実装などには有効かもしれません
これらのコマンドはコマンドブロックで使う場合、場合実行座標がそれぞれ異なってしまうので、executeコマンドを用いて実行座標を固定する必要があります
functionを使う場合は固定する必要はありません
補足
- セレクター引数scoresはスコアを保有しない対象を反転できないため厳密にはr,rmの関係と似ています
- tagコマンドの対象をセレクター引数tagで絞る必要はありません(どっちがいいのか分からない)
- この機構は「負の条件付き」と呼ばれる場合があります
最終更新:2024年12月22日 14:10