If I have some methods which make changes to a player programmatically, while player can execute certain commands to achieve that, should I fire events to notify such changes within the method or the command executor? For example, I have made a command called /canchat and a method called setCanChat(boolean) which toggle the ability for a player to chat. The /canchat internally calls setCanChat(boolean). I have also made an event called PlayerToggleCanChatEvent. Should I fire the event in setCanChat(boolean) (no matter if the change is done programmatically or by executing commands, the event will be fired) or the command executor for /canchat (the event will only be fired when the change is done by executing commands)? Or are there any other better approaches to notify other Listeners about changes without abusing the Bukkit Event API? Thanks.