diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 9235abcc53..aafb00daba 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -185,6 +185,8 @@ mod.scripts.disable = Your device does not support mods with scripts. You must d mod.dependencies.error = [scarlet]Mods are missing dependencies mod.dependencies.download = Download +mod.dependencies.success = Successfully downloaded all dependencies +mod.dependencies.failure = Failed to download some dependencies: about.button = About name = Name: diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 563ed49e1d..1165a0bf71 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -663,10 +663,10 @@ public class Mods implements Loadable{ p.row(); p.table(d -> { mod.missingDependencies.each(dep -> { - d.add(" - " + dep).wrap().growX().left().get().setAlignment(Align.left); + d.add(" " + dep).wrap().growX().left().get().setAlignment(Align.left); d.row(); }); - }).growX(); + }).growX().padBottom(8f); p.row(); }); }).fillX(); @@ -678,10 +678,20 @@ public class Mods implements Loadable{ b.button("@mod.dependencies.download", () -> { hide(); Seq missingDeps = new Seq<>(); - mods.each(m -> m.enabled() && m.hasUnmetDependencies(), mod -> { + mods.each(LoadedMod::hasUnmetDependencies, mod -> { mod.missingDependencies.each(missingDeps::addUnique); }); + int amount = missingDeps.size; ui.mods.importDependencies(missingDeps); + if(missingDeps.size < amount) requiresReload = true; + + if(missingDeps.isEmpty()){ + ui.showInfo("@mod.dependencies.success"); + }else{ + String[] fail = {Core.bundle.get("mod.dependencies.failure")}; + missingDeps.each(d -> fail[0] += "\n " + d); + ui.showStartupInfo(fail[0]); + } }).size(150, 50); }); }}.show(); diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index 9d8041c7fb..8001ebe0c8 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -677,6 +677,7 @@ public class ModsDialog extends BaseDialog{ getModList(listings -> { listings.each(l -> dependencies.contains(l.internalName), l -> { githubImportMod(l.repo, l.hasJava); + dependencies.remove(l.internalName); }); }); }