RESOLVED:
I was so focused on looking for errors in my classes and methods that I overlooked a simple misplaced parameter that made my code use the wrong class. The issue is essentially a duplicate of this, despite what I said in my post below. Apologies.
I'm making pretty standard StairsBlock, and it's basically just a re-skin of the acacia stairs. When Minecraft loads, I get a bunch of exceptions in the debug log:
I've never had this issue before. I've checked multiple times, and my JSON is basically an exact copy of the acacia stairs JSON. The same is true of the model JSONS:
At first glance, this seems like the same issue found here, but while I am adding the StairsBlock to my DeferredRegister in an odd way, I am initializing StairsBlock, and the method I've used to add it to my DeferredRegister has proven successful for SlabBlocks. I've listed all my code below. There's quite a bit there, so... sorry about that. Feedback is greatly appreciated.
Template class:
Extension class:
AbstractBaseBlock class:
BaseBlock class:
BaseStairs class is listed below. The BaseSlab class is the same, except that blockConstructor() returns a SlabBlock, as expected.
Here's the main class: