コンテナからのコンパレーター信号強度:計算式とスタックサイズの罠
アイテム1個のチェストは信号1を出力するが、63個入りのチェストも同じく1を出力する。その理由を計算式が説明し、シュルカーボックスとバケツがなぜあらゆる計算を狂わせるのかを解説する。信号の最大値は15です。
コンパレーターでコンテナを読み取ることは、ほとんどのアイテム仕分けや自動クラフトレッドストーンの基盤だ。計算式は短く、すべての癖はそこから導き出される。
計算式
signal = floor(1 + (sum of fullness across slots ÷ number of slots) × 14)
各スロットの充填度はitems in slot ÷ max stack size for that item。
重要なのは1 +の部分だ。中身がゼロでなければ少なくとも信号1を出力し、空のコンテナは0になる。だから「ここに何か入っているか」を検出するのは簡単だが、「正確にどれだけ入っているか」を検出するのは簡単ではない。
アイテム1個でも63個でも1になる理由
ラージチェストには54スロットある。丸石1スタック(64個)でスロット1つが完全に埋まる:
1 + (1 ÷ 54) × 14 = 1 + 0.259 = 1.259 → floor = 1
出力が2に達するには満杯のスタック4つが必要だ。古典的な単一アイテム検出器が機能するのは、1がどんな中身に対しても下限だからであり、アイテム1個を測っているからではない。
スタックサイズがすべてを変える
max stack sizeはアイテムごとに決まり、ここで計算が破綻する:
| アイテム | スタック | アイテム1個で |
|---|---|---|
| 丸石 | 64 | スロットの1/64 |
| エンダーパール | 16 | 1/16 |
| 水入りバケツ、トロッコ、ボート | 1 | スロット1つ分 |
ホッパーの5スロットでは、スタック不可のアイテム1個——水入りバケツやトロッコ——が5分の1の充填として数えられ、信号3になる。丸石1個なら1だ。4個なら12になる。だからスタック不可アイテムは、大きな予測可能な刻みでカウンターを進める標準的な手段になる。(空のバケツは16個までスタックするので、同じようには機能しない。)
シュルカーボックスは透明ではない
シュルカーボックスが入ったチェストをコンパレーターで読むと、ボックスは1スロットを占める1アイテムとして扱われる。中は見えない。そうでないと仮定した仕分けシステムは、気づかないうちに数え間違える。
コンテナ以外のコンパレーター読み取り
同じコンパレーターは以下も読み取る:
| ブロック | 信号 |
|---|---|
| 大釜 | 水位に応じて0~3 |
| コンポスター | 充填段階に応じて0~8 |
| ケーキ | 一切れ食べるごとに14から0へ |
| 額縁 | 回転に応じて1~8 |
| ジュークボックス | ディスクに応じて1~15 |
| 書見台 | 開いているページが本のどこまで進んでいるかに応じて1~15 |
| 養蜂箱 | 蜂蜜レベルに応じて0~5 |
| エンドポータルフレーム | エンダーアイありで15、なしで0 |
額縁と書見台は隠しスイッチに便利だ。壁越しに読み取れるからである。
減算モード
前面の松明が点灯していると減算モードになる。出力は背面から側面を引いた値で、下限は0だ。比較モード(松明消灯)は、背面の信号が最も強い側面の信号以上の場合にのみ、そのまま通す。
スタックサイズが混在する場合も含め、コンテナの中身を入力すれば正確な信号が得られる:Reference & Calculators — Set 2。