Кастомный TileEntity и ae2

Версия Minecraft
1.12.2
API
Forge
37
1
3
Есть у меня TileEntity по типу печки, принимает ресурсы и топливо и возвращает результат. Решил затестить с ае2, а шины импорта и экспорта не работают вместе с ним, ни на одной из сторон. Пробовал воронку - она работает (как минимум на одной стороне). Вопрос: для своего мода нужно прописывать совместимоть с ае2 или оно в теории само должно работать?
 
37
1
3
canInsertItem:
public boolean canInsertItem(int index, ItemStack itemStackIn, EnumFacing direction)
    {
        return this.isItemValidForSlot(index, itemStackIn);
    }

canExtractItem:
 public boolean canExtractItem(int index, ItemStack stack, EnumFacing direction)
    {
        if (direction == EnumFacing.DOWN && index == 1)
        {
            Item item = stack.getItem();

            if (item != Items.WATER_BUCKET && item != Items.BUCKET)
            {
                return false;
            }
        }

        return true;
    }
getSlotsForFace:
 public int[] getSlotsForFace(EnumFacing side)
    {
        if (side == EnumFacing.DOWN)
        {
            return SLOTS_BOTTOM;
        }
        else
        {
            return side == EnumFacing.UP ? SLOTS_TOP : SLOTS_SIDES;
        }
    }
 
37
1
3
Ещё раз посмотрел индексы, не вижу в них ошибок
Java:
public static int slotscount = 5;
    public static int slotsinput = 2;

    private static final int[] SLOTS_TOP = new int[] {0};
    private static final int[] SLOTS_BOTTOM = new int[] {slotsinput + 1, slotsinput};
    private static final int[] SLOTS_SIDES = new int[] {slotsinput};
    
    private NonNullList<ItemStack> ExtractorItemStacks = NonNullList.<ItemStack>withSize(slotscount, ItemStack.EMPTY);
 
7,099
324
1,510
ISidedInventory на 1.12.2? Не юзай это, оно устарело давно, лучше сделай через капабилити
 
37
1
3
лучше сделай через капабилити
А можно пример, как это делается? У меня есть капабилити, но я не уверен, что это то, что нужно.


Java:
net.minecraftforge.items.IItemHandler handlerTop = new net.minecraftforge.items.wrapper.SidedInvWrapper(this, net.minecraft.util.EnumFacing.UP);
    net.minecraftforge.items.IItemHandler handlerBottom = new net.minecraftforge.items.wrapper.SidedInvWrapper(this, net.minecraft.util.EnumFacing.DOWN);
    net.minecraftforge.items.IItemHandler handlerSide = new net.minecraftforge.items.wrapper.SidedInvWrapper(this, net.minecraft.util.EnumFacing.WEST);

    @SuppressWarnings("unchecked")
    @Override
    @javax.annotation.Nullable
    public <T> T getCapability(net.minecraftforge.common.capabilities.Capability<T> capability, @javax.annotation.Nullable net.minecraft.util.EnumFacing facing)
    {
        if (facing != null && capability == net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
            if (facing == EnumFacing.DOWN)
                return (T) handlerBottom;
            else if (facing == EnumFacing.UP)
                return (T) handlerTop;
            else
                return (T) handlerSide;
        return super.getCapability(capability, facing);
    }
 
7,099
324
1,510
Да, именно так это и делается. И сохранять(реализация Storage) эти капы нужно также в тех же сторонах
 
37
1
3
И сохранять(реализация Storage) эти капы нужно также в тех же сторонах
Окей, я уже долго пытаюсь понять как это сделать, понял только, что надо реализовать интерфейс IStorage
 
Последнее редактирование:
Сверху