Closed Pilad closed 4 months ago
Работает , но проблема появляется при работе с машинами. Берем ассемблер на 128. Закидываем пыльки галлия и тонкую платиновую проволочку стак. И болты никель-цинк-феррита стак. Заливаем 4 слитка полиэтилена. После начала работы меха по изготовлению смд диодов закидываем 20 тонких отоженных проволочек из меди. Ассемблер заканчивает работу по изготовлению диодов как только кончится жидкий полиэтилен, после начинает делать катушки из феррита и проволочки. делает 2 операции и останется 4 отожженых медных проволочки. Опять заливаем полиэтилен на одну операцию, 288л/2слитка. Появляется конфликт рецептов. Ассемблер может сделать как смд диоды , так и обычные диоды из галлия и 4 отожженых медных проволочек. Но не делает не первое не второе. И продолжает стоять и думать. Чтоб отвис нужно дать 4 медных проволочки, начнет делать катушки и вернется после к смд диодам.
Можно запустить операцию если феррит болты забрать и вернуть. Если в процессе опять подлить полиэтилен мех продолжит делать смд диоды. Но если встал мех и подлить полиэтилен, то мех продолжит висеть.
Хотя сразу можно поместить два конфликтующих рецепта ,залить два слитка полиэтилена и машина зависнет.
Не баг с гтнх, это и на иис такое зависание вызывается.Кидаем предметы и после полиэтилен подаём через экстрактор и мех будет висеть.
Еще пример, если залить охлажденую лаву в центрифугу с объёмом меньше чем по рецепту и после положить например грязную пыль назеррака, то центрифуга зависает и продолжает ждать лаву, а не обрабатывать пыль. Не знаю, правильно ли такое поведение у машин или нет.
Проверил на гтнх, там центрифуга берет и выполняет рецепт который возможен и не циклится на невозможном.
Это - скорее всего элемент оптимизации. Чтобы не выполнять сканирования карты рецептов после каждой операции. Пока какие-то компоненты предыдущего рецепта есть - ждем появления недостающих. А когда ничего нет - сканируем всю карту и смотрим под какой рецепт подходит то, что лежит.
Можно отлавливать события изменения инвентаря механизмов. При добавлении\удалении компонентов нужно подобрать подходящий рецепт и создать переменную, которая будет показывать кол-во раз, когда рецепт сможет быть выполнен от момента изменения состояния инвентаря. То есть, если залить охл. лаву в центрифугу, а после положить 64 латекса, майнкрафт сделает проверку рецептов 2 раза, при этом во второй раз в механизме обнаружатся компоненты для ещё одного рецепта, появится переменная: recipesLeft = componentAmount/componentAmountForRecipe (64=64/1, т.к. для рецепта центрифугирования латекса уходит ровно 1ед. латекса). И после каждого выполнения рецепта, в случае, если новых компонентов не было добавлено, нужно будет лишь уменьшать значение счётчика: recipesLeft = recipesLeft-1.
duplicate #267
Описание В одиночке сохранение инвентаря машин и возможно аутпут и инпут басов/хэтчей или пропадает или дюпается при перезаходе в игру.
Воспроизведение Берем дробитель, помещаем батарейку и стак руды. Дробим хотя бы 1 блок руды. Выходим из игры и в масераторе ничего нет, пропадает батарейка и руда вся.
Ожидаемое поведение Должно сохранять инвентарь машины.
Дополнительная информация Скриншоты/Логи/Краши/Видеоролики относящиеся к багу
Среда опишите среду в которой произошла ошибка