What kind of "Listeners" are available in jme3?

I’m trying to make a system where two NPCs play “catch” with eachother. both NPCs have a controlled added to them called

PlayCatchControl. Which has 3 primary functions - moveToLocation(Vector3f location), pickUpItemAtFeet(), throwItem()

There is a ball in the world that the 2 npcs should play catch with. RIght now I one of the NPCs can throw the ball. but the other NPC needs to move to the location of the ball, pick it up, and throw it back.

The way to do this in my mind is to have an action listener kind of system. where the NPCs can basically do nothing. But once one NPC does a throwItem() command it triggers the event listener event with information about who threw the ball and what the ball’s node is. (so the other NPC can find it and throw it back)… something along the lines of


I was about to make my own listener, but I feel like something like this might already be in JME (a system for one Control to respond to the Control action of another) and I would just be duplicating features Should I go ahead and do this or is there a better way?