Skip to content

Commit 0455299

Browse files
committed
backported MCPC/Cauldron dev env
1 parent e07f385 commit 0455299

File tree

8 files changed

+656
-36
lines changed

8 files changed

+656
-36
lines changed

src/main/java/net/minecraftforge/gradle/dev/CauldronDevPlugin.java

Lines changed: 491 additions & 0 deletions
Large diffs are not rendered by default.

src/main/java/net/minecraftforge/gradle/dev/DevBasePlugin.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ public void visitFile(FileVisitDetails fileDetails)
209209
}
210210

211211
@Override
212-
protected final String getDevJson()
212+
protected String getDevJson()
213213
{
214214
return DelayedBase.resolve(DevConstants.JSON_DEV, project, this);
215215
}
@@ -313,8 +313,11 @@ public String resolve(String pattern, Project project, DevExtension exten)
313313
{
314314
pattern = super.resolve(pattern, project, exten);
315315
pattern = pattern.replace("{MAIN_CLASS}", exten.getMainClass());
316+
pattern = pattern.replace("{FML_TWEAK_CLASS}", exten.getTweakClass());
316317
pattern = pattern.replace("{INSTALLER_VERSION}", exten.getInstallerVersion());
317318
pattern = pattern.replace("{FML_DIR}", exten.getFmlDir());
319+
pattern = pattern.replace("{FORGE_DIR}", exten.getForgeDir());
320+
pattern = pattern.replace("{BUKKIT_DIR}", exten.getBukkitDir());
318321
pattern = pattern.replace("{MAPPINGS_DIR}", exten.getFmlDir() + "/conf");
319322
return pattern;
320323
}

src/main/java/net/minecraftforge/gradle/dev/DevConstants.java

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44

55
final class DevConstants
66
{
7-
private DevConstants()
8-
{
9-
10-
}
7+
private DevConstants() { }
118

129
static final String INSTALLER_URL = "http://files.minecraftforge.net/installer/forge-installer-{INSTALLER_VERSION}-shrunk.jar";
1310
static final String LAUNCH4J_URL = "http://files.minecraftforge.net/launch4j/launch4j-3.0.0-"+Constants.OPERATING_SYSTEM+"-"+Constants.SYSTEM_ARCH+".zip";
@@ -86,14 +83,40 @@ private DevConstants()
8683
static final String FML_LOGO = "{FML_DIR}/jsons/big_logo.png";
8784

8885
// Forge stuff only
89-
static final String FORGE_PATCH_DIR = "patches/minecraft";
90-
static final String FORGE_SOURCES = "src/main/java";
91-
static final String FORGE_RESOURCES = "src/main/resources";
92-
static final String FORGE_TEST_SOURCES = "src/test/java";
93-
static final String FORGE_LICENSE = "MinecraftForge-License.txt";
94-
static final String FORGE_CREDITS = "MinecraftForge-Credits.txt";
95-
static final String PAULSCODE_LISCENCE1 = "Paulscode IBXM Library License.txt";
96-
static final String PAULSCODE_LISCENCE2 = "Paulscode SoundSystem CodecIBXM License.txt";
86+
static final String FORGE_PATCH_DIR = "{FORGE_DIR}/patches/minecraft";
87+
static final String FORGE_SOURCES = "{FORGE_DIR}/src/main/java";
88+
static final String FORGE_RESOURCES = "{FORGE_DIR}/src/main/resources";
89+
static final String FORGE_TEST_SOURCES = "{FORGE_DIR}/src/test/java";
90+
static final String FORGE_LICENSE = "{FORGE_DIR}/MinecraftForge-License.txt";
91+
static final String FORGE_CREDITS = "{FORGE_DIR}/MinecraftForge-Credits.txt";
92+
static final String PAULSCODE_LISCENCE1 = "{FORGE_DIR}/Paulscode IBXM Library License.txt";
93+
static final String PAULSCODE_LISCENCE2 = "{FORGE_DIR}/Paulscode SoundSystem CodecIBXM License.txt";
9794
static final String FORGE_LOGO = FORGE_RESOURCES + "/forge_logo.png";
9895
static final String FORGE_VERSION_JAVA = FORGE_SOURCES + "/net/minecraftforge/common/ForgeVersion.java";
96+
97+
// Cauldron intermediate jars
98+
static final String JAR_SRG_CDN = "{CACHE_DIR}/minecraft/net/minecraft/minecraft_srg/{MC_VERSION}/minecraft_srg_cdn-{MC_VERSION}.jar";
99+
static final String ZIP_DECOMP_CDN = "{CACHE_DIR}/minecraft/net/minecraft/minecraft_decomp/{MC_VERSION}/minecraft_decomp_cdn-{MC_VERSION}.zip";
100+
static final String ZIP_FMLED_CDN = "{BUILD_DIR}/cdnTmp/minecraft_fmlpatched.zip";
101+
static final String ZIP_INJECT_CDN = "{BUILD_DIR}/cdnTmp/minecraft_fmlinjected.zip";
102+
static final String ZIP_RENAMED_CDN = "{BUILD_DIR}/cdnTmp/minecraft_renamed.zip";
103+
static final String ZIP_FINJECT_CDN = "{BUILD_DIR}/cdnTmp/minecraft_forgeinjected.zip";
104+
static final String ZIP_FORGED_CDN = "{BUILD_DIR}/cdnTmp/minecraft_forged.zip";
105+
static final String ZIP_PATCHED_CDN = "{BUILD_DIR}/cdnTmp/minecraft_patched.zip";
106+
static final String CDN_JSON_DEV = "jsons/{MC_VERSION}-dev.json";
107+
static final String CDN_JSON_REL = "jsons/{MC_VERSION}-rel.json";
108+
static final String CDN_JSON_BASE = "jsons/{MC_VERSION}.json";
109+
static final String ECLIPSE_CLEAN_SRC = ECLIPSE_CLEAN + "/src/main/java";
110+
static final String ECLIPSE_CLEAN_RES = ECLIPSE_CLEAN + "/src/main/resources";
111+
static final String ECLIPSE_CDN = WORKSPACE + "/Cauldron";
112+
static final String ECLIPSE_CDN_SRC = ECLIPSE_CDN + "/src/main/java";
113+
static final String ECLIPSE_CDN_RES = ECLIPSE_CDN + "/src/main/resources";
114+
static final String CDN_PATCH_DIR = "patches";
115+
static final String CDN_SOURCES = "src/main/java";
116+
static final String CDN_RESOURCES = "src/main/resources";
117+
static final String CDN_TEST_SOURCES = "src/test/java";
118+
static final String CDN_TEST_RES = "src/test/resources";
119+
static final String BUKKIT_SOURCES = "{BUKKIT_DIR}/src/main/java";
120+
static final String BUKKIT_RESOURCES = "{BUKKIT_DIR}/src/main/resources";
121+
static final String EXTRACTED_RES = "{BUILD_DIR}/extractedResources";
99122
}

src/main/java/net/minecraftforge/gradle/dev/DevExtension.java

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
package net.minecraftforge.gradle.dev;
22

3+
import groovy.lang.Closure;
34
import net.minecraftforge.gradle.common.BaseExtension;
45

6+
import org.gradle.api.Action;
57
import org.gradle.api.Project;
8+
import org.gradle.api.internal.ClosureBackedAction;
69

710
public class DevExtension extends BaseExtension
811
{
912
private String fmlDir;
13+
private String forgeDir;
14+
private String bukkitDir;
1015
private String mainClass;
16+
private String tweakClass;
1117
private String installerVersion = "null";
18+
private Action<Project> subprojects = null;
19+
private Action<Project> cleanProject = null;
20+
private Action<Project> dirtyProject = null;
1221

1322
public DevExtension(Project project)
1423
{
@@ -24,6 +33,26 @@ public void setFmlDir(String fmlDir)
2433
{
2534
this.fmlDir = fmlDir;
2635
}
36+
37+
public String getForgeDir()
38+
{
39+
return forgeDir == null ? project.getProjectDir().getPath().replace('\\', '/') : forgeDir.replace('\\', '/');
40+
}
41+
42+
public void setForgeDir(String forgeDir)
43+
{
44+
this.forgeDir = forgeDir;
45+
}
46+
47+
public String getBukkitDir()
48+
{
49+
return bukkitDir == null ? project.getProjectDir().getPath().replace('\\', '/') : bukkitDir.replace('\\', '/');
50+
}
51+
52+
public void setBukkitDir(String bukkitDir)
53+
{
54+
this.bukkitDir = bukkitDir;
55+
}
2756

2857
public String getMainClass()
2958
{
@@ -44,4 +73,62 @@ public void setInstallerVersion(String installerVersion)
4473
{
4574
this.installerVersion = installerVersion;
4675
}
47-
}
76+
77+
public String getTweakClass()
78+
{
79+
return tweakClass == null ? "" : tweakClass;
80+
}
81+
82+
public void setTweakClass(String tweakClass)
83+
{
84+
this.tweakClass = tweakClass;
85+
}
86+
87+
public Action<Project> getSubprojects()
88+
{
89+
return subprojects;
90+
}
91+
92+
public void setSubprojects(Action<Project> subprojects)
93+
{
94+
this.subprojects = subprojects;
95+
}
96+
97+
@SuppressWarnings("rawtypes")
98+
public void subprojects(Closure subprojects)
99+
{
100+
this.subprojects = new ClosureBackedAction<Project>(subprojects);
101+
}
102+
103+
public Action<Project> getCleanProject()
104+
{
105+
return cleanProject;
106+
}
107+
108+
public void setCleanProject(Action<Project> cleanProject)
109+
{
110+
this.cleanProject = cleanProject;
111+
}
112+
113+
@SuppressWarnings("rawtypes")
114+
public void cleanProject(Closure subprojects)
115+
{
116+
this.cleanProject = new ClosureBackedAction<Project>(subprojects);
117+
}
118+
119+
public Action<Project> getDirtyProject()
120+
{
121+
return dirtyProject;
122+
}
123+
124+
public void setDirtyProject(Action<Project> dirtyProject)
125+
{
126+
this.dirtyProject = dirtyProject;
127+
}
128+
129+
@SuppressWarnings("rawtypes")
130+
public void dirtyProject(Closure subprojects)
131+
{
132+
this.dirtyProject = new ClosureBackedAction<Project>(subprojects);
133+
}
134+
}

src/main/java/net/minecraftforge/gradle/dev/FmlDevPlugin.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import net.minecraftforge.gradle.tasks.dev.ObfuscateTask;
2626
import net.minecraftforge.gradle.tasks.dev.SubprojectTask;
2727

28+
import org.gradle.api.Action;
2829
import org.gradle.api.DefaultTask;
2930
import org.gradle.api.Project;
3031
import org.gradle.api.Task;
@@ -347,15 +348,14 @@ public File call()
347348
{
348349
javadocJar.setBuildFile(delayedFile(DevConstants.ECLIPSE_FML + "/build.gradle"));
349350
javadocJar.setTasks("jar");
350-
javadocJar.setConfigureTask(new Closure<Object>(this, null) {
351-
public Object call(Object obj)
351+
javadocJar.setConfigureTask(new Action<Task>() {
352+
@Override
353+
public void execute(Task obj)
352354
{
353355
Jar task = (Jar) obj;
354356
File file = delayedFile(DevConstants.JAVADOC_TMP).call();
355357
task.setDestinationDir(file.getParentFile());
356358
task.setArchiveName(file.getName());
357-
358-
return null;
359359
}
360360
});
361361
}

src/main/java/net/minecraftforge/gradle/dev/ForgeDevPlugin.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@
3838
import org.gradle.api.Task;
3939
import org.gradle.api.java.archives.Manifest;
4040
import org.gradle.api.tasks.Delete;
41+
import org.gradle.api.tasks.bundling.Jar;
4142
import org.gradle.api.tasks.bundling.Zip;
42-
import org.gradle.api.tasks.javadoc.Javadoc;
4343

4444
import com.google.common.base.Throwables;
4545

@@ -446,12 +446,14 @@ public File call()
446446
{
447447
javadocJar.setBuildFile(delayedFile(ECLIPSE_FORGE + "/build.gradle"));
448448
javadocJar.setTasks("javadoc");
449-
javadocJar.setConfigureTask(new Closure<Object>(this, null) {
450-
public Object call(Object obj)
449+
javadocJar.setConfigureTask(new Action<Task>() {
450+
@Override
451+
public void execute(Task obj)
451452
{
452-
Javadoc task = (Javadoc)obj;
453-
task.setDestinationDir(javadoc_temp);
454-
return null;
453+
Jar task = (Jar) obj;
454+
File file = delayedFile(DevConstants.JAVADOC_TMP).call();
455+
task.setDestinationDir(file.getParentFile());
456+
task.setArchiveName(file.getName());
455457
}
456458
});
457459
}

src/main/java/net/minecraftforge/gradle/tasks/dev/SubprojectTask.java

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package net.minecraftforge.gradle.tasks.dev;
22

3-
import groovy.lang.Closure;
4-
53
import java.io.File;
64
import java.io.IOException;
5+
import java.util.LinkedList;
76
import java.util.Set;
87

98
import net.minecraftforge.gradle.delayed.DelayedFile;
109
import net.minecraftforge.gradle.dev.FmlDevPlugin;
1110

11+
import org.gradle.api.Action;
1212
import org.gradle.api.DefaultTask;
1313
import org.gradle.api.Project;
1414
import org.gradle.api.Task;
@@ -17,23 +17,31 @@
1717

1818
public class SubprojectTask extends DefaultTask
1919
{
20-
private DelayedFile buildFile;
21-
private String tasks;
22-
private Closure<Object> configureTask;
23-
20+
private DelayedFile buildFile;
21+
private String tasks;
22+
private LinkedList<Action<Project>> configureProject = new LinkedList<Action<Project>>();
23+
private Action<Task> configureTask;
24+
2425
@TaskAction
2526
public void doTask() throws IOException
2627
{
2728
Project childProj = FmlDevPlugin.getProject(getBuildFile(), getProject());
29+
30+
// configure the project
31+
for (Action<Project> act : configureProject)
32+
{
33+
if (act != null)
34+
act.execute(childProj);
35+
}
2836

2937
for (String task : tasks.split(" "))
3038
{
3139
Set<Task> list = childProj.getTasksByName(task, false);
3240
for (Task t : list)
3341
{
3442
if (configureTask != null)
35-
configureTask.call(t);
36-
executeTask((AbstractTask)t);
43+
configureTask.execute(t);
44+
executeTask((AbstractTask) t);
3745
}
3846
}
3947

@@ -46,7 +54,7 @@ private void executeTask(AbstractTask task)
4654
{
4755
executeTask((AbstractTask) dep);
4856
}
49-
57+
5058
if (!task.getState().getExecuted())
5159
{
5260
getLogger().lifecycle(task.getPath());
@@ -74,13 +82,18 @@ public void setTasks(String tasks)
7482
this.tasks = tasks;
7583
}
7684

77-
public Closure<Object> getConfigureTask()
85+
public Action<Task> getConfigureTask()
7886
{
7987
return configureTask;
8088
}
8189

82-
public void setConfigureTask(Closure<Object> configureTask)
90+
public void setConfigureTask(Action<Task> configureTask)
8391
{
8492
this.configureTask = configureTask;
8593
}
86-
}
94+
95+
public void configureProject(Action<Project> action)
96+
{
97+
configureProject.add(action);
98+
}
99+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
implementation-class=net.minecraftforge.gradle.dev.CauldronDevPlugin

0 commit comments

Comments
 (0)