Index: src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 16472)
+++ src/org/openstreetmap/josm/plugins/PluginHandler.java	(working copy)
@@ -599,7 +599,13 @@
         MainApplication.worker.submit(() -> {
             // Build list of plugins to download
             Set<PluginInformation> toDownload = new HashSet<>(pluginInfoDownloadTask.getAvailablePlugins());
-            toDownload.removeIf(info -> !missingRequiredPlugin.contains(info.getName()));
+            toDownload.removeIf(info -> !missingRequiredPlugin.contains(info.getName())
+                    && !missingRequiredPlugin.contains(info.provides) || !info.isForCurrentPlatform());
+            // Remove duplicates
+            Set<String> possibleDuplicates = toDownload.parallelStream()
+                    .collect(Collectors.groupingBy(i -> i.provides == null ? i.getName() : i.provides, Collectors.counting()))
+                    .entrySet().stream().filter(e -> e.getValue() > 1).map(Map.Entry::getKey).collect(Collectors.toSet());
+            toDownload.removeIf(i -> possibleDuplicates.contains(i.getName()) || possibleDuplicates.contains(i.provides));
             // Check if something has still to be downloaded
             if (!toDownload.isEmpty()) {
                 // download plugins
