1
1
package org .kettingpowered .launcher .info ;
2
2
3
+ import org .jetbrains .annotations .Nullable ;
3
4
import org .kettingpowered .ketting .internal .KettingFiles ;
4
5
import org .kettingpowered .ketting .internal .MajorMinorPatchVersion ;
5
6
import org .kettingpowered .ketting .internal .Tuple ;
6
7
import org .kettingpowered .launcher .ParsedArgs ;
7
8
import org .kettingpowered .launcher .utils .FileUtils ;
8
9
9
- import java .io .BufferedReader ;
10
- import java .io .File ;
11
- import java .io .IOException ;
12
- import java .io .InputStream ;
13
- import java .io .InputStreamReader ;
10
+ import java .io .*;
14
11
import java .util .ArrayList ;
15
12
import java .util .Arrays ;
16
13
import java .util .Comparator ;
@@ -28,6 +25,21 @@ public class MCVersion {
28
25
private static String mc ;
29
26
public static String getMc (ParsedArgs args ){
30
27
if (mc != null ) return mc ;
28
+
29
+ //Check for a mcversion.txt file, this has priority
30
+ {
31
+ File mcversion = new File (KettingFiles .MAIN_FOLDER_FILE , "mcversion.txt" );
32
+ if (mcversion .exists ()){
33
+ try {
34
+ String version = readFromIS (new FileInputStream (mcversion ));
35
+ if (version != null ) {
36
+ mc = version ;
37
+ return mc ;
38
+ }
39
+ } catch (FileNotFoundException ignored ) {} //File is known to exist, so this should never happen.
40
+ }
41
+ }
42
+
31
43
//If you want to manually specify the version
32
44
//via args
33
45
if (args .minecraftVersion () != null ) {
@@ -55,12 +67,10 @@ public static String getMc(ParsedArgs args){
55
67
//Get the last saved mc version
56
68
{
57
69
final InputStream mcv = MCVersion .class .getResourceAsStream ("/minecraftVersion" );
58
- if (mcv != null ){
59
- try (BufferedReader reader = new BufferedReader (new InputStreamReader (mcv ))){
60
- mc = reader .readLine ().trim ();
61
- return mc ;
62
- } catch (IOException ignored ) {
63
- }
70
+ String version = readFromIS (mcv );
71
+ if (version != null ) {
72
+ mc = version ;
73
+ return mc ;
64
74
}
65
75
}
66
76
//Get the version via mcp mappings, since they are not wiped.
@@ -90,4 +100,13 @@ public static String getMc(ParsedArgs args){
90
100
System .exit (1 );
91
101
throw new RuntimeException ();//bogus, but has to be there to stop the compiler from complaining, that there is no return value here.
92
102
}
103
+
104
+ private static String readFromIS (@ Nullable InputStream versionStream ) {
105
+ if (versionStream == null ) return null ;
106
+ try (BufferedReader reader = new BufferedReader (new InputStreamReader (versionStream ))){
107
+ return reader .readLine ().trim ();
108
+ } catch (IOException ignored ) {
109
+ return null ;
110
+ }
111
+ }
93
112
}
0 commit comments