ForgeDirection face = ForgeDirection.getOrientation(side);
if (world.getBlockId(x + face.offsetX, y + face.offsetY, z + face.offsetZ) == 0 && Util.getCellRegistry().getHandlerForCell(itemstack).storedItemTypes() != 0)
{
if (FMLCommonHandler.instance().getEffectiveSide().isServer())
{
IAEItemStack request = Util.createItemStack(Util.getCellRegistry().getHandlerForCell(itemstack).getAvailableItems().getItems().get(0).copy());
ItemStack block = request.getItemStack();
if (block.getItem() instanceof ItemBlock)
{
ItemBlock itemblock = (ItemBlock) request.getItem();
if (world.getBlockId(x, y, z) != 7)
{
switch (itemstack.getTagCompound().getInteger("mode"))
{
case 0:
request.setStackSize(1);
itemblock.onItemUseFirst(request.getItemStack(), player, world, x, y, z, side, xOffset, yOffset, zOffset);
itemblock.onItemUse(request.getItemStack(), player, world, x, y, z, side, xOffset, yOffset, zOffset);
Util.getCellRegistry().getHandlerForCell(itemstack).extractItems(request);
break;
case 1:
request.setStackSize(1);
world.destroyBlock(x, y, z, true);
placeBlock(request.getItemStack(), world, player, x, y, z, side, xOffset, yOffset, zOffset);
Util.getCellRegistry().getHandlerForCell(itemstack).extractItems(request);
break;
case 2:
request.setStackSize(9);
if (Util.getCellRegistry().getHandlerForCell(itemstack).storedItemCount() > 9)
{
switch (ForgeDirection.getOrientation(side))
{
case DOWN:
for (int posX = x - 1; posX < x + 2; posX++)
{
for (int posZ = z - 1; posZ < z + 2; posZ++)
{
world.destroyBlock(posX, y, posZ, true);
placeBlock(request.getItemStack(), world, player, x, y, z, side, xOffset, yOffset, zOffset);
}
}
Util.getCellRegistry().getHandlerForCell(itemstack).extractItems(request);
break;
case EAST:
for (int posZ = z - 1; posZ < z + 2; posZ++)
{
for (int posY = y - 1; posY < y + 2; posY++)
{
world.destroyBlock(x, posY, posZ, true);
placeBlock(request.getItemStack(), world, player, x, posY, posZ, side, xOffset, yOffset, zOffset);
}
}
Util.getCellRegistry().getHandlerForCell(itemstack).extractItems(request);
break;
case NORTH:
for (int posX = x - 1; posX < x + 2; posX++)
{
for (int posY = y - 1; posY < y + 2; posY++)
{
world.destroyBlock(posX, posY, z, true);
placeBlock(request.getItemStack(), world, player, posX, posY, z, side, xOffset, yOffset, zOffset);
}
}
Util.getCellRegistry().getHandlerForCell(itemstack).extractItems(request);
break;
case SOUTH:
for (int posX = x - 1; posX < x + 2; posX++)
{
for (int posY = y - 1; posY < y + 2; posY++)
{
world.destroyBlock(posX, posY, z, true);
placeBlock(request.getItemStack(), world, player, posX, posY, z, side, xOffset, yOffset, zOffset);
}
}
Util.getCellRegistry().getHandlerForCell(itemstack).extractItems(request);
break;
case UNKNOWN:
break;
case UP:
for (int posX = x - 1; posX < x + 2; posX++)
{
for (int posZ = z - 1; posZ < z + 2; posZ++)
{
world.destroyBlock(posX, y, posZ, true);
placeBlock(request.getItemStack(), world, player, posX, y, posZ, side, xOffset, yOffset, zOffset);
}
}
Util.getCellRegistry().getHandlerForCell(itemstack).extractItems(request);
break;
case WEST:
for (int posZ = z - 1; posZ < z + 2; posZ++)
{
for (int posY = y - 1; posY < y + 2; posY++)
{
world.destroyBlock(x, posY, posZ, true);
placeBlock(request.getItemStack(), world, player, x, posY, posZ, side, xOffset, yOffset, zOffset);
}
}
Util.getCellRegistry().getHandlerForCell(itemstack).extractItems(request);
break;
default: