Skip to content

Commit 5fddfe8

Browse files
committed
feature: Allow re-generating IDE projects at any time
1 parent ceec7c2 commit 5fddfe8

File tree

4 files changed

+46
-4
lines changed

4 files changed

+46
-4
lines changed

src/main/java/org/mcphackers/mcp/tasks/TaskDecompile.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,8 @@ protected Stage[] setStages() {
7676
classVersion = Math.max(52, classVersion);
7777
}), stage(getLocalizedStage("decompile"), 0, () -> {
7878
new Decompiler(this, rdiOut, ffOut, mcp.getLibraries(), mcp).decompile();
79-
new EclipseProjectWriter().createProject(mcp, side, ClassUtils.getSourceFromClassVersion(classVersion));
80-
new IdeaProjectWriter().createProject(mcp, side, ClassUtils.getSourceFromClassVersion(classVersion));
81-
new VSCProjectWriter().createProject(mcp, side, ClassUtils.getSourceFromClassVersion(classVersion));
82-
}), stage(getLocalizedStage("patch"), 88, () -> {
79+
}), stage(getLocalizedStage("create_ide_projects"), () -> new TaskGenerateProject(side, mcp).doTask()),
80+
stage(getLocalizedStage("patch"), 88, () -> {
8381
if (mcp.getOptions().getBooleanParameter(TaskParameter.PATCHES) && Files.exists(patchesPath)) {
8482
TaskApplyPatch.patch(this, ffOut, ffOut, patchesPath);
8583
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.mcphackers.mcp.tasks;
2+
3+
import org.mcphackers.mcp.MCP;
4+
import org.mcphackers.mcp.tasks.mode.TaskParameter;
5+
import org.mcphackers.mcp.tools.ClassUtils;
6+
import org.mcphackers.mcp.tools.project.EclipseProjectWriter;
7+
import org.mcphackers.mcp.tools.project.IdeaProjectWriter;
8+
import org.mcphackers.mcp.tools.project.VSCProjectWriter;
9+
10+
public class TaskGenerateProject extends TaskStaged {
11+
public TaskGenerateProject(Side side, MCP instance) {
12+
super(side, instance);
13+
}
14+
15+
@Override
16+
protected Stage[] setStages() {
17+
int requestedJavaVersion = mcp.getOptions().getIntParameter(TaskParameter.TARGET_VERSION);
18+
int classVersion = Math.max(requestedJavaVersion, 52);
19+
20+
return new Stage[]{
21+
stage(getLocalizedStage("create_eclipse_project", 0), () -> {
22+
new EclipseProjectWriter().createProject(mcp, side, ClassUtils.getSourceFromClassVersion(classVersion));
23+
}),
24+
stage(getLocalizedStage("create_idea_project"), () -> {
25+
new IdeaProjectWriter().createProject(mcp, side, ClassUtils.getSourceFromClassVersion(classVersion));
26+
}),
27+
stage(getLocalizedStage("create_vsc_project"), () -> {
28+
new VSCProjectWriter().createProject(mcp, side, ClassUtils.getSourceFromClassVersion(classVersion));
29+
})
30+
};
31+
}
32+
}

src/main/java/org/mcphackers/mcp/tasks/mode/TaskMode.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.mcphackers.mcp.tasks.TaskCreatePatch;
1717
import org.mcphackers.mcp.tasks.TaskDecompile;
1818
import org.mcphackers.mcp.tasks.TaskDownloadUpdate;
19+
import org.mcphackers.mcp.tasks.TaskGenerateProject;
1920
import org.mcphackers.mcp.tasks.TaskMergeMappings;
2021
import org.mcphackers.mcp.tasks.TaskRecompile;
2122
import org.mcphackers.mcp.tasks.TaskReobfuscate;
@@ -162,6 +163,11 @@ public class TaskMode {
162163
.setTaskClass(TaskMergeMappings.class)
163164
.setProgressBars(false)
164165
.build();
166+
public static TaskMode GENERATE_PROJECT = new TaskModeBuilder()
167+
.setName("generateproject")
168+
.setTaskClass(TaskGenerateProject.class)
169+
.setProgressBars(true)
170+
.build();
165171
public static TaskMode EXIT = new TaskModeBuilder()
166172
.setName("exit")
167173
.setProgressBars(false)

src/main/resources/lang/en_US.lang

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ task.updatemcp = Update RetroMCP
8181
task.updatemcp.desc = Check for updates
8282
task.mergemappings = Merge mappings
8383
task.mergemappings.desc = Merges mappings into V2 format
84+
task.generateproject = Generate IDE projects
85+
task.generateproject.desc = Creates projects for all supported IDEs
8486
task.noDesc = No description provided
8587

8688
task.stage.idle = Idle
@@ -103,6 +105,10 @@ task.stage.gathermd5 = Gathering MD5 hashes
103105
task.stage.updatemd5 = Updating MD5
104106
task.stage.download = Downloading: %s
105107
task.stage.workspace = Setting up workspace
108+
task.stage.create_ide_projects = Creating IDE projects
109+
task.stage.create_eclipse_project = Creating Eclipse project
110+
task.stage.create_idea_project = Creating IntelliJ Idea project
111+
task.stage.create_vsc_project = Creating VSCode project
106112

107113
task.param.debug = Display additional info
108114
task.param.side = Set side

0 commit comments

Comments
 (0)