In shipping carrier class, there's a method to validate additional rules
proccessAdditionalValidation, searching for that method in the code base will reveal
processAdditionalValidation (less than 1 'c'). Then continue searching with that will lead
So in my opinion, there will be 2 approaches for this:
- Extend the current Carrier, add logic into
- Make a new module, with GUI that helps customers/store-owner choose the rules and then process that rule inside
I haven't done something similar but as I checked the code right now, you can create an after Plugin for this method
\Magento\Shipping\Model\CarrierFactory::createIfActive or also this method
\Magento\Shipping\Model\Shipping::isShippingCarrierAvailable, there you can add your validation and return true or false for the shipping method you allow or not.
Although I haven't tried it yet, maybe it will guide you to the right direction.