Commit 82c837c77ba9b541e9922b7aed6c500f70c83813

Authored by Mumfrey
1 parent 647e49fd

Fix visual bug with disabled containers when using --mods, fixes #28

src/client/java/com/mumfrey/liteloader/client/gui/modlist/ModList.java
... ... @@ -15,6 +15,7 @@ import org.lwjgl.input.Keyboard;
15 15 import com.mumfrey.liteloader.LiteMod;
16 16 import com.mumfrey.liteloader.api.ModInfoDecorator;
17 17 import com.mumfrey.liteloader.client.gui.GuiLiteLoaderPanel;
  18 +import com.mumfrey.liteloader.core.EnabledModsList.Enabled;
18 19 import com.mumfrey.liteloader.core.LiteLoaderMods;
19 20 import com.mumfrey.liteloader.core.ModInfo;
20 21 import com.mumfrey.liteloader.interfaces.Loadable;
... ... @@ -75,8 +76,11 @@ public class ModList
75 76 // Disabled mods
76 77 for (ModInfo<?> disabledMod : mods.getDisabledMods())
77 78 {
78   - ModListEntry modListEntry = new ModListEntry(this, mods, environment, minecraft.fontRenderer, brandColour, decorators, disabledMod);
79   - sortedMods.put(modListEntry.getKey(), modListEntry);
  79 + if (environment.getEnabledModsList().getEnabled(environment.getProfile(), disabledMod.getIdentifier()) == Enabled.DISABLED)
  80 + {
  81 + ModListEntry modListEntry = new ModListEntry(this, mods, environment, minecraft.fontRenderer, brandColour, decorators, disabledMod);
  82 + sortedMods.put(modListEntry.getKey(), modListEntry);
  83 + }
80 84 }
81 85  
82 86 // Show bad containers if no other containers are found, should help users realise they have the wrong mod version!
... ...
src/main/java/com/mumfrey/liteloader/core/EnabledModsList.java
... ... @@ -24,6 +24,34 @@ import com.google.gson.GsonBuilder;
24 24 */
25 25 public final class EnabledModsList
26 26 {
  27 + /**
  28 + * Tristate for enablement which allows us to determine whether mod is
  29 + * forcibly disabled by user or passively disabled by mod name filter
  30 + */
  31 + public enum Enabled
  32 + {
  33 + ENABLED(true),
  34 + DISABLED(false),
  35 + FILTERED(false);
  36 +
  37 + private final boolean value;
  38 +
  39 + private Enabled(boolean value)
  40 + {
  41 + this.value = value;
  42 + }
  43 +
  44 + public boolean booleanValue()
  45 + {
  46 + return this.value;
  47 + }
  48 +
  49 + public static Enabled of(Boolean value)
  50 + {
  51 + return value == null ? Enabled.FILTERED : (value ? Enabled.ENABLED : Enabled.DISABLED);
  52 + }
  53 + }
  54 +
27 55 @SuppressWarnings("unused")
28 56 private static final transient long serialVersionUID = -6449451105617763769L;
29 57  
... ... @@ -45,7 +73,7 @@ public final class EnabledModsList
45 73 * the mods list because the command line is supposed to be an override
46 74 * rather than a new mask. These two values provide this behaviour.
47 75 */
48   - private transient Boolean defaultEnabledValue = Boolean.TRUE;
  76 + private transient Enabled defaultEnabledValue = Enabled.ENABLED;
49 77 private transient boolean allowSave = true;
50 78  
51 79 /**
... ... @@ -59,22 +87,27 @@ public final class EnabledModsList
59 87 }
60 88  
61 89 /**
62   - * Check whether a particular mod is enabled
  90 + * Check whether a particular container is enabled
63 91 *
64 92 * @param profileName
65 93 * @param identifier
66 94 */
67 95 public boolean isEnabled(String profileName, String identifier)
68 96 {
  97 + return this.getEnabled(profileName, identifier).booleanValue();
  98 + }
  99 +
  100 + public Enabled getEnabled(String profileName, String identifier)
  101 + {
69 102 Map<String, Boolean> profile = this.getProfile(profileName);
70 103 identifier = identifier.toLowerCase().trim();
71 104  
72   - if (!profile.containsKey(identifier))
  105 + if (!profile.containsKey(identifier) && this.defaultEnabledValue != Enabled.FILTERED)
73 106 {
74   - profile.put(identifier, this.defaultEnabledValue);
  107 + profile.put(identifier, this.defaultEnabledValue.booleanValue());
75 108 }
76 109  
77   - return profile.get(identifier);
  110 + return Enabled.of(profile.get(identifier));
78 111 }
79 112  
80 113 /**
... ... @@ -87,7 +120,7 @@ public final class EnabledModsList
87 120 public void setEnabled(String profileName, String identifier, boolean enabled)
88 121 {
89 122 Map<String, Boolean> profile = this.getProfile(profileName);
90   - profile.put(identifier.toLowerCase().trim(), Boolean.valueOf(enabled));
  123 + profile.put(identifier.toLowerCase().trim(), enabled ? Boolean.TRUE : Boolean.FALSE);
91 124  
92 125 this.allowSave = true;
93 126 }
... ... @@ -106,12 +139,9 @@ public final class EnabledModsList
106 139 {
107 140 if (modNameFilter != null)
108 141 {
109   - for (String modName : profile.keySet())
110   - {
111   - profile.put(modName, Boolean.FALSE);
112   - }
  142 + profile.clear();
113 143  
114   - this.defaultEnabledValue = Boolean.FALSE;
  144 + this.defaultEnabledValue = Enabled.FILTERED;
115 145 this.allowSave = false;
116 146  
117 147 for (String filterEntry : modNameFilter)
... ... @@ -122,8 +152,8 @@ public final class EnabledModsList
122 152 }
123 153 catch (Exception ex)
124 154 {
125   - this.defaultEnabledValue = Boolean.TRUE;
126   - this.allowSave = true;
  155 + this.defaultEnabledValue = Enabled.ENABLED;
  156 +// this.allowSave = true;
127 157 }
128 158 }
129 159  
... ... @@ -135,7 +165,7 @@ public final class EnabledModsList
135 165 private Map<String, Boolean> getProfile(String profileName)
136 166 {
137 167 if (profileName == null) profileName = "default";
138   - if (this.mods == null) this.mods = new TreeMap<String, TreeMap<String,Boolean>>();
  168 + if (this.mods == null) this.mods = new TreeMap<String, TreeMap<String, Boolean>>();
139 169  
140 170 if (!this.mods.containsKey(profileName))
141 171 {
... ...