Thaumcraft: Golem Batch Guard — умная загрузка предметов големами
В мире Minecraft модификация Thaumcraft открывает путь к магической автоматизации, где верные големы выполняют рутинные задачи: переносят предметы, сортируют ресурсы и наполняют сундуки. Однако каждый опытный тауматург знает досадную особенность этих созданий — если целевой инвентарь не может принять полный стак, голем просто застывает с грузом в руках, отказываясь от дальнейших попыток. Именно эту проблему решает небольшой, но продуманный аддон Golem Batch Guard для версии 1.7.10.
Почему стандартное поведение големов даёт сбой
Оригинальный ИИ големов Thaumcraft 4 использует прямой вызов InventoryUtils.placeItemStackIntoInventory(...). Если инвентарь отвергает весь переносимый стак — например, система квестовой доставки HQM принимает только определённое количество предметов — голем не пытается вставить часть. Он просто останавливается, а несжатый остаток так и остаётся в его виртуальных руках. В сложных автоматизированных сборках с модами вроде HQM это приводит к заторам и необходимости ручного вмешательства.
Что меняет Golem Batch Guard
Аддон внедряет механизм «пакетной охраны»: вместо одной попытки вставить всё или ничего, голем учится дробить переносимый стак на меньшие партии. При этом сохраняется оригинальная логика перемещения, цветовые маркеры, лимиты переноски и проверки домашних сундуков. Мод не переписывает инвентари-цели, а патчит непосредственно классы ИИ големов, работая как связующее звено между Thaumcraft и конечным хранилищем.
Ключевые возможности
- Сохранение остатка в руках голема. Если инвентарь не принимает полный стак, голем оставляет непоместившуюся часть у себя, а не теряет её и не зависает.
- Дробление на безопасные партии. При отказе от целого стака аддон запускает бинарный поиск допустимого размера вставки, начиная с копии исходного стака и уменьшая его до тех пор, пока цель не примет предметы.
- Патч только ИИ размещения. Изменения затрагивают исключительно момент вставки в инвентарь — забор предметов, работа с жидкостями и эссенцией остаются нетронутыми.
- Совместимость с HQM QDS. Мод явно поддерживает поведение квестовых систем доставки, где проверка «всё или ничего» реализована через аддон hqm-dontvoidmyitems.
- Гибкая настройка. Через конфиг Forge можно включить/отключить охрану, задать минимальный размер партии и активировать отладочное логирование.
Как это работает на практике
Представьте: голем несёт 8 единиц камня, а квестовый ящик настроен принять только 2. Обычный голем застрял бы. С Golem Batch Guard происходит следующее: сначала выполняется стандартная попытка вставить все 8 — она отклоняется. Затем аддон создаёт копию стака и предлагает инвентарю уменьшенные партии, пока не находит безопасный размер 2. Голем вставляет 2 камня, а 6 остаются у него для последующих циклов. Если же цель не принимает ни одного предмета, голем сохраняет весь груз и продолжает поиск другого инвентаря.
Та же логика работает и на этапе симуляции перед забором предметов. Если сортировочный голем видит сундук с 46 из 50 камней и исходный стак из 10 камней, симуляция покажет, что можно вставить 4. Голем возьмёт весь стак, разместит 4, а 6 оставит для нормальной обработки Thaumcraft. Это предотвращает ситуацию, когда голем вообще отказывается брать предметы из-за неполной вместимости цели.
Техническая сторона: coremod и миксины
Golem Batch Guard реализован как небольшой coremod, использующий позднюю загрузку миксинов через UniMixins. Это гарантирует, что классы Thaumcraft уже доступны до применения патчей. Перехватываются вызовы в четырёх ключевых классах ИИ: AIHomePlace, AIEmptyPlace, AISortingPlace и AIHomeReplace. Дополнительно патчится симуляция в GolemHelper.getContainersWithRoom(...), чтобы голем мог подобрать большой стак, даже если в данный момент вставить можно лишь малую часть. Все изменения работают через оригинальный хелпер Thaumcraft, поэтому внутренняя логика инвентарей не нарушается.
Настройка под свои нужды
После установки мода в папке config генерируется файл с простыми параметрами:
- enableBatchGuard=true — включает или отключает всю функциональность.
- minBatchSize=1 — минимальный размер партии, до которого аддон будет пытаться дробить стак. Значение 1 означает, что голем может вставить даже один предмет, если больше не принимается.
- debugLogging=false — включает подробные логи для отладки взаимодействий с инвентарями.
Эти настройки позволяют точно адаптировать поведение големов под особенности конкретной сборки модов.
Совместимость и ограничения
Мод создан для Minecraft 1.7.10 с Forge 10.13.4.1614, UniMixins 0.3.0 и Thaumcraft 4.2.3.5. Он не меняет механику HQM или других инвентарей напрямую — только перенаправляет вызовы големов. Важно понимать, что если какой-либо инвентарь сообщает об успешной вставке, но внутренне уничтожает предметы, аддон не сможет это исправить. Также защита от переполнения квестовых ящиков по-прежнему зависит от дополнения hqm-dontvoidmyitems, которое отклоняет слишком большие стаки. Перед использованием в сложных автоматизированных сборках рекомендуется ручное тестирование, так как разные моды могут реализовывать вставку предметов по-своему.
Установка в сборку
Добавить Golem Batch Guard в игру несложно — достаточно поместить jar-файл в папку mods. Если вы собираете модпак через лаунчер foxygame.net, процесс становится ещё удобнее: этот современный лаунчер позволяет прямо из меню просматривать каталог дополнений и устанавливать нужные моды в один клик, автоматически разрешая зависимости. Благодаря гибкому интерфейсу foxygame.net вы легко интегрируете аддон в любую магическую или технологическую сборку на базе Thaumcraft.
Заключение
Golem Batch Guard — это элегантное решение давней проблемы с размещением предметов големами Thaumcraft. Он не ломает оригинальную магию мода, а лишь добавляет интеллектуальную прослойку, которая делает автоматизацию более плавной и предсказуемой. Если ваши големы когда-либо застывали перед квестовым ящиком или сундуком с хитрыми правилами вставки, этот небольшой аддон вернёт им подвижность и избавит вас от ручной возни с остатками стаков. Попробуйте его в своей следующей сборке — и магическая логистика заиграет новыми красками.