You know what, instead of doing all that junk, let's just utilize the Bukkit event system where we need to, (like in quests and deities) and then instead of heavily relying on custom events, we just directly call the method we'd put in the listener if the event isn't cancelled.
Removed old comment because it was overly complicating the issue and it made my brain hurt to try and comprehend the overly complicating solution I thought up to fix the problem.
You know what, instead of doing all that junk, let's just utilize the Bukkit event system where we need to, (like in quests and deities) and then instead of heavily relying on custom events, we just directly call the method we'd put in the listener if the event isn't cancelled.