From 85d51cb1a1e3e7e3715edb331c6e2b4aa751f3c9 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 12 Oct 2016 10:22:08 +0100 Subject: [PATCH] Remove need to use genIdeaRuns, now just use the idea task Remove making everything public - breaks a lot of shit --- README.md | 2 +- .../net/fabricmc/loom/AbstractPlugin.java | 24 +++++++++++++ .../net/fabricmc/loom/LoomGradlePlugin.java | 1 - .../loom/task/GenIdeaProjectTask.java | 25 +++++++------- .../net/fabricmc/loom/task/MapJarsTask.java | 28 +-------------- .../net/fabricmc/loom/util/BuidRemapper.java | 34 +++++++++++++++++++ 6 files changed, 73 insertions(+), 41 deletions(-) create mode 100644 src/main/java/net/fabricmc/loom/util/BuidRemapper.java diff --git a/README.md b/README.md index 6c96484..518ef91 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # fabric-loom Gradle plugin for Fabric -Usage: `gradlew setupFabric genIdeaRuns` +Usage: `gradlew setupFabric idea` (Prefix with `./` on macOS and Linux) diff --git a/src/main/java/net/fabricmc/loom/AbstractPlugin.java b/src/main/java/net/fabricmc/loom/AbstractPlugin.java index b6862c0..1d6cc1f 100644 --- a/src/main/java/net/fabricmc/loom/AbstractPlugin.java +++ b/src/main/java/net/fabricmc/loom/AbstractPlugin.java @@ -29,8 +29,11 @@ import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import net.fabricmc.loom.task.DownloadTask; +import net.fabricmc.loom.task.GenIdeaProjectTask; +import net.fabricmc.loom.util.BuidRemapper; import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.Version; +import org.gradle.api.Action; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; @@ -42,7 +45,10 @@ import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.api.tasks.javadoc.Javadoc; import org.gradle.plugins.ide.eclipse.model.EclipseModel; import org.gradle.plugins.ide.idea.model.IdeaModel; +import org.xml.sax.SAXException; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; @@ -237,6 +243,24 @@ public class AbstractPlugin implements Plugin { } project1.getDependencies().add(Constants.PROCESS_MODS_DEPENDENCIES, "net.fabricmc:fabric-base:16w38a-0.0.4-SNAPSHOT"); }); + + project.getTasks().getByName("build").doLast(task -> { + project.getLogger().lifecycle(":remapping mods"); + BuidRemapper.reamp(project); + }); + + project.afterEvaluate(project12 -> { + project12.getTasks().getByName("idea").dependsOn(project12.getTasks().getByName("cleanIdea")).dependsOn(project12.getTasks().getByName("extractNatives")); + project12.getTasks().getByName("idea").doLast(task -> { + try { + GenIdeaProjectTask.genIdeaRuns(project12); + } catch (IOException | ParserConfigurationException | SAXException | TransformerException e) { + e.printStackTrace(); + } + }); + }); + + } protected void readModJson(LoomGradleExtension extension) { diff --git a/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java b/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java index a9fba59..5b6269d 100644 --- a/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java +++ b/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java @@ -40,7 +40,6 @@ public class LoomGradlePlugin extends AbstractPlugin { makeTask("setupFabric", DefaultTask.class).dependsOn("processMods"); makeTask("extractNatives", ExtractNativesTask.class).dependsOn("download"); - makeTask("genIdeaRuns", GenIdeaProjectTask.class).dependsOn("cleanIdea").dependsOn("idea").dependsOn("extractNatives"); makeTask("vscode", GenVSCodeProjectTask.class).dependsOn("extractNatives"); diff --git a/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java b/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java index 809adc6..7ed14e1 100644 --- a/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java @@ -30,6 +30,7 @@ import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.IdeaRunConfig; import net.fabricmc.loom.util.Version; import org.gradle.api.DefaultTask; +import org.gradle.api.Project; import org.gradle.api.tasks.TaskAction; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -50,12 +51,12 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; -public class GenIdeaProjectTask extends DefaultTask { - @TaskAction - public void genIdeaRuns() throws IOException, ParserConfigurationException, SAXException, TransformerException { - LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class); +public class GenIdeaProjectTask { - File file = new File(getProject().getName() + ".iml"); + public static void genIdeaRuns(Project project) throws IOException, ParserConfigurationException, SAXException, TransformerException { + LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); + + File file = new File(project.getName() + ".iml"); DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document doc = docBuilder.parse(file); @@ -70,7 +71,7 @@ public class GenIdeaProjectTask extends DefaultTask { } if (component == null) { - this.getLogger().lifecycle(":failed to generate intellij run configurations"); + project.getLogger().lifecycle(":failed to generate intellij run configurations"); return; } @@ -84,7 +85,7 @@ public class GenIdeaProjectTask extends DefaultTask { } if (content == null) { - this.getLogger().lifecycle(":failed to generate intellij run configurations"); + project.getLogger().lifecycle(":failed to generate intellij run configurations"); return; } @@ -119,7 +120,7 @@ public class GenIdeaProjectTask extends DefaultTask { node.appendChild(libraryElement); component.appendChild(node); } else if (!library.allowed()) { - this.getLogger().info(":" + library.getFile(extension).getName() + " is not allowed on this os"); + project.getLogger().info(":" + library.getFile(extension).getName() + " is not allowed on this os"); } } @@ -131,7 +132,7 @@ public class GenIdeaProjectTask extends DefaultTask { transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); transformer.transform(source, result); - file = new File(getProject().getName() + ".iws"); + file = new File(project.getName() + ".iws"); docFactory = DocumentBuilderFactory.newInstance(); docBuilder = docFactory.newDocumentBuilder(); doc = docBuilder.parse(file); @@ -147,13 +148,13 @@ public class GenIdeaProjectTask extends DefaultTask { } if (runManager == null) { - this.getLogger().lifecycle(":failed to generate intellij run configurations"); + project.getLogger().lifecycle(":failed to generate intellij run configurations"); return; } IdeaRunConfig ideaClient = new IdeaRunConfig(); ideaClient.mainClass = "net.minecraft.launchwrapper.Launch"; - ideaClient.projectName = getProject().getName(); + ideaClient.projectName = project.getName(); ideaClient.configName = "Minecraft Client"; ideaClient.runDir = "file://$PROJECT_DIR$/" + extension.runDir; ideaClient.vmArgs = "-Djava.library.path=" + Constants.MINECRAFT_NATIVES.get(extension).getAbsolutePath() + " -Dfabric.development=true"; @@ -163,7 +164,7 @@ public class GenIdeaProjectTask extends DefaultTask { IdeaRunConfig ideaServer = new IdeaRunConfig(); ideaServer.mainClass = "net.minecraft.launchwrapper.Launch"; - ideaServer.projectName = getProject().getName(); + ideaServer.projectName = project.getName(); ideaServer.configName = "Minecraft Server"; ideaServer.runDir = "file://$PROJECT_DIR$/" + extension.runDir; ideaServer.vmArgs = "-Dfabric.development=true"; diff --git a/src/main/java/net/fabricmc/loom/task/MapJarsTask.java b/src/main/java/net/fabricmc/loom/task/MapJarsTask.java index 25afc2d..7bb95e7 100644 --- a/src/main/java/net/fabricmc/loom/task/MapJarsTask.java +++ b/src/main/java/net/fabricmc/loom/task/MapJarsTask.java @@ -95,36 +95,10 @@ public class MapJarsTask extends DefaultTask { @Override public CtClass transform(CtClass ctClass) throws Exception { - return publify(loader.transformClass(ctClass)); + return loader.transformClass(ctClass); } } - //Taken from enigma, anc changed a little - public static CtClass publify(CtClass c) { - - for (CtField field : c.getDeclaredFields()) { - field.setModifiers(publify(field.getModifiers())); - } - for (CtBehavior behavior : c.getDeclaredBehaviors()) { - behavior.setModifiers(publify(behavior.getModifiers())); - } - InnerClassesAttribute attr = (InnerClassesAttribute) c.getClassFile().getAttribute(InnerClassesAttribute.tag); - if (attr != null) { - for (int i = 0; i < attr.tableLength(); i++) { - attr.setAccessFlags(i, publify(attr.accessFlags(i))); - } - } - - return c; - } - - private static int publify(int flags) { - if (!AccessFlag.isPublic(flags)) { - flags = AccessFlag.setPublic(flags); - } - return flags; - } - public static class ProgressListener implements Deobfuscator.ProgressListener { @Override public void init(int i, String s) { diff --git a/src/main/java/net/fabricmc/loom/util/BuidRemapper.java b/src/main/java/net/fabricmc/loom/util/BuidRemapper.java new file mode 100644 index 0000000..86a8e07 --- /dev/null +++ b/src/main/java/net/fabricmc/loom/util/BuidRemapper.java @@ -0,0 +1,34 @@ +/* + * This file is part of fabric-loom, licensed under the MIT License (MIT). + * + * Copyright (c) 2016 FabricMC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package net.fabricmc.loom.util; + +import org.gradle.api.Project; + +public class BuidRemapper { + + public static void reamp(Project project){ + + } +}