The javadocs for BlockDispenseEvent suggest the ItemStack is a single item which is being dispensed. Before this fix, sometimes it was the whole stack before a single item had been taken. This fixes that so the stack size is always 1.