コンパレーターによるコンテナの信号強度:計算式とスタックサイズの落とし穴
アイテムが1つ入ったチェストも、63個入ったチェストも、信号強度は1を出力します。その理由と、シュルカーボックスやバケツが計算を狂わせる理由を解説します。
コンパレーターでコンテナを読み取ることは、ほとんどのアイテム仕分けや自動クラフトのレッドストーン回路の根幹をなしています。計算式は短く、すべての癖はその式から導き出されます。
計算式
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個のスロットがあります。64個の丸石の1スタックは、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つ入れた単一スロットのホッパーは満杯と読み取られ、信号15を出力します。これは正確なカウンターの標準的なトリックです。ホッパーの5つのスロットのうち4つをスタックできないアイテムで埋め、5つ目を信号として使用します。
シュルカーボックスは透過しない
チェストに入ったシュルカーボックスを読み取るコンパレーターは、そのボックスを1つのスロットを占める1つのアイテムとして認識します。中身は見えません。そうでないと想定する仕分けシステムは、静かに誤算します。
コンテナ以外のコンパレーターの読み取り
同じコンパレーターは、以下のブロックも読み取ります。
| ブロック | 信号 |
|---|---|
| 大釜 | 水位に応じて0~3 |
| コンポスター | 満たされ具合に応じて0~8 |
| ケーキ | 食べられたスライスごとに14から0まで |
| 額縁 | 回転に応じて1~8 |
| ジュークボックス | ディスクの種類に応じて1~15 |
| 書見台 | ページ番号 |
| 養蜂箱 | ハチミツのレベルに応じて0~5 |
| エンドポータルフレーム | エンダーアイありで15、なしで0 |
額縁と書見台は、壁越しに読み取れるため、隠しスイッチとして役立ちます。
減算モード
前面の松明が点灯している場合、減算モードを意味します。出力は側面から背面を引いた値で、0が下限です。比較モード(松明が消灯)では、背面の信号が最も強い側面の信号以上の場合にのみ、背面の信号を通過させます。
混合スタックサイズを含むコンテナの内容物を入力し、正確な信号を得るには、リファレンス&計算機 — セット2を参照してください。