Сила сигнала компаратора от контейнеров: формула и ловушка с размером стака
Сундук с одним предметом выдает сигнал 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
Двойной сундук имеет 54 слота. Один стак из 64 булыжников полностью заполняет один слот:
1 + (1 ÷ 54) × 14 = 1 + 0.259 = 1.259 → floor = 1
Вам нужно четыре полных стака, прежде чем выходной сигнал достигнет 2. Классический детектор одного предмета работает потому, что 1 — это нижний предел для любого содержимого, а не потому, что он измеряет один предмет.
Размер стака меняет все
max stack size рассчитывается на предмет, и именно здесь расчеты нарушаются:
| Предмет | Стак | Один предмет дает |
|---|---|---|
| Булыжник | 64 | 1/64 слота |
| Эндер-жемчуг | 16 | 1/16 |
| Ведро, вагонетка, лодка | 1 | целый слот |
Однослотовая воронка, содержащая одно ведро, считывается как полная — сигнал 15. Это стандартный трюк для точного счетчика: заполните 4 из 5 слотов воронки нештабелируемыми предметами и используйте пятый как сигнал.
Шалкеровые ящики не прозрачны
Компаратор, считывающий сундук, который содержит шалкеровый ящик, видит ящик как один предмет, занимающий один слот. Он не видит, что внутри. Системы сортировки, предполагающие обратное, молча ошибаются в подсчетах.
Считывание компаратором неконтейнерных блоков
Тот же компаратор также считывает:
| Блок | Сигнал |
|---|---|
| Котёл | 0–3 по уровню воды |
| Компостница | 0–8 по стадии заполнения |
| Торт | 14 до 0 за каждый съеденный кусок |
| Рамка | 1–8 по повороту |
| Проигрыватель | 1–15 по типу диска |
| Кафедра | номер страницы |
| Улей | 0–5 уровень мёда |
| Рамка портала Энда | 15 с глазом, 0 без |
Рамки и кафедры полезны для скрытых переключателей, потому что они считываются сквозь стену.
Режим вычитания
Зажженный передний факел означает режим вычитания: выходной сигнал — это боковой сигнал, вычтенный из заднего, с округлением до 0. Режим сравнения (факел не горит) пропускает задний сигнал только в том случае, если он по крайней мере такой же сильный, как самый сильный боковой.
Введите содержимое контейнера и получите точный сигнал, включая смешанные размеры стаков, в Справочнике и калькуляторах — Набор 2.