To date, I've just assumed listeners were removed by Bukkit when the plugin was disabled. I have since learned this to not be the case. Events still get sent to disabled plugins and disabled plugin listeners still react to those events. Is there a "best practice" design pattern I should be employing to manage plugin disablement properly? I'm thinking two things at least here... 1 - Instantiate listeners in the plugin's onLoad event to avoid creating additional listeners in each onEnable event that might be called more than once. 2 - Each event method of a listener should have checks upfront to determine if it should continue: if (event.isCancelled() || plugin.isDisabled()) return; Is there any way to disable a listener that I'm overlooking? Or are we stuck with managing this all ourselves in the plugin itself?