public boolean allowPutStack(
     IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
   if (super.allowPutStack(aBaseMetaTileEntity, aIndex, aSide, aStack))
     return getInputSlot() != aIndex && ItemList.Crate_Empty.isStackEqual(aStack)
         || ItemList.Schematic_1by1.isStackEqual(getInputAt(1))
         || ItemList.Schematic_2by2.isStackEqual(getInputAt(1))
         || ItemList.Schematic_3by3.isStackEqual(getInputAt(1))
         || gregtech.api.util.GT_Recipe.GT_Recipe_Map.sBoxinatorRecipes.findRecipe(
                 getBaseMetaTileEntity(),
                 true,
                 GT_Values.V[mTier],
                 null,
                 new ItemStack[] {
                   GT_Utility.copyAmount(64L, new Object[] {aStack}), getInputAt(1)
                 })
             != null;
   else return false;
 }
 public int checkRecipe() {
   int tCheck = super.checkRecipe();
   if (tCheck != 0) {
     return tCheck;
   }
   if ((GT_Utility.isStackValid(getInputAt(0)))
       && (GT_Utility.isStackValid(getInputAt(1)))
       && (GT_Utility.getContainerItem(getInputAt(0), true) == null)) {
     if ((ItemList.Schematic_1by1.isStackEqual(getInputAt(1))) && (getInputAt(0).stackSize >= 1)) {
       this.mOutputItems[0] = GT_ModHandler.getRecipeOutput(new ItemStack[] {getInputAt(0)});
       if (this.mOutputItems[0] != null) {
         if (canOutput(new ItemStack[] {this.mOutputItems[0]})) {
           getInputAt(0).stackSize -= 1;
           this.mEUt = (32 * (1 << this.mTier - 1) * (1 << this.mTier - 1));
           this.mMaxProgresstime = (16 / (1 << this.mTier - 1));
           return 2;
         }
       }
       return 0;
     }
     if ((ItemList.Schematic_2by2.isStackEqual(getInputAt(1))) && (getInputAt(0).stackSize >= 4)) {
       this.mOutputItems[0] =
           GT_ModHandler.getRecipeOutput(
               new ItemStack[] {getInputAt(0), getInputAt(0), null, getInputAt(0), getInputAt(0)});
       if (this.mOutputItems[0] != null) {
         if (canOutput(new ItemStack[] {this.mOutputItems[0]})) {
           getInputAt(0).stackSize -= 4;
           this.mEUt = (32 * (1 << this.mTier - 1) * (1 << this.mTier - 1));
           this.mMaxProgresstime = (32 / (1 << this.mTier - 1));
           return 2;
         }
       }
       return 0;
     }
     if ((ItemList.Schematic_3by3.isStackEqual(getInputAt(1))) && (getInputAt(0).stackSize >= 9)) {
       this.mOutputItems[0] =
           GT_ModHandler.getRecipeOutput(
               new ItemStack[] {
                 getInputAt(0),
                 getInputAt(0),
                 getInputAt(0),
                 getInputAt(0),
                 getInputAt(0),
                 getInputAt(0),
                 getInputAt(0),
                 getInputAt(0),
                 getInputAt(0)
               });
       if (this.mOutputItems[0] != null) {
         if (canOutput(new ItemStack[] {this.mOutputItems[0]})) {
           getInputAt(0).stackSize -= 9;
           this.mEUt = (32 * (1 << this.mTier - 1) * (1 << this.mTier - 1));
           this.mMaxProgresstime = (64 / (1 << this.mTier - 1));
           return 2;
         }
       }
       return 0;
     }
   }
   return 0;
 }