The first time I had a check if the entitiy was inside of the list and it was the only one in there. I didn't notice that I had removed it. I'm not acting like a no-it-all.... You were wrong about your statements until I changed it.
Now, let mr criticize yours, just so we're even...
1. You only have support for NPCs.
2. You're pulling the first action off the NPC instead of checking for all of the actions with the specified interaction name.
3. In your selectedMenuOption, you're only picking out the specified interaction, and not the entity with the option.
Now, let me explain why everything is screwed up, and why I had everything the way it was before.
1. I was trying to make it like you suggested and forgot about a few things.
2. I was checking if the size() was 1 because I had already set the mouse to move to the entity, and if he was the only one, then it would click the entity, other wise, it would right click and selected an option.
Lets get brief on the "NEVER GETS ANY OPTION":
1. As I explained before...The size() check is if the entity is the only one of the list, which is wrong way to do so, but I will change it.
This will move the mouse to the entity -> client.moveMouse(e.getMouseDestination(), false);
This will check if there is only one entity if (entities.size() == 1)
If not then it will select an option -> (THE ESLE STATEMENT)
EDIT:
I have changed the check to this
if (entities.get(0) != null && entities.get(0).equals(e)) {