/**
  * Looks for anything, that can hold items (like chests, furnaces, etc.) one block above the given
  * hopper.
  */
 public static IInventory getInventoryAboveHopper(Hopper par0Hopper) {
   return getInventoryAtLocation(
       par0Hopper.getWorldObj(),
       par0Hopper.getXPos(),
       par0Hopper.getYPos() + 1.0D,
       par0Hopper.getZPos());
 }
  /** Sucks one item into the given hopper from an inventory or EntityItem above it. */
  public static boolean suckItemsIntoHopper(Hopper par0Hopper) {
    IInventory iinventory = getInventoryAboveHopper(par0Hopper);

    if (iinventory != null) {
      byte b0 = 0;

      if (iinventory instanceof ISidedInventory && b0 > -1) {
        ISidedInventory isidedinventory = (ISidedInventory) iinventory;
        int[] aint = isidedinventory.getAccessibleSlotsFromSide(b0);

        for (int i = 0; i < aint.length; ++i) {
          if (insertStackFromInventory(par0Hopper, iinventory, aint[i], b0)) {
            return true;
          }
        }
      } else {
        int j = iinventory.getSizeInventory();

        for (int k = 0; k < j; ++k) {
          if (insertStackFromInventory(par0Hopper, iinventory, k, b0)) {
            return true;
          }
        }
      }
    } else {
      EntityItem entityitem =
          getEntityAbove(
              par0Hopper.getWorldObj(),
              par0Hopper.getXPos(),
              par0Hopper.getYPos() + 1.0D,
              par0Hopper.getZPos());

      if (entityitem != null) {
        return insertStackFromEntity(par0Hopper, entityitem);
      }
    }

    return false;
  }