Ugh...
I know exactly what the issue is now that you've described it, I haven't even looked at the code yet and I'm just like... noooo... do I really have to do that?
In short... Since you've built the entity, your hand is now empty, so when I check to see what the player is holding, it returns "Nothing!" so, the result is that it don't change the hands.
what I think I'm going to need to do is check on_pre_built_entity save it to a varible, then look at that variable in on_built_entity
I'll look into it.