Hi,
I haven't used Phaser JS, but an easy way to check if moveRight is being called multiple times by the blocks you assemble is by opening the Developer console after you assemble the blocks and entering the following:
Blockly.JavaScript.workspaceToCode();
Then you can see the code that is being run. I don't see anything wrong with your generator for the "right" block. However, if the "when_run" block is a block with a statement input and the statement input is not also called when_run, then none of the code from the blocks contained in that stack will be part of the generated code, which could be causing your problem.
Best,
Jason