66
77import java .io .*;
88import java .util .concurrent .Callable ;
9- import java .util .List ;
109
1110/**
1211 * Main entry point for mojang2tiny. Can be used as a CLI (via main method)
2120public class Main implements Callable <Integer > {
2221 @ Option (names = {"-i" , "--intermediary" }, required = true , description = {"Intermediary mapping file" })
2322 private File intermediaryFile ;
24- @ Option (names = {"-m" , "--mappings" }, required = true , description = {"Mojang mapping files" }, arity = "1..*" )
25- private List < File > mappingFiles ;
23+ @ Option (names = {"-m" , "--mappings" }, required = true , description = {"Mojang mapping file" } )
24+ private File mappingFile ;
2625 @ Option (names = {"-o" , "--output-dir" }, required = true , description = {"Output directory" })
2726 private File outputDir ;
27+ @ Option (names = {"-t" , "--tiny-version" }, description = {"Tiny format version (v1 or v2), default: v2" })
28+ private String tinyVersion = "v2" ;
2829
2930 public Main () {}
3031
3132 @ Override
3233 public Integer call () throws Exception {
33- System .out .println ("Loading intermediary" );
34+ System .out .println ("[Mojang2Tiny] Loading intermediary" );
3435 Intermediary intermediary ;
3536 try (InputStream in = new FileInputStream (intermediaryFile )) {
3637 intermediary = Intermediary .load (in );
3738 }
3839 MojangMap mojang = MojangMap .empty ();
39- for (File mappingFile : mappingFiles ) {
40- System .out .println ("Loading mojang: " + mappingFile .getName ());
41- try (InputStream in = new FileInputStream (mappingFile )) {
42- MojangMap m = MojangMap .load (in );
43- mojang .combine (m );
44- }
40+ System .out .println ("[Mojang2Tiny] Loading mojang: " + mappingFile .getName ());
41+ try (InputStream in = new FileInputStream (mappingFile )) {
42+ MojangMap m = MojangMap .load (in );
43+ mojang .combine (m );
4544 }
46- System .out .println ("Writing mapping files" );
47- MappingOutput .write (outputDir , intermediary , mojang );
45+ System .out .println ("[Mojang2Tiny] Writing mapping file" );
46+ if (!outputDir .exists ()) {
47+ outputDir .mkdirs ();
48+ }
49+ File outFile = new File (outputDir , "mappings.tiny" );
50+ MappingOutput .write (outFile , intermediary , mojang , tinyVersion );
4851 return 0 ;
4952 }
5053
@@ -64,18 +67,17 @@ public static void main(String[] args) {
6467 * @param outputDir Output directory for Tiny mappings
6568 * @throws Exception if an error occurs during conversion
6669 */
67- public static void convert (File intermediaryFile , List < File > mappingFiles , File outputDir ) throws Exception {
70+ public static void convert (File intermediaryFile , File mappingFile , File outputDir , String tinyVersion ) throws Exception {
6871 Intermediary intermediary ;
6972 try (InputStream in = new FileInputStream (intermediaryFile )) {
7073 intermediary = Intermediary .load (in );
7174 }
7275 MojangMap mojang = MojangMap .empty ();
73- for (File mappingFile : mappingFiles ) {
74- try (InputStream in = new FileInputStream (mappingFile )) {
75- MojangMap m = MojangMap .load (in );
76- mojang .combine (m );
77- }
76+ try (InputStream in = new FileInputStream (mappingFile )) {
77+ MojangMap m = MojangMap .load (in );
78+ mojang .combine (m );
7879 }
79- MappingOutput .write (outputDir , intermediary , mojang );
80+ File outFile = new File (outputDir , "mappings.tiny" );
81+ MappingOutput .write (outFile , intermediary , mojang , tinyVersion );
8082 }
8183}
0 commit comments