Руководства / Строительство и ресурсы
Сигнал компаратора от контейнеров: формула и ловушка размера стопки
Сундук с одним предметом выдаёт сигнал 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 | целый слот |
В пяти слотах воронки один нестакающийся предмет — ведро воды, вагонетка — считается как пятая часть заполнения: сигнал 3, тогда как один булыжник даёт 1. Четыре таких предмета дают 12. Поэтому нестакающиеся предметы — стандартный способ шагать счётчиком крупными предсказуемыми приращениями. (Пустое ведро стакается по 16, так что работает иначе.)
Шалкеровые ящики не прозрачны
Компаратор, считывающий сундук, в котором лежит шалкеровый ящик, видит ящик как один предмет, занимающий один слот. Внутрь он не заглядывает. Системы сортировки, которые считают иначе, молча обсчитываются.
Показания компаратора от не-контейнеров
Тот же компаратор также считывает:
| Блок | Сигнал |
|---|---|
| Котёл | 0–3 по уровню воды |
| Компостница | 0–8 по стадии заполнения |
| Торт | от 14 до 0 за каждый съеденный кусок |
| Рамка | 1–8 по повороту |
| Проигрыватель | 1–15 в зависимости от пластинки |
| Кафедра | 1–15 по тому, как далеко открыта страница в книге |
| Улей | 0–5 по уровню мёда |
| Рамка портала Энда | 15 с оком, 0 без |
Рамки и кафедры — самые полезные для скрытых переключателей, потому что считываются через стену.
Режим вычитания
Горящий передний факел означает режим вычитания: выход — это сигнал сзади минус сигнал сбоку, с ограничением снизу на 0. Режим сравнения (факел не горит) пропускает задний сигнал только если он не слабее самого сильного бокового.
Введите содержимое контейнера и получите точный сигнал, в том числе при смешанных размерах стопок, в Справочники и калькуляторы — набор 2.