the simplist way to accomplish this would be to create 16 new columns in the eCart object one for each truffle.
then in the add to cart button, set each of the 16 columns to be updateable from a select list.
populate each of the 16 columns with all 20 of the available truffles.
this will ensure that only 16 truffles can be selected, but will have the draw back of the customer having to select truffle A 4 times if that is how many they want.
it _Could_ be done where you had a quantity box next to each select list, but in this case, you would need to hand code the logic to ensure that the total quantity of items selected was 16.