При возврате false в canExtractItem() слот полностью блокируется

Версия Minecraft
1.12.2
API
Forge
Пытаюсь модифицировать под себя готовый мод, столкнулся с проблемой. Если canExtractItem() возвращает false, то блокируется не только автоматический вывод(воронки и т.п.), а весь слот целиком - ручное извлечение тоже не работает. У других механизмов такого нет, только у этого. Что может мешать ручному извлечению? Может, в коде чего-то не хватает? Или наоборот - есть параметр, который блокирует весь слот целиком? Бьюсь уже долгое время, никак не могу найти причину.
 
На canExtractItem проверяется в SidedInvWrapper::extractItem(строка:190) и SidedInvWrapper похоже используется во всех ванильных контейнерах.
Если тебе надо отключить только воронку то можешь менять TileEntityHopper.canExtractItemFromSlot(строка:445)
В этот раз наговнокодили не моджанги а форджанги :unsure:
 
Тут проблема не только в воронке. Речь в целом про вывод с помощью присоединенного тайла, будь то воронка, труба и им подобные. Приложу файл(TileEntityMachineBase), который наследует большинство машин, и файл(TileEntityRBMKSlottedBase), который наследует тот механизм, с которым проблемы. Я понял, что проблема именно в этом файле, но так и не понял, в чем именно и как это исправить.
 

Вложения

  • TileEntityMachineBase.java
    4.7 KB · Просмотры: 1
  • TileEntityRBMKSlottedBase.java
    3.1 KB · Просмотры: 1
Ну так вот у тебя в TileEntityRBMKSlottedBase в анонимусе ItemStackHandler'а проверка на canExtractItem
Java:
            @Override
            public ItemStack extractItem(int slot, int amount, boolean simulate) {
                if(canExtractItem(slot, inventory.getStackInSlot(slot), amount))
                    return super.extractItem(slot, amount, simulate);
                return ItemStack.EMPTY;
            }
а ItemStackHandler как раз отвечает за инвентарь контейнера, вот и блокируется,
убираешь этоту проверку или заменяешь inventory на свой анонимус ItemStackHandler'а и все.
 
Назад
Сверху