|
35 | 35 | import java.nio.file.NoSuchFileException;
|
36 | 36 | import java.nio.file.Path;
|
37 | 37 | import java.nio.file.StandardCopyOption;
|
| 38 | +import java.nio.file.StandardOpenOption; |
38 | 39 | import java.util.ArrayList;
|
39 | 40 | import java.util.Arrays;
|
40 | 41 | import java.util.HashMap;
|
41 | 42 | import java.util.List;
|
42 | 43 | import java.util.Map;
|
43 | 44 | import java.util.Objects;
|
44 | 45 |
|
| 46 | +import org.apache.tools.ant.util.StringUtils; |
45 | 47 | import com.google.common.base.Stopwatch;
|
46 | 48 | import com.google.gson.JsonObject;
|
47 | 49 | import dev.architectury.loom.util.MappingOption;
|
48 |
| -import org.apache.tools.ant.util.StringUtils; |
49 | 50 | import org.gradle.api.Project;
|
50 | 51 | import org.gradle.api.artifacts.Configuration;
|
51 | 52 | import org.jetbrains.annotations.Nullable;
|
@@ -211,28 +212,20 @@ public void setupPost(Project project) throws IOException {
|
211 | 212 | // Generate the Mojmap-merged mappings if needed.
|
212 | 213 | // Note that this needs to happen before manipulateMappings for FieldMigratedMappingConfiguration.
|
213 | 214 | if (Files.notExists(tinyMappingsWithMojang) || extension.refreshDeps()) {
|
214 |
| - final Stopwatch stopwatch = Stopwatch.createStarted(); |
215 |
| - final MappingContext context = new GradleMappingContext(project, "tmp-neoforge"); |
216 |
| - |
217 |
| - try (Tiny2FileWriter writer = new Tiny2FileWriter(Files.newBufferedWriter(tinyMappingsWithMojang), false)) { |
218 |
| - ForgeMappingsMerger.mergeMojang(context, tinyMappings, null, true).accept(writer); |
219 |
| - } |
220 |
| - |
221 |
| - project.getLogger().info(":merged mojang mappings in {}", stopwatch.stop()); |
| 215 | + mergeMojang(project, tinyMappings, tinyMappingsWithMojang); |
222 | 216 | }
|
223 | 217 | }
|
224 | 218 |
|
225 | 219 | if (extension.shouldGenerateSrgTiny()) {
|
226 | 220 | if (Files.notExists(tinyMappingsWithSrg) || extension.refreshDeps()) {
|
227 |
| - // Merge tiny mappings with srg |
228 |
| - Stopwatch stopwatch = Stopwatch.createStarted(); |
229 |
| - ForgeMappingsMerger.ExtraMappings extraMappings = ForgeMappingsMerger.ExtraMappings.ofMojmapTsrg(getMojmapSrgFileIfPossible(project)); |
230 |
| - |
231 |
| - try (Tiny2FileWriter writer = new Tiny2FileWriter(Files.newBufferedWriter(tinyMappingsWithSrg), false)) { |
232 |
| - ForgeMappingsMerger.mergeSrg(getRawSrgFile(project), tinyMappings, extraMappings, true).accept(writer); |
| 221 | + if (extension.isForge() && extension.getForgeProvider().usesMojangAtRuntime()) { |
| 222 | + Path tmp = Files.createTempFile("mappings", ".tiny"); |
| 223 | + mergeMojang(project, tinyMappings, tmp); |
| 224 | + mergeSrg(project, tmp, tinyMappingsWithSrg); |
| 225 | + Files.deleteIfExists(tmp); |
| 226 | + } else { |
| 227 | + mergeSrg(project, tinyMappings, tinyMappingsWithSrg); |
233 | 228 | }
|
234 |
| - |
235 |
| - project.getLogger().info(":merged srg mappings in " + stopwatch.stop()); |
236 | 229 | }
|
237 | 230 | }
|
238 | 231 |
|
@@ -288,6 +281,28 @@ public static Path getMojmapSrgFileIfPossible(Project project) {
|
288 | 281 | }
|
289 | 282 | }
|
290 | 283 |
|
| 284 | + private static void mergeMojang(Project project, Path source, Path target) throws IOException { |
| 285 | + final Stopwatch stopwatch = Stopwatch.createStarted(); |
| 286 | + final MappingContext context = new GradleMappingContext(project, "tmp-mojang"); |
| 287 | + |
| 288 | + try (Tiny2FileWriter writer = new Tiny2FileWriter(Files.newBufferedWriter(target, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING), false)) { |
| 289 | + ForgeMappingsMerger.mergeMojang(context, source, null, true).accept(writer); |
| 290 | + } |
| 291 | + |
| 292 | + project.getLogger().info(":merged mojang mappings in {}", stopwatch.stop()); |
| 293 | + } |
| 294 | + |
| 295 | + private static void mergeSrg(Project project, Path source, Path target) throws IOException { |
| 296 | + Stopwatch stopwatch = Stopwatch.createStarted(); |
| 297 | + ForgeMappingsMerger.ExtraMappings extraMappings = ForgeMappingsMerger.ExtraMappings.ofMojmapTsrg(getMojmapSrgFileIfPossible(project)); |
| 298 | + |
| 299 | + try (Tiny2FileWriter writer = new Tiny2FileWriter(Files.newBufferedWriter(target, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING), false)) { |
| 300 | + ForgeMappingsMerger.mergeSrg(getRawSrgFile(project), source, extraMappings, true).accept(writer); |
| 301 | + } |
| 302 | + |
| 303 | + project.getLogger().info(":merged srg mappings in " + stopwatch.stop()); |
| 304 | + } |
| 305 | + |
291 | 306 | protected void manipulateMappings(Project project, Path mappingsJar) throws IOException {
|
292 | 307 | }
|
293 | 308 |
|
|
0 commit comments