Skip to content

Commit a4ac854

Browse files
committed
Better TaskMode implementation. Minor fixes. Working dir changing
1 parent 7e376a9 commit a4ac854

25 files changed

Lines changed: 432 additions & 259 deletions
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.mcphackers.mcp;
2+
3+
import java.nio.file.Path;
4+
import java.nio.file.Paths;
5+
import java.util.List;
6+
7+
import org.mcphackers.mcp.tasks.Task;
8+
9+
public abstract class BasicMCP implements MCP {
10+
11+
@Override
12+
public Path getWorkingDir() {
13+
return Paths.get("");
14+
}
15+
16+
@Override
17+
public void setProgressBars(List<Task> tasks, TaskMode mode) {
18+
}
19+
20+
@Override
21+
public void clearProgressBars() {
22+
}
23+
24+
@Override
25+
public void setProgress(int barIndex, String progressMessage) {
26+
}
27+
28+
@Override
29+
public void setProgress(int barIndex, int progress) {
30+
}
31+
32+
@Override
33+
public void setActive(boolean active) {
34+
}
35+
36+
@Override
37+
public void showMessage(String title, String msg, int type) {
38+
}
39+
40+
}

src/main/java/org/mcphackers/mcp/MCP.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.mcphackers.mcp;
22

3+
import java.nio.file.Path;
34
import java.util.ArrayList;
45
import java.util.HashMap;
56
import java.util.List;
@@ -22,6 +23,8 @@ default void performTask(TaskMode mode, Side side) {
2223
performTask(mode, side, true, true);
2324
}
2425

26+
Path getWorkingDir();
27+
2528
default void performTask(TaskMode mode, Side side, boolean enableProgressBars, boolean enableCompletionMessage) {
2629
List<Task> tasks = mode.getTasks(this);
2730
if(tasks.size() == 0) {
@@ -42,7 +45,7 @@ default void performTask(TaskMode mode, Side side, boolean enableProgressBars, b
4245
if (task.side == Side.SERVER && hasServer || task.side != Side.SERVER) {
4346
performedTasks.add(task);
4447
}
45-
} else if (task.side == side) {
48+
} else if (task.side == side || task.side == Side.ANY) {
4649
performedTasks.add(task);
4750
}
4851
}
@@ -89,7 +92,7 @@ default void performTask(TaskMode mode, Side side, boolean enableProgressBars, b
8992
}
9093
if(enableCompletionMessage) {
9194
String[] msgs2 = {"Finished successfully!", "Finished with warnings!", "Finished with errors!"};
92-
showMessage(mode.name, msgs2[result], result);
95+
showMessage(mode.getFullName(), msgs2[result], result);
9396
}
9497
setActive(true);
9598
if(enableProgressBars) clearProgressBars();

src/main/java/org/mcphackers/mcp/MCPPaths.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package org.mcphackers.mcp;
22

3+
import java.nio.file.Path;
4+
import java.nio.file.Paths;
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
38
public class MCPPaths {
49

510

@@ -61,5 +66,20 @@ public class MCPPaths {
6166
public static final String BUILD_JAR_CLIENT = BUILD + "minecraft.jar";
6267
public static final String BUILD_JAR_SERVER = BUILD + "minecraft_server.jar";
6368
public static final String UPDATE_JAR = "update.jar";
69+
70+
private static final Map<String, Path> paths = new HashMap<>();
71+
private static Path cachedWorkingDir;
6472

73+
public static Path get(MCP mcp, String path) {
74+
if(mcp.getWorkingDir() != cachedWorkingDir) {
75+
cachedWorkingDir = mcp.getWorkingDir();
76+
paths.clear();
77+
}
78+
if(!paths.containsKey(path)) {
79+
Path p = cachedWorkingDir.resolve(Paths.get(path));
80+
paths.put(path, p);
81+
return p;
82+
}
83+
return paths.get(path);
84+
}
6585
}

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

Lines changed: 57 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
import org.mcphackers.mcp.tasks.*;
99
import org.mcphackers.mcp.tasks.Task.Side;
1010

11-
public enum TaskMode {
12-
help("Help", "Displays command usage", null),
13-
decompile("Decompile", "Start decompiling Minecraft", TaskDecompile.class, new TaskParameter[]{
11+
public class TaskMode {
12+
public static final List<TaskMode> registeredTasks = new ArrayList<>();
13+
14+
public static final TaskMode HELP = new TaskMode("help", "Help", "Displays command usage", null);
15+
public static final TaskMode DECOMPILE = new TaskMode("decompile", "Decompile", "Start decompiling Minecraft", TaskDecompile.class, new TaskParameter[]{
1416
TaskParameter.DEBUG,
1517
TaskParameter.SOURCE_VERSION,
1618
TaskParameter.TARGET_VERSION,
@@ -19,76 +21,103 @@ public enum TaskMode {
1921
TaskParameter.INDENTION_STRING,
2022
TaskParameter.PATCHES,
2123
TaskParameter.SIDE
22-
}),
23-
recompile("Recompile", "Recompile Minecraft sources", TaskRecompile.class, new TaskParameter[] {
24+
});
25+
public static final TaskMode RECOMPILE = new TaskMode("recompile", "Recompile", "Recompile Minecraft sources", TaskRecompile.class, new TaskParameter[] {
2426
TaskParameter.DEBUG,
2527
TaskParameter.SOURCE_VERSION,
2628
TaskParameter.TARGET_VERSION,
2729
TaskParameter.BOOT_CLASS_PATH,
2830
TaskParameter.SIDE
29-
}),
30-
reobfuscate("Reobfuscate", "Reobfuscate Minecraft classes", TaskReobfuscate.class, new TaskParameter[] {
31+
});
32+
public static final TaskMode REOBFUSCATE = new TaskMode("reobfuscate", "Reobfuscate", "Reobfuscate Minecraft classes", TaskReobfuscate.class, new TaskParameter[] {
3133
TaskParameter.DEBUG,
3234
TaskParameter.SOURCE_VERSION,
3335
TaskParameter.TARGET_VERSION,
3436
TaskParameter.BOOT_CLASS_PATH,
3537
TaskParameter.SIDE
36-
}),
37-
updatemd5("Update MD5 Hashes", "Update md5 hash tables used for reobfuscation", TaskUpdateMD5.class, new TaskParameter[] {
38+
});
39+
public static final TaskMode UPDATE_MD5 = new TaskMode("updatemd5", "Update MD5 Hashes", "Update md5 hash tables used for reobfuscation", TaskUpdateMD5.class, new TaskParameter[] {
3840
TaskParameter.DEBUG,
3941
TaskParameter.SOURCE_VERSION,
4042
TaskParameter.TARGET_VERSION,
4143
TaskParameter.BOOT_CLASS_PATH,
4244
TaskParameter.SIDE
43-
}),
44-
updatemcp("Update", "Download an update if available", TaskDownloadUpdate.class),
45+
});
46+
public static final TaskMode UPDATE_MCP = new TaskMode("updatemcp", "Update", "Download an update if available", TaskDownloadUpdate.class);
4547

46-
setup("Setup", "Choose a version to setup", TaskSetup.class, new TaskParameter[] {
48+
public static final TaskMode SETUP = new TaskMode("setup", "Setup", "Choose a version to setup", TaskSetup.class, new TaskParameter[] {
4749
TaskParameter.DEBUG,
48-
}),
49-
cleanup("Cleanup", "Delete all source and class folders", TaskCleanup.class, new TaskParameter[] {
50+
});
51+
public static final TaskMode CLEANUP = new TaskMode("cleanup", "Cleanup", "Delete all source and class folders", TaskCleanup.class, new TaskParameter[] {
5052
TaskParameter.DEBUG,
5153
TaskParameter.SRC_CLEANUP
52-
}),
53-
start("Start", "Runs the client or the server from compiled classes", TaskRun.class, new TaskParameter[] {
54+
});
55+
public static final TaskMode START = new TaskMode("start", "Start", "Runs the client or the server from compiled classes", TaskRun.class, new TaskParameter[] {
5456
TaskParameter.RUN_BUILD
55-
}),
56-
build("Build", "Builds the final jar or zip", TaskBuild.class, new TaskParameter[] {
57+
});
58+
public static final TaskMode BUILD = new TaskMode("build", "Build", "Builds the final jar or zip", TaskBuild.class, new TaskParameter[] {
5759
TaskParameter.DEBUG,
5860
TaskParameter.SOURCE_VERSION,
5961
TaskParameter.TARGET_VERSION,
6062
TaskParameter.BOOT_CLASS_PATH,
6163
TaskParameter.FULL_BUILD,
6264
TaskParameter.SIDE
63-
}),
64-
createpatch("Create patch", "Creates patch", TaskCreatePatch.class),
65-
exit("Exit", "Exit the program", null);
65+
});
66+
public static final TaskMode CREATE_PATCH = new TaskMode("createpatch", "Create patch", "Creates patch", TaskCreatePatch.class);
67+
public static final TaskMode EXIT = new TaskMode("exit", "Exit", "Exit the program", null);
6668

67-
public final String name;
68-
public final String desc;
69+
private final String name;
70+
private final String fullName;
71+
private final String desc;
6972
public final Class<? extends Task> taskClass;
7073
public TaskParameter[] params = new TaskParameter[] {};
7174

72-
TaskMode(String name, String desc, Class<? extends Task> taskClass) {
75+
public TaskMode(String name, String fullName, String desc, Class<? extends Task> taskClass) {
7376
this.name = name;
77+
this.fullName = fullName;
7478
this.desc = desc;
7579
this.taskClass = taskClass;
80+
registeredTasks.add(this);
81+
}
82+
83+
public TaskMode(String name, String fullName, Class<? extends Task> taskClass, TaskParameter[] params) {
84+
this(name, fullName, "???", taskClass, params);
7685
}
7786

78-
TaskMode(String name, String desc, Class<? extends Task> taskClass, TaskParameter[] params) {
79-
this(name, desc, taskClass);
87+
public TaskMode(String name, String fullName, String desc, Class<? extends Task> taskClass, TaskParameter[] params) {
88+
this(name, fullName, desc, taskClass);
8089
this.params = params;
8190
}
8291

92+
public String getName() {
93+
return name;
94+
}
95+
96+
public String getFullName() {
97+
return fullName;
98+
}
99+
100+
public String getDesc() {
101+
return desc;
102+
}
103+
104+
public List<Side> allowedSides() {
105+
List<Side> sides = new ArrayList<>();
106+
sides.add(Side.CLIENT);
107+
sides.add(Side.SERVER);
108+
return sides;
109+
}
110+
83111
public List<Task> getTasks(MCP mcp) {
84112
List<Task> tasks = new ArrayList<>();
85113
if(taskClass != null) {
86114
Constructor<? extends Task> constructor;
87115
try {
88116
constructor = taskClass.getConstructor(Side.class, MCP.class);
89117
try {
90-
tasks.add(constructor.newInstance(Side.CLIENT, mcp));
91-
tasks.add(constructor.newInstance(Side.SERVER, mcp));
118+
for(Side side : allowedSides()) {
119+
tasks.add(constructor.newInstance(side, mcp));
120+
}
92121
} catch (IllegalAccessException | InvocationTargetException | InstantiationException e) {
93122
e.printStackTrace();
94123
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package org.mcphackers.mcp;
2+
3+
public interface TaskModeImpl {
4+
5+
}

0 commit comments

Comments
 (0)