That's good news.
If you want, I will explain what I do to allow pushing custom entities which are buttons using some generic portable entities. (I usually set a property "entity.can_push_buttons=true" in the specialized script.) You will need the script of the button.
Also, we will need to add a custom event to the throw function, to add a collision test to the metal ball when it is falling, and remove the collision test when it has fallen. This will be useful to hurt enemies and destroy other objects if we create the metal ball of Link's awakening.