From 04a9ee4c3fcad7836ab2fd30555ce515766f427c Mon Sep 17 00:00:00 2001 From: shanebeee Date: Mon, 30 Sep 2024 13:37:53 -0700 Subject: [PATCH] Version - make release type an object --- .../com/shanebeestudios/mcdeob/McDeob.java | 18 +++++++- .../com/shanebeestudios/mcdeob/Version.java | 42 +++++++++++++++---- .../com/shanebeestudios/mcdeob/app/App.java | 10 ++--- 3 files changed, 54 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/shanebeestudios/mcdeob/McDeob.java b/src/main/java/com/shanebeestudios/mcdeob/McDeob.java index ed0ee21..a7a509c 100644 --- a/src/main/java/com/shanebeestudios/mcdeob/McDeob.java +++ b/src/main/java/com/shanebeestudios/mcdeob/McDeob.java @@ -34,6 +34,8 @@ public static void main(String[] args) { OptionParser parser = new OptionParser(); parser.accepts("help", "Shows help and exits"); parser.accepts("versions", "Prints a list of all Minecraft versions available to deobfuscate"); + parser.accepts("releases", "Prints a list of all Minecraft full releases available to deobfuscate"); + parser.accepts("snapshots", "Prints a list of all Minecraft snapshots available to deobfuscate"); parser.accepts("version", "Minecraft version for which we're deobfuscating") .withRequiredArg() .ofType(String.class); @@ -56,7 +58,21 @@ public static void main(String[] args) { Version.initVersions(); if (options.has("versions")) { System.out.println("Available Minecraft versions to deobfuscate:"); - for (Version version : Version.getVersions()) { + for (Version version : Version.getAllVersions()) { + System.out.println(" - " + version.getVersion() + " (" + version.getReleaseType().getName() + ")"); + } + System.exit(0); + } + if (options.has("releases")) { + System.out.println("Available Minecraft full releases to deobfuscate:"); + for (Version version : Version.getReleaseVersions()) { + System.out.println(" - " + version.getVersion()); + } + System.exit(0); + } + if (options.has("snapshots")) { + System.out.println("Available Minecraft snapshots to deobfuscate:"); + for (Version version : Version.getSnapshotVersions()) { System.out.println(" - " + version.getVersion()); } System.exit(0); diff --git a/src/main/java/com/shanebeestudios/mcdeob/Version.java b/src/main/java/com/shanebeestudios/mcdeob/Version.java index cb36a27..36277bb 100644 --- a/src/main/java/com/shanebeestudios/mcdeob/Version.java +++ b/src/main/java/com/shanebeestudios/mcdeob/Version.java @@ -14,6 +14,8 @@ public class Version { // Static Stuff private static final Map VERSION_MAP = new LinkedHashMap<>(); + private static final Map RELEASE_MAP = new LinkedHashMap<>(); + private static final Map SNAPSHOT_MAP = new LinkedHashMap<>(); public static void initVersions() { JSONObject versionManifest; @@ -25,23 +27,38 @@ public static void initVersions() { for (Object o : versionManifest.getJSONArray("versions")) { JSONObject versionObject = (JSONObject) o; - String version = versionObject.getString("id"); - String releaseType = versionObject.getString("type"); + String id = versionObject.getString("id"); + String type = versionObject.getString("type"); String url = versionObject.getString("url"); - VERSION_MAP.put(version, new Version(version, releaseType, url)); + ReleaseType releaseType = type.equalsIgnoreCase("release") ? ReleaseType.RELEASE : ReleaseType.SNAPSHOT; + Version version = new Version(id, releaseType, url); + VERSION_MAP.put(id, version); + if (releaseType == ReleaseType.RELEASE) { + RELEASE_MAP.put(id, version); + } else { + SNAPSHOT_MAP.put(id, version); + } // Mappings not available before 1.14.4, so we exit - if (version.equalsIgnoreCase("1.14.4")) { + if (id.equalsIgnoreCase("1.14.4")) { break; } } } - public static Collection getVersions() { + public static Collection getAllVersions() { return VERSION_MAP.values(); } + public static Collection getReleaseVersions() { + return RELEASE_MAP.values(); + } + + public static Collection getSnapshotVersions() { + return SNAPSHOT_MAP.values(); + } + @Nullable public static Version getByVersion(String version) { return VERSION_MAP.get(version); @@ -49,14 +66,14 @@ public static Version getByVersion(String version) { // Class Stuff private final String version; - private final String releaseType; + private final ReleaseType releaseType; private final String url; private Type type; private String jarURL; private String mapURL; - public Version(String version, String releaseType, String url) { + public Version(String version, ReleaseType releaseType, String url) { this.version = version; this.releaseType = releaseType; this.url = url; @@ -82,7 +99,7 @@ public String getVersion() { return this.version; } - public String getReleaseType() { + public ReleaseType getReleaseType() { return this.releaseType; } @@ -111,4 +128,13 @@ public String getName() { } } + public enum ReleaseType { + RELEASE, + SNAPSHOT; + + public String getName() { + return name().toLowerCase(Locale.ROOT); + } + } + } diff --git a/src/main/java/com/shanebeestudios/mcdeob/app/App.java b/src/main/java/com/shanebeestudios/mcdeob/app/App.java index c56c8f9..a5b37fd 100644 --- a/src/main/java/com/shanebeestudios/mcdeob/app/App.java +++ b/src/main/java/com/shanebeestudios/mcdeob/app/App.java @@ -108,16 +108,13 @@ private void createTypeButton() { private void setupVersions(boolean showSnapshots) { this.versionBox.removeAllItems(); - for (Version version : Version.getVersions()) { - if (version.getReleaseType().equalsIgnoreCase("snapshot") && !showSnapshots) continue; - else if (version.getReleaseType().equalsIgnoreCase("release") && showSnapshots) continue; - this.versionBox.addItem(version.getVersion().replace("_", " ")); + for (Version version : showSnapshots ? Version.getSnapshotVersions() : Version.getReleaseVersions()) { + this.versionBox.addItem(version.getVersion()); } } private void createVersionPopup() { this.versionBox = new JComboBox<>(); - //setupVersions(false); this.versionBox.addItem("Initializing Versions"); this.versionBox.setSelectedIndex(0); this.versionBox.setBackground(Color.lightGray); @@ -227,11 +224,10 @@ public void componentResized(ComponentEvent e) { class StartButtonListener implements ActionListener { - @SuppressWarnings("DataFlowIssue") @Override public void actionPerformed(ActionEvent event) { if (event.getSource() == startButton) { - Version version = Version.getByVersion(((String) versionBox.getSelectedItem()).replace(" ", "_")); + Version version = Version.getByVersion(((String) versionBox.getSelectedItem())); if (!startButton.getText().equalsIgnoreCase("Start!")) return; if (version == null) { fail();