Skip to content

Commit 4918399

Browse files
committed
General cleanup. Fixes to version loading
1 parent 9f164d6 commit 4918399

File tree

9 files changed

+93
-108
lines changed

9 files changed

+93
-108
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
asm_version=9.3
2-
fernflower_version=5284b9c31e4a12a27e24b5161c4265406707e007
2+
fernflower_version=d2244e18cb333b9b52b5dce4cb8dfa9989ecf781
33
rdi_version=e9cc51319f7881563fa7614faab101a988c6a152
44
stitch_version=fdbe41ae758bf2501fc7addb0b78938c7f7da226
55
jansi_version=2.4.0

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

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/main/java/org/mcphackers/mcp/gui/MCPFrame.java

Lines changed: 37 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import java.awt.Font;
1111
import java.awt.GridBagConstraints;
1212
import java.awt.GridBagLayout;
13-
import java.awt.event.ActionListener;
1413
import java.awt.event.ComponentAdapter;
1514
import java.awt.event.ComponentEvent;
1615
import java.awt.image.BufferedImage;
@@ -57,17 +56,22 @@ public class MCPFrame extends JFrame {
5756
public MainGUI mcp;
5857
public boolean loadingVersions = true;
5958

59+
public static BufferedImage ICON;
60+
61+
static {
62+
try {
63+
URL resource = MCPFrame.class.getResource("/icon/rmcp.png");
64+
ICON = ImageIO.read(resource);
65+
} catch (Exception e) {
66+
System.err.println("Can't load icon");
67+
}
68+
}
69+
6070
public MCPFrame(MainGUI mcp) {
6171
super("RetroMCP " + MCP.VERSION);
6272
this.mcp = mcp;
6373
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
64-
try {
65-
URL resource = getClass().getResource("/icon/rmcp.png");
66-
BufferedImage image = ImageIO.read(resource);
67-
setIconImage(image);
68-
} catch (Exception e) {
69-
e.printStackTrace();
70-
}
74+
setIconImage(ICON);
7175
initFrameContents();
7276
pack();
7377
setMinimumSize(getMinimumSize());
@@ -92,34 +96,8 @@ public void componentResized(ComponentEvent componentEvent) {
9296
});
9397

9498
for(TaskMode task : MainGUI.TASKS) {
95-
TaskButton button;
96-
if(task == TaskMode.DECOMPILE) {
97-
ActionListener defaultActionListener = event -> operateOnThread(() -> {
98-
int response = 0;
99-
if(TaskMode.RECOMPILE.isAvailable(mcp, mcp.getSide())) {
100-
response = JOptionPane.showConfirmDialog(this, "Are you sure you want to delete sources and decompile again?", "Confirm Action", JOptionPane.YES_NO_OPTION);
101-
}
102-
if(response == 0) {
103-
mcp.performTask(TaskMode.DECOMPILE, mcp.getSide());
104-
}
105-
});
106-
button = new TaskButton(this, task, defaultActionListener);
107-
}
108-
else if(task == TaskMode.UPDATE_MD5) {
109-
ActionListener defaultActionListener = event -> operateOnThread(() -> {
110-
int response = JOptionPane.showConfirmDialog(this, "Are you sure you want to regenerate original hashes?", "Confirm Action", JOptionPane.YES_NO_OPTION);
111-
if(response == 0) {
112-
mcp.performTask(task, mcp.getSide());
113-
}
114-
});
115-
button = new TaskButton(this, task, defaultActionListener);
116-
}
117-
else {
118-
button = new TaskButton(this, task);
119-
}
120-
button.setPreferredSize(new Dimension(110, 30));
99+
TaskButton button = mcp.getButton(task);
121100
buttons.add(button);
122-
button.setEnabled(false);
123101
topLeftContainer.add(button);
124102
}
125103

@@ -160,8 +138,8 @@ else if(task == TaskMode.UPDATE_MD5) {
160138

161139
public void reloadVersionList() {
162140

163-
this.verLabel = new JLabel("Current version:");
164-
this.verList = new JComboBox<>(new String[] {"Loading..."});
141+
verLabel = new JLabel("Current version:");
142+
verList = new JComboBox<>(new String[] {"Loading..."});
165143
verLabel.setEnabled(false);
166144
verList.setEnabled(false);
167145
topRightContainer.removeAll();
@@ -170,8 +148,8 @@ public void reloadVersionList() {
170148
operateOnThread(() -> {
171149
try {
172150
loadingVersions = true;
173-
this.verList = new JComboBox<>(VersionsParser.getVersionList().toArray(new String[0]));
174-
this.verList.addPopupMenuListener(new PopupMenuListener() {
151+
verList = new JComboBox<>(VersionsParser.getVersionList().toArray(new String[0]));
152+
verList.addPopupMenuListener(new PopupMenuListener() {
175153

176154
@Override
177155
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
@@ -201,31 +179,34 @@ public void popupMenuCanceled(PopupMenuEvent e) {
201179

202180
});
203181
if(Files.exists(MCPPaths.get(mcp, MCPPaths.VERSION))) {
204-
setCurrentVersion(mcp.currentVersion = VersionsParser.setCurrentVersion(mcp, new String(Files.readAllBytes(MCPPaths.get(mcp, MCPPaths.VERSION)))));
182+
setCurrentVersion(VersionsParser.setCurrentVersion(mcp, new String(Files.readAllBytes(MCPPaths.get(mcp, MCPPaths.VERSION)))));
205183
}
206184
else {
207-
setCurrentVersion(mcp.currentVersion = null);
185+
setCurrentVersion(null);
208186
}
209-
this.verList.setMaximumRowCount(20);
210-
this.verLabel = new JLabel("Current version:");
211-
topRightContainer.removeAll();
212-
topRightContainer.add(this.verLabel);
213-
topRightContainer.add(this.verList);
187+
verList.setMaximumRowCount(20);
188+
verLabel = new JLabel("Current version:");
214189
} catch (Exception e) {
215190
verLabel = new JLabel("Unable to get version list!");
216191
verLabel.setBorder(new EmptyBorder(4, 0, 0, 2));
217192
verLabel.setForeground(Color.RED);
218-
topRightContainer.removeAll();
219-
topRightContainer.add(verLabel);
193+
verList = null;
220194
}
221-
loadingVersions = false;
222-
synchronized (mcp) {
223-
if(mcp.isActive) {
224-
if(verList != null) verList.setEnabled(true);
225-
verLabel.setEnabled(true);
195+
SwingUtilities.invokeLater(() -> {
196+
topRightContainer.removeAll();
197+
topRightContainer.add(this.verLabel);
198+
if(verList != null) {
199+
topRightContainer.add(this.verList);
226200
}
227-
}
228-
topRightContainer.updateUI();
201+
loadingVersions = false;
202+
synchronized (mcp) {
203+
if(mcp.isActive) {
204+
if(verList != null) verList.setEnabled(true);
205+
verLabel.setEnabled(true);
206+
}
207+
}
208+
topRightContainer.updateUI();
209+
});
229210
});
230211
}
231212

@@ -247,6 +228,7 @@ public void setAllButtonsInactive() {
247228
}
248229

249230
public void setCurrentVersion(String version) {
231+
mcp.currentVersion = version;
250232
verList.setSelectedItem(version);
251233
verList.repaint();
252234
}

src/main/java/org/mcphackers/mcp/gui/MenuBar.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public MenuBar(MCPFrame frame) {
4545
mcp = frame.mcp;
4646
this.menuOptions.setMnemonic(KeyEvent.VK_O);
4747
this.helpMenu.setMnemonic(KeyEvent.VK_H);
48+
this.mcpMenu.setMnemonic(KeyEvent.VK_M);
4849
initOptions();
4950
JMenuItem update = new JMenuItem("Check for updates");
5051
update.addActionListener(a -> operateOnThread(() -> mcp.performTask(TaskMode.UPDATE_MCP, Side.ANY, false)));

src/main/java/org/mcphackers/mcp/gui/TaskButton.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,32 @@
66

77
import javax.swing.JButton;
88

9-
import org.mcphackers.mcp.main.MainGUI;
9+
import org.mcphackers.mcp.MCP;
1010
import org.mcphackers.mcp.tasks.mode.TaskMode;
1111

1212
public class TaskButton extends JButton {
1313
private TaskMode linkedTask;
14-
private MCPFrame frame;
14+
private MCP mcp;
1515

16-
public TaskButton(MCPFrame owner, TaskMode task) {
16+
public TaskButton(MCP owner, TaskMode task) {
1717
super(task.getFullName());
1818
linkedTask = task;
19-
frame = owner;
20-
addActionListener(performTask(frame.mcp, linkedTask));
19+
mcp = owner;
20+
addActionListener(performTask(mcp, linkedTask));
2121
}
2222

23-
public TaskButton(MCPFrame owner, TaskMode task, ActionListener defaultActionListener) {
23+
public TaskButton(MCP owner, TaskMode task, ActionListener defaultActionListener) {
2424
super(task.getFullName());
2525
linkedTask = task;
26-
frame = owner;
26+
mcp = owner;
2727
addActionListener(defaultActionListener);
2828
}
2929

30-
public static ActionListener performTask(MainGUI mcp, TaskMode mode) {
30+
public static ActionListener performTask(MCP mcp, TaskMode mode) {
3131
return event -> operateOnThread(() -> mcp.performTask(mode, mcp.getOptions().side));
3232
}
3333

3434
public boolean getEnabled() {
35-
return linkedTask.isAvailable(frame.mcp, frame.mcp.getOptions().side);
35+
return linkedTask.isAvailable(mcp, mcp.getOptions().side);
3636
}
3737
}

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

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package org.mcphackers.mcp.main;
22

3+
import static org.mcphackers.mcp.tools.Util.operateOnThread;
4+
35
import java.awt.BorderLayout;
6+
import java.awt.Dimension;
47
import java.awt.Font;
8+
import java.awt.event.ActionListener;
59
import java.nio.file.InvalidPathException;
610
import java.nio.file.Path;
711
import java.nio.file.Paths;
@@ -20,11 +24,11 @@
2024
import org.mcphackers.mcp.MCPPaths;
2125
import org.mcphackers.mcp.Options;
2226
import org.mcphackers.mcp.gui.MCPFrame;
27+
import org.mcphackers.mcp.gui.TaskButton;
2328
import org.mcphackers.mcp.tasks.Task;
2429
import org.mcphackers.mcp.tasks.Task.Side;
2530
import org.mcphackers.mcp.tasks.mode.TaskMode;
2631

27-
2832
public class MainGUI extends MCP {
2933
public String currentVersion;
3034
public Path workingDir;
@@ -105,15 +109,18 @@ public void setProgress(int side, int progress) {
105109

106110
@Override
107111
public boolean yesNoInput(String title, String msg) {
112+
//frame.setExtendedState(Frame.NORMAL);
108113
return JOptionPane.showConfirmDialog(frame, msg, title, JOptionPane.YES_NO_OPTION) == 0;
109114
}
110115

111116
@Override
112117
public String inputString(String title, String msg) {
118+
//frame.setExtendedState(Frame.NORMAL);
113119
return JOptionPane.showInputDialog(frame, msg, title, JOptionPane.PLAIN_MESSAGE);
114120
}
115121

116122
public void showMessage(String title, String msg, int type) {
123+
//frame.setExtendedState(Frame.NORMAL);
117124
switch (type) {
118125
case Task.INFO:
119126
type = JOptionPane.INFORMATION_MESSAGE;
@@ -179,4 +186,35 @@ else if(line.startsWith(" -"))
179186
outer.add(label, BorderLayout.SOUTH);
180187
return JOptionPane.showConfirmDialog(frame, outer, "New version found: " + version, JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE) == 0;
181188
}
189+
190+
public TaskButton getButton(TaskMode task) {
191+
TaskButton button;
192+
if(task == TaskMode.DECOMPILE) {
193+
ActionListener defaultActionListener = event -> operateOnThread(() -> {
194+
int response = 0;
195+
if(TaskMode.RECOMPILE.isAvailable(this, getSide())) {
196+
response = JOptionPane.showConfirmDialog(frame, "Are you sure you want to delete sources and decompile again?", "Confirm Action", JOptionPane.YES_NO_OPTION);
197+
}
198+
if(response == 0) {
199+
performTask(TaskMode.DECOMPILE, getSide());
200+
}
201+
});
202+
button = new TaskButton(this, task, defaultActionListener);
203+
}
204+
else if(task == TaskMode.UPDATE_MD5) {
205+
ActionListener defaultActionListener = event -> operateOnThread(() -> {
206+
int response = JOptionPane.showConfirmDialog(frame, "Are you sure you want to regenerate original hashes?", "Confirm Action", JOptionPane.YES_NO_OPTION);
207+
if(response == 0) {
208+
performTask(task, getSide());
209+
}
210+
});
211+
button = new TaskButton(this, task, defaultActionListener);
212+
}
213+
else {
214+
button = new TaskButton(this, task);
215+
}
216+
button.setPreferredSize(new Dimension(110, 30));
217+
button.setEnabled(false);
218+
return button;
219+
}
182220
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
public class TaskRun extends Task {
1919

20+
//TODO can only have one Start and it's the client one
2021
public static final String[] CLIENT_START = {
2122
"Start",
2223
"net.minecraft.client.Minecraft",
@@ -25,7 +26,6 @@ public class TaskRun extends Task {
2526
};
2627

2728
public static final String[] SERVER_START = {
28-
"Start",
2929
"net.minecraft.server.MinecraftServer",
3030
"com.mojang.minecraft.server.MinecraftServer"
3131
};

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ public void doTask() throws Exception {
4141
String value = null;
4242
try (FileSystem fs = FileSystems.newFileSystem(jar, (ClassLoader)null)) {
4343
Path meta = fs.getPath("/").resolve("META-INF/MANIFEST.MF");
44-
if(Files.exists(meta)) {
45-
value = Files.getLastModifiedTime(meta).toInstant().toString();
46-
}
44+
if(Files.exists(meta)) {
45+
value = Files.getLastModifiedTime(meta).toInstant().toString();
46+
}
4747
}
4848
if(value != null) {
4949
VersionsParser.json.getJSONObject(ver).put(time, value);

src/main/java/org/mcphackers/mcp/tools/VersionsParser.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ public static URL downloadVersion(String version) throws Exception {
128128
public static String setCurrentVersion(MCP mcp, String version) throws Exception {
129129
checkJson();
130130
if(!json.has(version)) {
131-
throw new Exception("Invalid version detected!");
131+
return null;
132+
//throw new Exception("Invalid version detected!");
132133
}
133134
try(BufferedWriter writer = Files.newBufferedWriter(MCPPaths.get(mcp, MCPPaths.VERSION))) {
134135
writer.write(version);

0 commit comments

Comments
 (0)