That probably isn't possible. When he explained why you can't have two different kind of slabs in a single block, it came off that adding so much data wouldn't fit 4 bytes. But that is talking about a single block instead of matching up two of any kind, so... Well, point being, that sounds WAY too obvious a solution. There must be implications.
Well, I don't necessarily mean being able to combine different slabs (I'd love that, but that's not necessarily the purpose)
The purpose of this is that you don't really need to do anything to define a new stair or slab block - if there's a solid block, just create a new stair parented to it and that stair has all the solid block's properties and overrides everything back to that solid block.
So, instead of creating a NetherBrickSlabBlock class and copying everything that netherbricks do over to that - what tool to mine it with, its strength, explosion resistance, etc... and changing the render type to stairs, you instead create a new StairBlock
object and give it the nether brick block as its parent. Then if you attempt to get the tool type, explosion resistance, etc. from that, it will actually return its parent's value. Essentially it just inherits everything.
Actually I really want to know how you even thought I meant having two types of slab in one block. I didn't even mention anything like that.