/** * Copyright (c) Lambda Innovation, 2013-2016 * This file is part of the AcademyCraft mod. * https://github.com/LambdaInnovation/AcademyCraft * Licensed under GPLv3, see project root for more information. */ package cn.academy.crafting.block; import cn.academy.core.container.TechUIContainer; import cn.academy.crafting.ModuleCrafting; import cn.academy.crafting.api.ImagFusorRecipes; import cn.academy.crafting.item.ItemMatterUnit; import cn.academy.energy.api.IFItemManager; import cn.academy.energy.block.SlotIFItem; import cn.lambdalib.template.container.CleanContainer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import static cn.academy.crafting.block.TileImagFusor.*; /** * @author WeAthFolD * */ public class ContainerImagFusor extends TechUIContainer<TileImagFusor> { public ContainerImagFusor(TileImagFusor _tile, EntityPlayer _player) { super(_player, _tile); initInventory(); } private void initInventory() { this.addSlotToContainer(new SlotCrystal(tile, SLOT_INPUT, 13, 49)); this.addSlotToContainer(new SlotCrystal(tile, SLOT_OUTPUT, 143, 49)); this.addSlotToContainer(new SlotMatterUnit(tile, ModuleCrafting.imagPhase.mat, SLOT_IMAG_INPUT, 13, 10)); this.addSlotToContainer(new SlotMatterUnit(tile, ModuleCrafting.imagPhase.mat, SLOT_IMAG_OUTPUT, 143, 10)); this.addSlotToContainer(new SlotIFItem(tile, SLOT_ENERGY_INPUT, 42, 80)); mapPlayerInventory(); ItemMatterUnit unit = ModuleCrafting.matterUnit; SlotGroup inventoryGroup = gRange(4, inventorySlots.size()); this.addTransferRule(inventoryGroup, stack -> unit.getMaterial(stack) == ModuleCrafting.imagPhase.mat, gSlots(2)); this.addTransferRule(inventoryGroup, stack -> IFItemManager.instance.isSupported(stack), gSlots(3)); this.addTransferRule(inventoryGroup, gSlots(0)); this.addTransferRule(gRange(0, 4), inventoryGroup); } /** * @author KSkun */ private static class SlotCrystal extends Slot { private int slot; public SlotCrystal(IInventory inv, int _slot, int x, int y) { super(inv, _slot, x, y); slot = _slot; } @Override public boolean isItemValid(ItemStack stack) { if(slot == 0) { for (ImagFusorRecipes.IFRecipe obj : ImagFusorRecipes.INSTANCE.getAllRecipe()) { if (obj.consumeType.getItem() == stack.getItem()) return true; } } return false; } } }