Commit 5cdae378f44c34cbd6283d0ae33c5a4eb1bdd816

Authored by Mumfrey
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
.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(',');