Skip to content

Commit 5d87df9

Browse files
committed
Update README, version, and error messages; refactor mapping output logic
1 parent e341e9e commit 5d87df9

9 files changed

Lines changed: 116 additions & 147 deletions

File tree

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"java.configuration.updateBuildConfiguration": "interactive"
3+
}

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,21 +32,21 @@ You can either **download the latest jar from the [Releases tab](https://github.
3232
After building (or downloading), you can run the tool from the command line:
3333

3434
```sh
35-
java -jar build/libs/mojang2tiny-1.0.0.jar \
35+
java -jar build/libs/mojang2tiny-1.1.0.jar \
3636
-i <intermediary.tiny> \
37-
-m <mappings1.txt> [<mappings2.txt> ...] \
37+
-m <mappings.txt> \
3838
-o <output-directory>
3939
```
4040

4141
#### Arguments
4242
- `-i`, `--intermediary` — Path to the intermediary mapping file (Tiny format)
43-
- `-m`, `--mappings`One or more Mojang mapping files to convert
44-
- `-o`, `--output-dir` — Output directory for the generated Tiny files
43+
- `-m`, `--mappings` — Mojang mapping file to convert
44+
- `-o`, `--output-dir` — Output directory for the generated Tiny file
4545

4646
### Example (CLI)
4747

4848
```sh
49-
java -jar build/libs/mojang2tiny-1.0.0.jar \
49+
java -jar build/libs/mojang2tiny-1.1.0.jar \
5050
-i intermediary.tiny \
5151
-m mojang-mappings.txt \
5252
-o output/
@@ -64,9 +64,9 @@ import java.util.Arrays;
6464
public class Example {
6565
public static void main(String[] args) throws Exception {
6666
File intermediary = new File("intermediary.tiny");
67-
File mapping1 = new File("mojang-mappings.txt");
67+
File mappings = new File("mojang-mappings.txt");
6868
File outputDir = new File("output");
69-
Main.convert(intermediary, Arrays.asList(mapping1), outputDir);
69+
Main.convert(intermediary, mappings, outputDir);
7070
}
7171
}
7272
```

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
}
55

66
group = 'com.threadmc'
7-
version = '1.0.0'
7+
version = '1.1.0'
88

99
repositories {
1010
mavenCentral()

src/main/java/com/threadmc/mojang2tiny/Intermediary.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static Intermediary load(InputStream in) throws IOException {
3434
entries.add(new IntermediaryEntry.MethodEntry(className, sig, split[3], split[4]));
3535
break;
3636
default:
37-
throw new IOException("Syntax error at: " + line);
37+
throw new IOException("[Mojang2Tiny] Syntax error at: " + line);
3838
}
3939
}
4040
return new Intermediary(entries);

src/main/java/com/threadmc/mojang2tiny/JvmSignature.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ public static JvmSignature from(List<JvmType> params, JvmType result) {
2020

2121
public static JvmSignature fromJvmSig(String s) {
2222
StringBuilder sb = new StringBuilder(s);
23-
if (sb.charAt(0) != '(') throw new IllegalArgumentException("Expected '('");
23+
if (sb.charAt(0) != '(') throw new IllegalArgumentException("[Mojang2Tiny] Expected '('");
2424
sb.deleteCharAt(0);
2525
List<JvmType> params = new ArrayList<>();
2626
while (sb.charAt(0) != ')') {
2727
params.add(JvmType.read(sb));
2828
}
2929
sb.deleteCharAt(0);
3030
JvmType result = JvmType.read(sb);
31-
if (sb.length() != 0) throw new IllegalArgumentException("Expected end of signature");
31+
if (sb.length() != 0) throw new IllegalArgumentException("[Mojang2Tiny] Expected end of signature");
3232
return new JvmSignature(params, result);
3333
}
3434

src/main/java/com/threadmc/mojang2tiny/JvmType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static JvmType read(StringBuilder s) {
4141
return new ClassType(className);
4242
}
4343
case '[': return new ArrayType(read(s));
44-
default: throw new IllegalArgumentException("Malformed JVM type: " + first);
44+
default: throw new IllegalArgumentException("[Mojang2Tiny] Malformed JVM type: " + first);
4545
}
4646
}
4747

src/main/java/com/threadmc/mojang2tiny/Main.java

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import java.io.*;
88
import 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)
@@ -21,30 +20,34 @@
2120
public 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

Comments
 (0)