If you would compare the both ways, jointeam method should be better. I do not see why it can be "ugly", well let's say so. But the first way is much more ugly/hacky, so anyway... I'd prefer just to emulate join* commands to let the game do all other stuff itself, like proper spawn etc, instead of recoding the whole join functionality. Anyway if you feel like not going efficient way, it's your choice.