diff --git a/build.gradle b/build.gradle index 2dc68291c..b87c905d7 100755 --- a/build.gradle +++ b/build.gradle @@ -45,10 +45,10 @@ buildscript { } } + +import baritone.gradle.fabric.CreateVolderYarn import baritone.gradle.task.CreateDistTask import baritone.gradle.task.ProguardTask -import baritone.gradle.fabric.CreateVolderYarn - import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace import org.apache.tools.ant.taskdefs.condition.Os @@ -102,7 +102,7 @@ task sourceJar(type: Jar, dependsOn: classes) { from sourceSets.api.allSource } if (getProject().hasProperty("baritone.fabric_build")) { - minecraft.refmapName="mixins.baritone.refmap.json" + minecraft.refmapName = "mixins.baritone.refmap.json" } else { minecraft { mappings mcpVersion @@ -267,28 +267,28 @@ jar { File getClientJar() { return project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().findByName("launch").getRuntimeClasspath().getFiles() .stream() - .filter({f -> f.toString().endsWith("client-extra.jar")}) - .map({f -> new File(f.getParentFile(), "client.jar")}) + .filter({ f -> f.toString().endsWith("client-extra.jar") }) + .map({ f -> new File(f.getParentFile(), "client.jar") }) .findFirst() .get() } File getClientJarFabric() { return project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().findByName("launch").getRuntimeClasspath().getFiles() - .stream() - .filter({f -> f.getName().endsWith("-v2.jar") && f.getName().startsWith("minecraft-")}) - .map({f -> new File(f.getParentFile().getParentFile(), f.getName().toString().replace("mapped", "intermediary"))}) - .findFirst() - .get() + .stream() + .filter({ f -> f.getName().endsWith("-v2.jar") && f.getName().startsWith("minecraft-") }) + .map({ f -> new File(f.getParentFile().getParentFile(), f.getName().toString().replace("mapped", "intermediary")) }) + .findFirst() + .get() } if (getProject().hasProperty("baritone.fabric_build")) { task copyMcJar(type: Copy) { - def mcJar = {getClientJarFabric()} + def mcJar = { getClientJarFabric() } from mcJar into 'build/createMcIntermediaryJar/' - rename {'client.jar'} + rename { 'client.jar' } } task proguard(type: ProguardTask, dependsOn: copyMcJar) { @@ -300,16 +300,16 @@ if (getProject().hasProperty("baritone.fabric_build")) { } else { task copyMcJar(type: Copy) { - def mcJar = {getClientJar()} + def mcJar = { getClientJar() } from mcJar into 'build/createMcSrgJar/' - rename {'client-srg.jar'} + rename { 'client-srg.jar' } } task createSrgMc(type: RenameJarInPlace) { setInput(new File(copyMcJar.getOutputs().getFiles().getSingleFile(), "client-srg.jar")) - setClasspath(files({getClientJar()})) + setClasspath(files({ getClientJar() })) // fork setMappingType(net.minecraftforge.gradle.common.util.MappingFile.Mapping.SEARGE) diff --git a/buildSrc/src/main/java/baritone/gradle/fabric/CreateVolderYarn.java b/buildSrc/src/main/java/baritone/gradle/fabric/CreateVolderYarn.java index f544023a3..9d19d8202 100644 --- a/buildSrc/src/main/java/baritone/gradle/fabric/CreateVolderYarn.java +++ b/buildSrc/src/main/java/baritone/gradle/fabric/CreateVolderYarn.java @@ -33,47 +33,49 @@ import java.util.zip.ZipOutputStream; public class CreateVolderYarn { public static String VOLDERYARNFOLDER = "./build/volderyarn/"; public static String VOLDERYARN = "volderyarn-%s-%s-%s.jar"; - + public static void genMappings(String mcVersion, Map mcpVersion) throws IOException { //download yarn intermediary URL intURL = new URL(String.format("https://maven.fabricmc.net/net/fabricmc/intermediary/%s/intermediary-%s-v2.jar", mcVersion, mcVersion)); String intermediary = readZipContentFromURL(intURL, "mappings/mappings.tiny").get("mappings/mappings.tiny"); Map mappings = parseTinyMap(intermediary); - + //download srg URL srgURL = new URL(String.format("https://files.minecraftforge.net/maven/de/oceanlabs/mcp/mcp_config/%s/mcp_config-%s.zip", mcVersion, mcVersion)); String tsrg = readZipContentFromURL(srgURL, "config/joined.tsrg").get("config/joined.tsrg"); MCPData mcpData = addTSRGData(mappings, tsrg); - + //download mcp URL mcpURL = new URL(String.format("https://files.minecraftforge.net/maven/de/oceanlabs/mcp/mcp_%s/%s/mcp_%s-%s.zip", mcpVersion.get("channel"), mcpVersion.get("version"), mcpVersion.get("channel"), mcpVersion.get("version"))); Map mcpfiles = readZipContentFromURL(mcpURL, "fields.csv", "methods.csv"); addMCPData(mcpData, mcpfiles.get("fields.csv"), mcpfiles.get("methods.csv")); - + StringBuilder builder = new StringBuilder("tiny\t2\t0\tintermediary\tnamed"); for (ClassData clazz : mappings.values()) { builder.append("\n").append(clazz.getIntToMCP()); } - + File outputFolder = new File(VOLDERYARNFOLDER); - if (!outputFolder.exists() && !outputFolder.mkdirs()) throw new RuntimeException("Failed to create dir for volderyarn mappings."); - + if (!outputFolder.exists() && !outputFolder.mkdirs()) + throw new RuntimeException("Failed to create dir for volderyarn mappings."); + for (File f : outputFolder.listFiles()) { if (!f.isDirectory()) f.delete(); } - + File outputFile = new File(outputFolder, String.format(VOLDERYARN, mcVersion, mcpVersion.get("channel"), mcpVersion.get("version"))); if (!outputFile.getParentFile().exists()) { - if (!outputFile.getParentFile().mkdir()) throw new FileNotFoundException("Failed to create folder for volderyarn!"); + if (!outputFile.getParentFile().mkdir()) + throw new FileNotFoundException("Failed to create folder for volderyarn!"); } - + try (ZipOutputStream output = new ZipOutputStream(new FileOutputStream(outputFile))) { output.putNextEntry(new ZipEntry("mappings/mappings.tiny")); byte[] outData = builder.toString().getBytes(StandardCharsets.UTF_8); output.write(outData, 0, outData.length); } } - + private static Map parseTinyMap(String map) { Map mappings = new LinkedHashMap<>(); ClassData clazzdata = null; @@ -96,7 +98,7 @@ public class CreateVolderYarn { } return mappings; } - + private static MCPData addTSRGData(Map mappings, String tsrg) { MCPData mcpData = new MCPData(); String[] classes = String.join("\t", tsrg.split("\n\t")).split("\n"); @@ -111,11 +113,11 @@ public class CreateVolderYarn { //method if (lineData.length == 3) { if (!mcpData.methods.containsKey(lineData[2])) mcpData.methods.put(lineData[2], new LinkedList<>()); - MethodData d = clazz.methods.get(lineData[0]+lineData[1]); + MethodData d = clazz.methods.get(lineData[0] + lineData[1]); if (d == null) continue; d.mcpName = lineData[2]; mcpData.methods.get(lineData[2]).add(d); - //field + //field } else { if (!mcpData.fields.containsKey(lineData[1])) mcpData.fields.put(lineData[1], new LinkedList<>()); FieldData d = clazz.fields.get(lineData[0]); @@ -127,20 +129,20 @@ public class CreateVolderYarn { } return mcpData; } - + private static void addMCPData(MCPData mcpData, String fields, String methods) { for (String field : fields.split("\n")) { String[] fieldData = field.split(","); mcpData.fields.getOrDefault(fieldData[0].trim(), new LinkedList<>()).forEach(f -> f.mcpName = fieldData[1].trim()); } - + for (String method : methods.split("\n")) { String[] methodData = method.split(","); mcpData.methods.getOrDefault(methodData[0].trim(), new LinkedList<>()).forEach(m -> m.mcpName = methodData[1].trim()); } } - - private static Map readZipContentFromURL(URL remote, String ...files) throws IOException { + + private static Map readZipContentFromURL(URL remote, String... files) throws IOException { try (ZipInputStream is = new ZipInputStream(new BufferedInputStream(remote.openStream(), 1024))) { byte[] buff = new byte[1024]; ZipEntry entry; @@ -159,62 +161,62 @@ public class CreateVolderYarn { return fileContents; } } - + private static class ClassData { final Map classMap; final String obf; final String intermediary; String mcpName; - + final Map methods = new LinkedHashMap<>(); final Map fields = new LinkedHashMap<>(); - + public ClassData(Map classMap, String obf, String intermediary) { this.classMap = classMap; this.obf = obf; this.intermediary = intermediary; } - + public void addMethod(String obf, String obfSig, String intermediary) { - methods.put(obf+obfSig, new MethodData(classMap, obf, obfSig, intermediary)); + methods.put(obf + obfSig, new MethodData(classMap, obf, obfSig, intermediary)); } - + public void addField(String obf, String obfSig, String intermediary) { fields.put(obf, new FieldData(classMap, obf, obfSig, intermediary)); } - + public String getIntToMCP() { StringBuilder builder = new StringBuilder("c\t").append(intermediary).append("\t").append(mcpName); for (MethodData method : methods.values()) { builder.append("\n\tm\t").append(method.getIntermediarySig()).append("\t").append(method.intermediary).append("\t").append(method.mcpName); } - for (FieldData field: fields.values()) { + for (FieldData field : fields.values()) { builder.append("\n\tf\t").append(field.getIntermediarySig()).append("\t").append(field.intermediary).append("\t").append(field.mcpName); } return builder.toString(); } } - + private static class MethodData { final Map classMap; final String obf; final String intermediary; String mcpName; - + final String obfSig; - + public MethodData(Map classMap, String obf, String obfSig, String intermediary) { this.classMap = classMap; this.obf = obf; this.obfSig = obfSig; this.intermediary = intermediary; } - + public String getIntermediarySig() { int offset = 0; Matcher m = Pattern.compile("L(.+?);").matcher(obfSig); String intSig = obfSig; - while(m.find()) { + while (m.find()) { if (!classMap.containsKey(m.group(1))) continue; String intName = classMap.get(m.group(1)).intermediary; intSig = intSig.substring(0, m.start(1) + offset) + intName + intSig.substring(m.end(1) + offset); @@ -223,22 +225,22 @@ public class CreateVolderYarn { return intSig; } } - + private static class FieldData { final Map classMap; final String obf; final String intermediary; String mcpName; - + final String obfSig; - + public FieldData(Map classMap, String obf, String obfSig, String intermediary) { this.classMap = classMap; this.obf = obf; this.obfSig = obfSig; this.intermediary = intermediary; } - + public String getIntermediarySig() { Matcher m = Pattern.compile("(\\[*)L(.+?);").matcher(obfSig); if (m.find()) { @@ -249,7 +251,7 @@ public class CreateVolderYarn { } } } - + private static class MCPData { final Map> methods = new HashMap<>(); final Map> fields = new HashMap<>();