/* * Copyright (c) CovertJaguar, 2014 http://railcraft.info * * This code is the property of CovertJaguar * and may only be used with explicit written * permission unless otherwise specified on the * license page at http://railcraft.info/wiki/info:license. */ package mods.railcraft.common.carts; import mods.railcraft.api.carts.CartTools; import mods.railcraft.common.util.inventory.InvTools; import mods.railcraft.common.util.inventory.StandaloneInventory; import mods.railcraft.common.util.inventory.filters.ArrayStackFilter; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; /** * @author CovertJaguar <http://www.railcraft.info> */ public abstract class CartMaintenancePatternBase extends CartMaintenanceBase implements ISidedInventory { protected final StandaloneInventory patternInv = new StandaloneInventory(6, this); public CartMaintenancePatternBase(World world) { super(world); } public IInventory getPattern() { return patternInv; } @Override public int getSizeInventory() { return 1; } @Override public boolean canExtractItem(int slot, ItemStack stack, int side) { return false; } @Override public boolean canInsertItem(int slot, ItemStack stack, int side) { return isItemValidForSlot(slot, stack); } protected void stockItems(int slotReplace, int slotStock) { ItemStack stackReplace = patternInv.getStackInSlot(slotReplace); ItemStack stackStock = getStackInSlot(slotStock); if (stackStock != null && !InvTools.isItemEqual(stackReplace, stackStock)) { CartTools.offerOrDropItem(this, stackStock); setInventorySlotContents(slotStock, null); } if (stackReplace == null) return; stackStock = getStackInSlot(slotStock); if (stackStock == null) setInventorySlotContents(slotStock, CartTools.transferHelper.pullStack(this, new ArrayStackFilter(stackReplace))); } @Override protected void writeEntityToNBT(NBTTagCompound data) { super.writeEntityToNBT(data); patternInv.writeToNBT("patternInv", data); } @Override protected void readEntityFromNBT(NBTTagCompound data) { super.readEntityFromNBT(data); patternInv.readFromNBT("patternInv", data); } }