@Override
  public boolean executeBlock(int pMode, int px, int py, int pz) {
    if (!owner.isEqualTile()) {
      return false;
    }

    TileEntityFurnace ltile = (TileEntityFurnace) owner.maidTileEntity;
    ItemStack litemstack;
    boolean lflag = false;
    int li;

    if (owner.getSwingStatusDominant().canAttack()) {
      // 完成品回収
      litemstack = ltile.getStackInSlot(2);
      if (litemstack != null) {
        if (litemstack.stackSize > 0) {
          li = litemstack.stackSize;
          if (owner.maidInventory.addItemStackToInventory(litemstack)) {
            dropExpOrb(litemstack, li - litemstack.stackSize);
            owner.playSound("random.pop");
            owner.setSwing(5, LMM_EnumSound.cookingOver, false);
            //                    	if
            // (!pEntityLittleMaid.maidInventory.isItemBurned(pEntityLittleMaid.maidInventory.currentItem)) {
            owner.getNextEquipItem();
            //                    	}
            lflag = true;
          }
        }
        ltile.setInventorySlotContents(2, null);
      }

      // 調理可能品を竈にぽーい
      if (!lflag && ltile.getStackInSlot(0) == null) {
        litemstack = ltile.getStackInSlot(2);
        li = owner.maidInventory.getSmeltingItem();
        owner.setEquipItem(li);
        if (li > -1) {
          litemstack = owner.maidInventory.getStackInSlot(li);
          // レシピ対応品
          if (litemstack.stackSize >= ltile.getInventoryStackLimit()) {
            ltile.setInventorySlotContents(
                0, litemstack.splitStack(ltile.getInventoryStackLimit()));
          } else {
            ltile.setInventorySlotContents(0, litemstack.splitStack(litemstack.stackSize));
          }
          if (litemstack.stackSize <= 0) {
            owner.maidInventory.setInventorySlotContents(li, null);
          }
          owner.playSound("random.pop");
          owner.setSwing(5, LMM_EnumSound.cookingStart, false);
          lflag = true;
        }
      }

      // 手持ちの燃料をぽーい
      if (!lflag && ltile.getStackInSlot(1) == null && ltile.getStackInSlot(0) != null) {
        owner.getNextEquipItem();
        litemstack = owner.getCurrentEquippedItem();
        if (LMM_InventoryLittleMaid.isItemBurned(litemstack)) {
          if (litemstack.stackSize >= ltile.getInventoryStackLimit()) {
            ltile.setInventorySlotContents(
                1, litemstack.splitStack(ltile.getInventoryStackLimit()));
          } else {
            ltile.setInventorySlotContents(1, litemstack.splitStack(litemstack.stackSize));
          }
          if (litemstack.stackSize <= 0) {
            owner.maidInventory.setInventoryCurrentSlotContents(null);
          }
          owner.getNextEquipItem();
          owner.playSound("random.pop");
          owner.setSwing(5, LMM_EnumSound.addFuel, false);
          lflag = true;
        } else {
          if (ltile.isBurning()) {
            lflag = true;
          } else {
            // 燃やせるアイテムを持ってないので調理可能品を回収
            ItemStack litemstack2 = ltile.getStackInSlotOnClosing(0);
            if (owner.maidInventory.addItemStackToInventory(litemstack2)) {
              owner.playSound("random.pop");
              owner.setSwing(5, LMM_EnumSound.Null, false);
              owner.getNextEquipItem();
              lflag = false;
            } else {
              ltile.setInventorySlotContents(0, litemstack2);
            }
          }
        }
      }

      // 燃え終わってるのに燃料口に何かあるなら回収する
      if (!lflag && !ltile.isBurning() && ltile.getStackInSlot(1) != null) {
        ItemStack litemstack2 = ltile.getStackInSlotOnClosing(1);
        if (owner.maidInventory.addItemStackToInventory(litemstack2)) {
          owner.playSound("random.pop");
          owner.setSwing(5, LMM_EnumSound.Null, false);
          owner.getNextEquipItem();
          lflag = LMM_InventoryLittleMaid.isItemBurned(owner.getCurrentEquippedItem());
        } else {
          ltile.setInventorySlotContents(1, litemstack2);
        }
      }
    } else {
      lflag = true;
    }
    if (ltile.isBurning()) {
      owner.setWorking(true);
      owner.setSneaking(py - (int) owner.posY <= 0);
      lflag = true;
    }
    // mod_LMM_littleMaidMob.Debug("work" + lflag);
    return lflag;
  }
 @Override
 public boolean checkItemStack(ItemStack pItemStack) {
   return LMM_InventoryLittleMaid.isItemBurned(pItemStack)
       || LMM_InventoryLittleMaid.isItemSmelting(pItemStack);
 }
 @Override
 public boolean shouldBlock(int pMode) {
   return owner.maidTileEntity instanceof TileEntityFurnace
       && (((TileEntityFurnace) owner.maidTileEntity).isBurning()
           || LMM_InventoryLittleMaid.isItemBurned(owner.getCurrentEquippedItem()));
 }