having done this before, i do not know why one would need to create a new shipping module.

ZC out of the box contains a store pickup shipping option. i can only assume that module is in use.

what one needs to do is set up a new field for said products, 'products_in_store_only'.

one can then disable all other shipping modules by checking if the cart has any of those items, ie:

Code:
// in the quote method for all other enabled shipping modules (or with an observer if one is available):

        $in_store_count = $_SESSION['cart']->in_cart_check('products_in_store_only', 'Y');

        if ($in_store_count > 0) {
            $messageStack->add_session(
                'checkout_shipping',
                "Your cart contains items which are only available for in-store pickup.",
                'warning'
            );
            return;
        }
this will limit the complete order to only being available for in-store pickup.

adding another shipping method makes little sense to me, as i am not sure what that gives you other than another level of unneeded complexity.

best.