|
26 | 26 | import net.minecraftforge.gradle.common.util.Utils;
|
27 | 27 | import net.minecraftforge.gradle.common.util.VersionJson;
|
28 | 28 | import net.minecraftforge.gradle.mcp.MCPRepo;
|
| 29 | +import net.minecraftforge.gradle.mcp.task.DownloadMCPMappingsTask; |
| 30 | +import net.minecraftforge.gradle.common.task.TaskApplyMappings; |
| 31 | +import net.minecraftforge.gradle.common.task.TaskApplyRangeMap; |
| 32 | +import net.minecraftforge.gradle.common.task.TaskExtractExistingFiles; |
| 33 | +import net.minecraftforge.gradle.common.task.TaskExtractRangeMap; |
29 | 34 | import net.minecraftforge.gradle.userdev.tasks.GenerateSRG;
|
30 | 35 | import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace;
|
31 | 36 | import net.minecraftforge.gradle.userdev.util.DeobfuscatingRepo;
|
|
40 | 45 | import org.gradle.api.plugins.JavaPluginConvention;
|
41 | 46 | import org.gradle.api.tasks.TaskProvider;
|
42 | 47 | import org.gradle.api.tasks.bundling.Jar;
|
| 48 | +import org.gradle.api.tasks.compile.JavaCompile; |
43 | 49 |
|
44 | 50 | import javax.annotation.Nonnull;
|
45 | 51 | import java.io.File;
|
46 | 52 | import java.io.IOException;
|
47 | 53 | import java.util.ArrayList;
|
| 54 | +import java.util.Set; |
48 | 55 | import java.util.concurrent.TimeUnit;
|
49 | 56 |
|
50 | 57 | public class UserDevPlugin implements Plugin<Project> {
|
@@ -159,7 +166,65 @@ public RenameJarInPlace create(String jarName) {
|
159 | 166 | task.setMeta(downloadMCMeta.get().getOutput());
|
160 | 167 | });
|
161 | 168 |
|
| 169 | + if (project.hasProperty("UPDATE_MAPPINGS")) { |
| 170 | + String version = (String)project.property("UPDATE_MAPPINGS"); |
| 171 | + String channel = project.hasProperty("UPDATE_MAPPINGS_CHANNEL") ? (String)project.property("UPDATE_MAPPINGS_CHANNEL") : "snapshot"; |
| 172 | + |
| 173 | + logger.lifecycle("This process uses Srg2Source for java source file renaming. Please forward relevant bug reports to https://github.com/MinecraftForge/Srg2Source/issues."); |
| 174 | + if ("official".equals(channel)) { |
| 175 | + String warning = "WARNING: This project will be updated to use the official obfuscation mappings provided by Mojang. " + Utils.OFFICIAL_MAPPING_USAGE; |
| 176 | + logger.warn(warning); |
| 177 | + } |
| 178 | + |
| 179 | + JavaCompile javaCompile = (JavaCompile) project.getTasks().getByName("compileJava"); |
| 180 | + JavaPluginConvention javaConv = (JavaPluginConvention) project.getConvention().getPlugins().get("java"); |
| 181 | + Set<File> srcDirs = javaConv.getSourceSets().getByName("main").getJava().getSrcDirs(); |
| 182 | + |
| 183 | + TaskProvider<DownloadMCPMappingsTask> dlMappingsNew = project.getTasks().register("downloadMappingsNew", DownloadMCPMappingsTask.class); |
| 184 | + TaskProvider<TaskExtractRangeMap> extractRangeConfig = project.getTasks().register("extractRangeMap", TaskExtractRangeMap.class); |
| 185 | + TaskProvider<TaskApplyRangeMap> applyRangeConfig = project.getTasks().register("applyRangeMap", TaskApplyRangeMap.class); |
| 186 | + TaskProvider<TaskApplyMappings> toMCPNew = project.getTasks().register("srg2mcpNew", TaskApplyMappings.class); |
| 187 | + TaskProvider<TaskExtractExistingFiles> extractMappedNew = project.getTasks().register("extractMappedNew", TaskExtractExistingFiles.class); |
| 188 | + |
| 189 | + extractRangeConfig.configure(task -> { |
| 190 | + task.addSources(srcDirs); |
| 191 | + task.addDependencies(javaCompile.getClasspath()); |
| 192 | + }); |
| 193 | + |
| 194 | + applyRangeConfig.configure(task -> { |
| 195 | + task.dependsOn(extractRangeConfig, createMcpToSrg); |
| 196 | + task.setRangeMap(extractRangeConfig.get().getOutput()); |
| 197 | + task.setSrgFiles(createMcpToSrg.get().getOutput()); |
| 198 | + task.setSources(srcDirs); |
| 199 | + }); |
| 200 | + |
| 201 | + dlMappingsNew.configure(task -> { |
| 202 | + task.setMappings(channel + "_" + version); |
| 203 | + task.setOutput(project.file("build/mappings_new.zip")); |
| 204 | + }); |
| 205 | + |
| 206 | + toMCPNew.configure(task -> { |
| 207 | + task.dependsOn(dlMappingsNew, applyRangeConfig); |
| 208 | + task.setInput(applyRangeConfig.get().getOutput()); |
| 209 | + task.setMappings(dlMappingsNew.get().getOutput()); |
| 210 | + }); |
| 211 | + |
| 212 | + extractMappedNew.configure(task -> { |
| 213 | + task.dependsOn(toMCPNew); |
| 214 | + task.setArchive(toMCPNew.get().getOutput()); |
| 215 | + srcDirs.forEach(task::addTarget); |
| 216 | + }); |
| 217 | + |
| 218 | + TaskProvider<DefaultTask> updateMappings = project.getTasks().register("updateMappings", DefaultTask.class); |
| 219 | + updateMappings.get().dependsOn(extractMappedNew); |
| 220 | + } |
| 221 | + |
162 | 222 | project.afterEvaluate(p -> {
|
| 223 | + if ("official".equals(extension.getMappingChannel())) { |
| 224 | + String warning = "WARNING: This project is configured to use the official obfuscation mappings provided by Mojang. " + Utils.OFFICIAL_MAPPING_USAGE; |
| 225 | + logger.warn(warning); |
| 226 | + } |
| 227 | + |
163 | 228 | MinecraftUserRepo mcrepo = null;
|
164 | 229 | DeobfuscatingRepo deobfrepo = null;
|
165 | 230 |
|
|
0 commit comments