private static void call(GameException exception) {

        HandlerList handlers = exception.getHandlers();
        RegisteredListener[] listeners = handlers.getRegisteredListeners();

        for (RegisteredListener registration : listeners) {
            if (!registration.getPlugin().isEnabled()) {
                continue;
            }
            // Check if the exception belongs to the plugin which registered the listener
            else if (!registration.getPlugin().equals(exception.getPlugin())) {
                continue;
            }

            try {
                registration.callEvent(exception);
            } catch (AuthorNagException e) {
                Plugin plugin = registration.getPlugin();

                if (plugin.isNaggable()) {
                    plugin.setNaggable(false);
                    Bukkit.getLogger().log(Level.SEVERE, String.format("Nag author(s): '%s' of '%s' about the following: %s", new Object[] { plugin.getDescription().getAuthors(), plugin.getDescription().getFullName(), e.getMessage() }));
                }
            } catch (Exception e) {
                Bukkit.getLogger().log(Level.SEVERE, "Could not pass exception " + exception.getEventName() + " to " + registration.getPlugin().getDescription().getFullName(), e);
            }
        }
    }