Commit 5cdae378f44c34cbd6283d0ae33c5a4eb1bdd816
1 parent
b36a1152
LiteLoader 1.6.4 - fixed NPE when no --version is specified, moved debug to alte…
…rnate src tree to avoid having to exclude it from all downstream build scripts
Showing
6 changed files
with
62 additions
and
2 deletions
.classpath
@@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
2 | <classpath> | 2 | <classpath> |
3 | <classpathentry kind="src" path="java"/> | 3 | <classpathentry kind="src" path="java"/> |
4 | <classpathentry kind="src" path="res"/> | 4 | <classpathentry kind="src" path="res"/> |
5 | + <classpathentry kind="src" path="debug"/> | ||
5 | <classpathentry combineaccessrules="false" kind="src" path="/Client"/> | 6 | <classpathentry combineaccessrules="false" kind="src" path="/Client"/> |
6 | <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> | 7 | <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> |
7 | <classpathentry kind="lib" path="/Client/jars/libraries/org/lwjgl/lwjgl/lwjgl/2.9.0/lwjgl-2.9.0.jar"/> | 8 | <classpathentry kind="lib" path="/Client/jars/libraries/org/lwjgl/lwjgl/lwjgl/2.9.0/lwjgl-2.9.0.jar"/> |
java/com/mumfrey/liteloader/debug/AuthenticationRequest.java renamed to debug/com/mumfrey/liteloader/debug/AuthenticationRequest.java
java/com/mumfrey/liteloader/debug/Start.java renamed to debug/com/mumfrey/liteloader/debug/Start.java
res/minecraft.key renamed to debug/minecraft.key
No preview for this file type
java/com/mumfrey/liteloader/core/EnabledModsList.java
@@ -11,20 +11,47 @@ import java.util.TreeMap; | @@ -11,20 +11,47 @@ import java.util.TreeMap; | ||
11 | import com.google.gson.Gson; | 11 | import com.google.gson.Gson; |
12 | import com.google.gson.GsonBuilder; | 12 | import com.google.gson.GsonBuilder; |
13 | 13 | ||
14 | +/** | ||
15 | + * Serialisable (via GSON) object which stores list of enabled/disabled mods for each profile | ||
16 | + * | ||
17 | + * @author Adam Mummery-Smith | ||
18 | + */ | ||
14 | public class EnabledModsList | 19 | public class EnabledModsList |
15 | { | 20 | { |
21 | + @SuppressWarnings("unused") | ||
22 | + private static transient final long serialVersionUID = -6449451105617763769L; | ||
23 | + | ||
24 | + /** | ||
25 | + * Gson object for serialisation/deserialisation | ||
26 | + */ | ||
16 | private static transient Gson gson = new GsonBuilder().setPrettyPrinting().create(); | 27 | private static transient Gson gson = new GsonBuilder().setPrettyPrinting().create(); |
17 | 28 | ||
29 | + /** | ||
30 | + * This is the node which gets serialised | ||
31 | + */ | ||
18 | private TreeMap<String, TreeMap<String, Boolean>> mods; | 32 | private TreeMap<String, TreeMap<String, Boolean>> mods; |
19 | 33 | ||
34 | + /** | ||
35 | + * By default, when we discover a mod which is NOT in the list for the current profile, we will ENABLE the | ||
36 | + * mod and add it to the list. However, when we receive a list of mods on the command line, we instead want | ||
37 | + * to DISABLE any additional unlisted mods, we also don't want to save the mods list because the command line | ||
38 | + * is supposed to be an override rather than a new mask. These two values provide this behaviour. | ||
39 | + */ | ||
20 | private transient Boolean defaultEnabledValue = Boolean.TRUE; | 40 | private transient Boolean defaultEnabledValue = Boolean.TRUE; |
21 | - | ||
22 | private transient boolean allowSave = true; | 41 | private transient boolean allowSave = true; |
23 | 42 | ||
24 | private EnabledModsList() | 43 | private EnabledModsList() |
25 | { | 44 | { |
45 | + // Private because we are always instanced by the static createFrom() method below | ||
26 | } | 46 | } |
27 | 47 | ||
48 | + /** | ||
49 | + * Check whether a particular mod is enabled | ||
50 | + * | ||
51 | + * @param profileName | ||
52 | + * @param name | ||
53 | + * @return | ||
54 | + */ | ||
28 | public boolean isEnabled(String profileName, String name) | 55 | public boolean isEnabled(String profileName, String name) |
29 | { | 56 | { |
30 | Map<String, Boolean> profile = this.getProfile(profileName); | 57 | Map<String, Boolean> profile = this.getProfile(profileName); |
@@ -38,6 +65,13 @@ public class EnabledModsList | @@ -38,6 +65,13 @@ public class EnabledModsList | ||
38 | return profile.get(name); | 65 | return profile.get(name); |
39 | } | 66 | } |
40 | 67 | ||
68 | + /** | ||
69 | + * Set the enablement state of a mod in the specified profile | ||
70 | + * | ||
71 | + * @param profileName | ||
72 | + * @param name | ||
73 | + * @param enabled | ||
74 | + */ | ||
41 | public void setEnabled(String profileName, String name, boolean enabled) | 75 | public void setEnabled(String profileName, String name, boolean enabled) |
42 | { | 76 | { |
43 | Map<String, Boolean> profile = this.getProfile(profileName); | 77 | Map<String, Boolean> profile = this.getProfile(profileName); |
@@ -46,6 +80,12 @@ public class EnabledModsList | @@ -46,6 +80,12 @@ public class EnabledModsList | ||
46 | this.allowSave = true; | 80 | this.allowSave = true; |
47 | } | 81 | } |
48 | 82 | ||
83 | + /** | ||
84 | + * Reads the mods list passed in on the command line | ||
85 | + * | ||
86 | + * @param profileName | ||
87 | + * @param modNameFilter | ||
88 | + */ | ||
49 | public void processModsList(String profileName, List<String> modNameFilter) | 89 | public void processModsList(String profileName, List<String> modNameFilter) |
50 | { | 90 | { |
51 | Map<String, Boolean> profile = this.getProfile(profileName); | 91 | Map<String, Boolean> profile = this.getProfile(profileName); |
@@ -75,8 +115,15 @@ public class EnabledModsList | @@ -75,8 +115,15 @@ public class EnabledModsList | ||
75 | } | 115 | } |
76 | } | 116 | } |
77 | 117 | ||
118 | + /** | ||
119 | + * Internal method which returns the map for the specified profile | ||
120 | + * | ||
121 | + * @param profileName | ||
122 | + * @return | ||
123 | + */ | ||
78 | private Map<String, Boolean> getProfile(String profileName) | 124 | private Map<String, Boolean> getProfile(String profileName) |
79 | { | 125 | { |
126 | + if (profileName == null) profileName = "default"; | ||
80 | if (this.mods == null) this.mods = new TreeMap<String, TreeMap<String,Boolean>>(); | 127 | if (this.mods == null) this.mods = new TreeMap<String, TreeMap<String,Boolean>>(); |
81 | 128 | ||
82 | if (!this.mods.containsKey(profileName)) | 129 | if (!this.mods.containsKey(profileName)) |
@@ -87,6 +134,13 @@ public class EnabledModsList | @@ -87,6 +134,13 @@ public class EnabledModsList | ||
87 | return this.mods.get(profileName); | 134 | return this.mods.get(profileName); |
88 | } | 135 | } |
89 | 136 | ||
137 | + /** | ||
138 | + * Factory method which tries to deserialise the enablement list from the file or if failing creates | ||
139 | + * and returns a new instance. | ||
140 | + * | ||
141 | + * @param file | ||
142 | + * @return | ||
143 | + */ | ||
90 | public static EnabledModsList createFrom(File file) | 144 | public static EnabledModsList createFrom(File file) |
91 | { | 145 | { |
92 | if (file.exists()) | 146 | if (file.exists()) |
@@ -120,6 +174,11 @@ public class EnabledModsList | @@ -120,6 +174,11 @@ public class EnabledModsList | ||
120 | return new EnabledModsList(); | 174 | return new EnabledModsList(); |
121 | } | 175 | } |
122 | 176 | ||
177 | + /** | ||
178 | + * Save the enablement list to the specified file | ||
179 | + * | ||
180 | + * @param file | ||
181 | + */ | ||
123 | public void saveTo(File file) | 182 | public void saveTo(File file) |
124 | { | 183 | { |
125 | if (!this.allowSave) return; | 184 | if (!this.allowSave) return; |
java/com/mumfrey/liteloader/launch/LiteLoaderTweaker.java
@@ -48,7 +48,7 @@ public class LiteLoaderTweaker implements ITweaker | @@ -48,7 +48,7 @@ public class LiteLoaderTweaker implements ITweaker | ||
48 | 48 | ||
49 | LiteLoaderTransformer.gameDirectory = gameDirectory; | 49 | LiteLoaderTransformer.gameDirectory = gameDirectory; |
50 | LiteLoaderTransformer.assetsDirectory = assetsDirectory; | 50 | LiteLoaderTransformer.assetsDirectory = assetsDirectory; |
51 | - LiteLoaderTransformer.profile = profile; | 51 | + LiteLoaderTransformer.profile = profile != null ? profile : VERSION; |
52 | 52 | ||
53 | OptionParser optionParser = new OptionParser(); | 53 | OptionParser optionParser = new OptionParser(); |
54 | this.modsOption = optionParser.accepts("mods", "Comma-separated list of mods to load").withRequiredArg().ofType(String.class).withValuesSeparatedBy(','); | 54 | this.modsOption = optionParser.accepts("mods", "Comma-separated list of mods to load").withRequiredArg().ofType(String.class).withValuesSeparatedBy(','); |