public List<AvailablePlugin> getNotInstalledPlugins()
    {
        final List<AvailablePlugin> result = new ArrayList<>( availablePlugins.values() );
        final PluginManager pluginManager = XMPPServer.getInstance().getPluginManager();
        final Version currentServerVersion = XMPPServer.getInstance().getServerInfo().getVersion();

        // Iterate over the plugins, remove those that are of no interest.
        final Iterator<AvailablePlugin> iterator = result.iterator();
        while ( iterator.hasNext() )
        {
            final AvailablePlugin availablePlugin = iterator.next();

            // Remove plugins that are already downloaded from the list of available plugins.
            if ( pluginManager.isInstalled( availablePlugin.getCanonicalName() ) )
            {
                iterator.remove();
                continue;
            }

            // Remove plugins that require a newer server version.
            if ( availablePlugin.getMinServerVersion() != null && availablePlugin.getMinServerVersion().isNewerThan( currentServerVersion ) )
            {
                iterator.remove();
            }

            // Remove plugins that require an older server version.
            if ( availablePlugin.getPriorToServerVersion() != null && !availablePlugin.getPriorToServerVersion().isNewerThan( currentServerVersion ) )
            {
                iterator.remove();
            }
        }

        // Sort alphabetically.
        result.sort((o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName()));

        return result;
    }
Returns the list of available plugins, sorted alphabetically, to install as reported by igniterealtime.org.

Currently downloaded plugins will not be included, nor will plugins that require a newer or older server version.

@return the list of available plugins to install as reported by igniterealtime.org.
xmppserver/src/main/java/org/jivesoftware/openfire/update/UpdateManager.java