use of com.builtbroken.mc.api.tile.IExtendedStorage in project Engine by VoltzEngine-Project.
the class InternalInventoryHandler method tryPlaceInPosition.
/**
* Tries to place an itemStack in a specific position if it is an inventory.
*
* @return The ItemStack remained after place attempt
*/
public ItemStack tryPlaceInPosition(ItemStack itemStack, Pos position, ForgeDirection dir) {
TileEntity tileEntity = position.getTileEntity(world);
ForgeDirection direction = dir.getOpposite();
if (tileEntity != null && itemStack != null) {
if (tileEntity instanceof TileEntityChest) {
TileEntityChest[] chests = { (TileEntityChest) tileEntity, null };
/**
* Try to find a double chest.
*/
for (int i = 2; i < 6; i++) {
ForgeDirection searchDirection = ForgeDirection.getOrientation(i);
Pos searchPosition = position.clone();
searchPosition.add(searchDirection);
if (searchPosition.getTileEntity(world) != null) {
if (searchPosition.getTileEntity(world).getClass() == chests[0].getClass()) {
chests[1] = (TileEntityChest) searchPosition.getTileEntity(world);
break;
}
}
}
for (TileEntityChest chest : chests) {
if (chest != null) {
for (int i = 0; i < chest.getSizeInventory(); i++) {
itemStack = this.addStackToInventory(i, chest, itemStack);
if (itemStack == null) {
return null;
}
}
}
}
} else if (tileEntity instanceof IExtendedStorage) {
return ((IExtendedStorage) tileEntity).addStackToStorage(itemStack);
} else if (tileEntity instanceof ISidedInventory) {
ISidedInventory inventory = (ISidedInventory) tileEntity;
int[] slots = inventory.getAccessibleSlotsFromSide(direction.ordinal());
for (int i = 0; i < slots.length; i++) {
if (inventory.canInsertItem(slots[i], itemStack, direction.ordinal())) {
itemStack = this.addStackToInventory(slots[i], inventory, itemStack);
}
if (itemStack == null) {
return null;
}
}
} else if (tileEntity instanceof IInventory) {
IInventory inventory = (IInventory) tileEntity;
for (int i = 0; i < inventory.getSizeInventory(); i++) {
itemStack = this.addStackToInventory(i, inventory, itemStack);
if (itemStack == null) {
return null;
}
}
}
}
if (itemStack == null || itemStack.stackSize <= 0) {
return null;
}
return itemStack;
}
Aggregations