Автоматическая сортировка вещей

Материал из Minecraft Wiki
Перейти к: навигация, поиск

Автоматическая сортировка вещей[править | править код]

Допустим, вы соорудили ферму, основанную на спаунере плюс обычном спауне мобов. И десятками крушите разную враждебную живность. И, соответственно, сыпется тонны дропа. Что-то полезное, что-то нет. Сортировать вручную? Зачем, если есть воронки, сундуки и красная пыль?

Требования к сортировщику[править | править код]

Перед созданием чего-либо бывает полезно написать техзадание, в данном случае оно было такое:

  1. Главное. Схема не должна использовать нестандартное поведение, ошибки, модификации и командный блок.
  2. Схема должна быть воспроизводима обычным игроком в любом мире и измерении
  3. Схема должна уметь отсортировывать указанные игроком вещи, умеющие складываться в стаки.

Идея[править | править код]

Ключевой элемент сортировщика - пара воронок, которые заполнены однотипными предметами определенным образом (их-то и извлекаем из общей кучи). Пара из-за того, что в этих воронках надо поддерживать постоянное количество предметов, а также из-за поведения запертой сигналом воронки: запертая воронка не берет из сундука вещи сама, но в неё их можно положить другой воронкой.

Общая логика работы проста. В устройство попадают вещи из источника (например сундука) и делятся на две группы: отсортированные и все прочие.

Обратите внимание[править | править код]

При установке воронок под сортировочным сундуком важен порядок их установки, так как первая установленная воронка имеет приоритет по забору вещей из сундука. Иными словами, если в сундук попадает одна единица чего либо, то её обязательно заберёт первая установленная воронка, если она не заперта сигналом. Впрочем опыт показывает, что это как-то зависит, похоже, от расположения воронок в чанке. Выясняю закономерность, пока похоже на то, что распределение по воронкам подчиняется правилу "северо-запад", то есть после перезагрузки чанка первой забирающей шмот воронкой становится северная или западная воронка, в зависимости от ориентации сундука над ними. В любом случае пока что лучший вариант исправления ситуации - менять местами сундуки назначения, то есть "переворачивать" фильтр, чтобы после перезагрузки чанков первой воронкой оказывалась та, что забирает целевой шмот.

Реализация[править | править код]

Запаситесь воронками, сундуками, красной пылью, компараторами, повторителями, красными факелами и какими-нибудь твёрдыми блоками. Сундуки-ловушки не нужны, можно обойтись обычными. Выбрасыватели пригодятся, если планируется строить еще один каскад сортировки для связи с предыдущим. По стопке всего хватит с головой на пару каскадов.

Подготовка к работе[править | править код]

Теперь надо подготовить устройство к работе, заполнив последнюю пару воронок однотипными вещами. Заполняются только первые две воронки, ведущие в сторону сундука с отсортированными вещами.

Всё, ваш сортировщик готов. Если вы правильно всё собрали, он будет сортировать.

Каскадирование[править | править код]

Как вы понимаете, данные устройства можно собирать в каскады. Просто передайте не отсортированные вещи на следующую ступень сортировки и так далее. При установке следующего каскада оптимально отмерять расстояние так, чтобы блок с красным факелом от первой воронки стоял на краю ямы с тоннелем предыдущего устройства.

Что дальше?[править | править код]

Это всё еще просто сортировщик и он, конечно, требует доработок. Как минимум необходимо обеспечить автоматическую очистку самого последнего сундука с неотсортированным шмотом, а также «сброс пара» из сундуков с отсортированным шмотом (уничтожение части вещей при заполнении сундука, дабы избежать переполнения). Возможно, вы захотите результат стянуть поближе друг к другу. Всё в ваших руках :)

Упрощённая схема[править | править код]

В упрощённой схеме отсутствует тактирование. Она может за один каскад разделить вещи на две группы, по 1..5 типов в каждой (то есть можно делить дроп не более чем на 10 сортов).

Схема состоит из двойного сундука, к которому подключено два плеча. Каждое плечо состоит из двух воронок, полностью заполненных одинаковым набором вещей (естественно, воронки во втором плече заполнены другим набором вещей), соединённых последовательно. Вторая воронка направлена в двойной сундук следующего каскада. К воронкам подключены компараторы с факелами, реагирующие только на полное заполнение. Они упираются в два блока, на которых стоят факелы, сигналы которых объединяются и блокируют вторую воронку.

Таким образом, если хотя бы в одной воронке отсутствует хотя бы один предмет до пяти полных стопок, её компаратор разблокирует факел, и вторая воронка блокируется. При этом поведение схемы однозначно: первая воронка берёт из сундука предметы (если есть что и есть куда, то есть она может взять только предмет того типа, по которому у неё неполная стопка) и кладёт во вторую воронку (если есть куда, то есть она не полностью заполнена). Поскольку вторая воронка отключена, она неизбежно заполняется, первая перестаёт класть в неё предметы и система приостанавливается до появления предметов, способных приниматься первой воронкой. Как только такие предметы появляются, вторая воронка разблокируется и передаёт несколько предметов в сундук, снова вызывая режим ожидания.

Часто возникает ситуация, когда вторая воронка передала не тот предмет, который есть в исходном сундуке. Тогда и в первой уменьшается не та стопка, которую могли бы принять. Ситуация будет продолжаться до появления нужного предмета, который с вероятностью 1/5 разблокирует именно нужный вид, то есть желательно содержимое каждого плеча делать одинаково распространённым (допустим, одно плечо для редкого дропа, а второе — для обильных его видов). Очевидно, последний каскад (делящий на два вида, то есть обе воронки плеча заполнены 10 стопками одинаковых предметов) этой проблемы не вызывает.

Вертикальная схема[править | править код]

Вертикальная схема тоже относится к «упрощённым», хотя и сложнее предыдущей. Плата за эту простоту — необходимость при каждом заборе ресурсов аккуратно распределять остатки по сундукам, а также необходимость, собственно, оставлять такое количество ресурсов нетронутыми.

Схема состоит из вертикальной колонны двойных сундуков, к которым сбоку присоединена такая же колонна воронок. Воронки управляются такой же вертикальной цепочкой инверторов, в результате чего они постоянно заблокированы «через одну». Для регулировки схемы надо «размазать» по сундукам требуемый сорт вещей (по одной на слот), в результате чего сундук будет принимать только свой вид (или два-три вида) дропа, а остальной будет копиться в воронке. В начале работы активна верхняя воронка. Она принимает из исходного сундука всё подряд, но в свой сундук может перегрузить только то, что он принимает (при этом воронка под ней не может «высосать» из неё те вещи, которым место в верхнем сундуке, поскольку она выключена). Когда она забивается посторонним дропом, система переключается и воронка перестаёт принимать из исходного сундука, зато включается воронка под ней, которая вытаскивает из неё всё лишнее (и что-то тоже кладёт в свой сундук). Одновременно то же самое повторяется в воронках ниже и т. д., поскольку они включены и выключены «через одну».

В момент переключения может возникнуть ситуация, когда верхняя воронка только-только успела принять «свою» вещь из предыдущей (или из исходного сундука), но не успела передать в «свой» сундук. В результате вещь уйдёт ниже и забьёт нижнюю воронку. Чтобы этого избежать, надо выбирать период переключения таким, чтобы дроп гарантированно успевал «устаканиться» — каждая воронка уже передала всё «своё» в свой сундук и в ней только «чужое». Но в верхнюю воронку, как правило, в любой момент может что-то внезапно прийти из фермы. Поэтому над ней или ставится какой-то регулятор, подающий дроп «порционно» с тем, чтобы каждая порция успевала рассортироваться, или собственно заполнение верхней воронки «чужим» дропом и является командой для таймера, который переключает воронки на время, достаточное для «устаканивания» очередного шага (но это заполнение не должно быть само по себе короче этого времени, иначе нижние воронки могут что-то недопередать друг другу; если не создавать искусственно больших скоплений, это так будет, потому что из мобофермы поток вещей обычно равномерный и не очень плотный, и время «забивания» воронки намного больше времени стабилизации очередного шага).