diff --git a/src/main/java/net/raphimc/viaproxy/cli/options/VersionEnumConverter.java b/src/main/java/net/raphimc/viaproxy/cli/options/VersionEnumConverter.java index fdd4bff..f21127e 100644 --- a/src/main/java/net/raphimc/viaproxy/cli/options/VersionEnumConverter.java +++ b/src/main/java/net/raphimc/viaproxy/cli/options/VersionEnumConverter.java @@ -25,14 +25,12 @@ public class VersionEnumConverter implements ValueConverter { @Override public VersionEnum convert(String s) { - for (VersionEnum version : VersionEnum.getAllVersions()) { - if (version.getName().equalsIgnoreCase(s)) return version; - } - for (VersionEnum version : VersionEnum.getAllVersions()) { - if (version.getProtocol().getIncludedVersions().contains(s)) return version; + final VersionEnum version = VersionEnum.fromProtocolName(s); + if (version == VersionEnum.UNKNOWN) { + throw new ValueConversionException("Unable to find version '" + s + "'"); } - throw new ValueConversionException("Unable to find version '" + s + "'"); + return version; } @Override diff --git a/src/main/java/net/raphimc/viaproxy/saves/impl/UISave.java b/src/main/java/net/raphimc/viaproxy/saves/impl/UISave.java index d4d8e35..b73e8d8 100644 --- a/src/main/java/net/raphimc/viaproxy/saves/impl/UISave.java +++ b/src/main/java/net/raphimc/viaproxy/saves/impl/UISave.java @@ -19,6 +19,7 @@ package net.raphimc.viaproxy.saves.impl; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import net.raphimc.vialoader.util.VersionEnum; import net.raphimc.viaproxy.saves.AbstractSave; import javax.swing.*; @@ -76,6 +77,17 @@ public class UISave extends AbstractSave { } } + public void loadComboBoxVersionEnum(final String key, final JComboBox comboBox) { + if (this.values.containsKey(key)) { + try { + String value = String.valueOf(this.values.get(key)); + VersionEnum version = VersionEnum.valueOf(value); + comboBox.setSelectedItem(version); + } catch (Throwable ignored) { + } + } + } + public void loadSpinner(final String key, final JSpinner spinner) { if (this.values.containsKey(key)) { try { diff --git a/src/main/java/net/raphimc/viaproxy/ui/impl/GeneralTab.java b/src/main/java/net/raphimc/viaproxy/ui/impl/GeneralTab.java index d7d4eda..0810097 100644 --- a/src/main/java/net/raphimc/viaproxy/ui/impl/GeneralTab.java +++ b/src/main/java/net/raphimc/viaproxy/ui/impl/GeneralTab.java @@ -134,7 +134,7 @@ public class GeneralTab extends AUITab { this.betaCraftAuth.setSelected(false); } }); - ViaProxy.getSaveManager().uiSave.loadComboBox("server_version", this.serverVersion); + ViaProxy.getSaveManager().uiSave.loadComboBoxVersionEnum("server_version", this.serverVersion); GBC.create(body).grid(0, gridy++).weightx(1).insets(0, BORDER_PADDING, 0, BORDER_PADDING).fill(GridBagConstraints.HORIZONTAL).add(this.serverVersion); } { @@ -191,7 +191,9 @@ public class GeneralTab extends AUITab { private void onClose(final UICloseEvent event) { UISave save = ViaProxy.getSaveManager().uiSave; save.put("server_address", this.serverAddress.getText()); - save.put("server_version", String.valueOf(this.serverVersion.getSelectedIndex())); + if (this.serverVersion.getSelectedItem() instanceof VersionEnum version) { + save.put("server_version", version.name()); + } save.put("auth_method", String.valueOf(this.authMethod.getSelectedIndex())); save.put("betacraft_auth", String.valueOf(this.betaCraftAuth.isSelected())); ViaProxy.getSaveManager().save(); @@ -218,8 +220,8 @@ public class GeneralTab extends AUITab { } private void start() { - final Object selectedItem = this.serverVersion.getSelectedItem(); - if (!(selectedItem instanceof VersionEnum)) { + final Object selectedVersion = this.serverVersion.getSelectedItem(); + if (!(selectedVersion instanceof VersionEnum)) { this.frame.showError(I18n.get("tab.general.error.no_server_version_selected")); return; } @@ -229,7 +231,7 @@ public class GeneralTab extends AUITab { this.frame.showWarning("
" + I18n.get("tab.general.warning.ban_warning.line1") + "
" + I18n.get("tab.general.warning.risk") + "
"); } - if (VersionEnum.bedrockLatest.equals(selectedItem) && ViaProxy.getSaveManager().uiSave.get("notice.bedrock_warning") == null) { + if (VersionEnum.bedrockLatest.equals(selectedVersion) && ViaProxy.getSaveManager().uiSave.get("notice.bedrock_warning") == null) { ViaProxy.getSaveManager().uiSave.put("notice.bedrock_warning", "true"); ViaProxy.getSaveManager().save();