mirror of
https://github.com/Anuken/Mindustry.git
synced 2026-10-01 18:50:27 +03:00
Allow automatically disabled mods to be restored (#12263)
* Allow automatically disabled mods to be restored * Indicate failed status * Apply suggestion from @Anuken * Update bundle.properties --------- Co-authored-by: Anuken <arnukren@gmail.com>
This commit is contained in:
@@ -144,6 +144,7 @@ mods.initfailed = [red]\u26A0[] The previous Mindustry instance failed to initia
|
||||
mods = Mods
|
||||
mods.name = Mod:
|
||||
mods.none = [lightgray]No mods found!
|
||||
mods.restore = Restore Failed
|
||||
mods.guide = Modding Guide
|
||||
mods.report = Report Bug
|
||||
mods.openfolder = Open Folder
|
||||
@@ -162,6 +163,7 @@ mod.installed = [[Installed]
|
||||
mod.display = [gray]Mod:[accent] {0}
|
||||
mod.enabled = [lightgray]Enabled
|
||||
mod.disabled = [red]Disabled
|
||||
mod.failed = [red]Failed
|
||||
mod.multiplayer.compatible = [gray]Multiplayer Compatible
|
||||
mod.disable = Disable
|
||||
mod.version = Version:
|
||||
@@ -3578,4 +3580,4 @@ name.token.explosions = Explosions
|
||||
name.token.loops = Loops
|
||||
name.token.movement = Movement
|
||||
name.token.shoot = Shoot
|
||||
name.token.ui = UI
|
||||
name.token.ui = UI
|
||||
|
||||
@@ -132,6 +132,7 @@ public class Mods implements Loadable{
|
||||
lastOrderedMods = null;
|
||||
requiresReload = true;
|
||||
//enable the mod on import
|
||||
Core.settings.put("mod-" + loaded.name + "-failed", false);
|
||||
if(forceEnable) Core.settings.put("mod-" + loaded.name + "-enabled", true);
|
||||
sortMods();
|
||||
//try to load the mod's icon so it displays on import
|
||||
@@ -953,6 +954,7 @@ public class Mods implements Loadable{
|
||||
public void setEnabled(LoadedMod mod, boolean enabled){
|
||||
if(mod.enabled() != enabled){
|
||||
Core.settings.put("mod-" + mod.name + "-enabled", enabled);
|
||||
Core.settings.put("mod-" + mod.name + "-failed", false);
|
||||
requiresReload = true;
|
||||
mod.state = enabled ? ModState.enabled : ModState.disabled;
|
||||
mods.each(this::updateDependencies);
|
||||
@@ -1200,7 +1202,9 @@ public class Mods implements Loadable{
|
||||
|
||||
//skip mod loading if it failed
|
||||
if(skipModLoading()){
|
||||
boolean wasEnabled = Core.settings.getBool("mod-" + baseName + "-enabled", true);
|
||||
Core.settings.put("mod-" + baseName + "-enabled", false);
|
||||
Core.settings.put("mod-" + baseName + "-failed", wasEnabled);
|
||||
}
|
||||
|
||||
if(!headless && Core.settings.getBool("mod-" + baseName + "-enabled", true)){
|
||||
@@ -1275,6 +1279,10 @@ public class Mods implements Loadable{
|
||||
return Core.settings.getBool("mod-" + name + "-enabled", true);
|
||||
}
|
||||
|
||||
public boolean failed(){
|
||||
return Core.settings.getBool("mod-" + name + "-failed", false);
|
||||
}
|
||||
|
||||
public boolean hasUnmetDependencies(){
|
||||
return !missingDependencies.isEmpty();
|
||||
}
|
||||
|
||||
@@ -45,6 +45,16 @@ public class ModsDialog extends BaseDialog{
|
||||
addCloseButton();
|
||||
|
||||
buttons.button("@mods.guide", Icon.link, () -> Core.app.openURI(modGuideURL)).size(210, 64f);
|
||||
|
||||
if(mods.list().contains(m -> m.failed())){
|
||||
buttons.button("@mods.restore", Icon.power, () -> {
|
||||
Seq<LoadedMod> skipped = new Seq<>();
|
||||
skipped.selectFrom(mods.list(), LoadedMod::failed);
|
||||
|
||||
skipped.each(m -> mods.setEnabled(m, true));
|
||||
setup();
|
||||
});
|
||||
}
|
||||
|
||||
if(!mobile){
|
||||
buttons.button("@mods.openfolder", Icon.link, () -> Core.app.openFolder(modDirectory.absolutePath()));
|
||||
|
||||
Reference in New Issue
Block a user