diff --git a/src/main/kotlin/MainWindow.kt b/src/main/kotlin/MainWindow.kt
index 4757dfa..f215f08 100644
--- a/src/main/kotlin/MainWindow.kt
+++ b/src/main/kotlin/MainWindow.kt
@@ -1,4 +1,5 @@
import com.sun.java.accessibility.util.AWTEventMonitor
+import jvmwarn.JVMVersionWarning
import launcherupdate.LauncherUpdateNotification
import settingseditor.Json
import settingseditor.SettingsWindow
@@ -229,12 +230,18 @@ object MainWindow : JFrame("2009scape Launcher") {
Json.parse()
val t = Thread {
if(Settings.CHECK_FOR_UPDATES) {
+ val javaVersion = System.getProperty("java.specification.version")
+ if (!javaVersion.startsWith("1.8") && !javaVersion.startsWith("11"))
+ {
+ JVMVersionWarning.open()
+ return@Thread
+ }
Updater.checkLauncherUpdate()
while (Updater.launcherStatus == Updater.UpdateStatus.CHECKING) {
Thread.sleep(100L)
}
if (Updater.launcherLocalMD5 != Updater.launcherRemoteMD5) {
- System.out.println("Trying to open")
+ println("Trying to open")
LauncherUpdateNotification.open()
}
}
diff --git a/src/main/kotlin/jvmwarn/JVMVersionWarning.kt b/src/main/kotlin/jvmwarn/JVMVersionWarning.kt
new file mode 100644
index 0000000..5a7d48d
--- /dev/null
+++ b/src/main/kotlin/jvmwarn/JVMVersionWarning.kt
@@ -0,0 +1,96 @@
+package jvmwarn
+
+import Checkbox
+import ImgButton
+import settingseditor.Json
+import java.awt.*
+import java.net.URI
+import javax.swing.JFrame
+import javax.swing.JLabel
+import javax.swing.JPanel
+import javax.swing.JSeparator
+import kotlin.system.exitProcess
+
+object JVMVersionWarning : JFrame() {
+ init {
+ isUndecorated = true
+ isVisible = false
+ isResizable = false
+ defaultCloseOperation = HIDE_ON_CLOSE
+ isAutoRequestFocus = true
+ isAlwaysOnTop = true
+ preferredSize = Dimension(250,150)
+ size = Dimension(250,150)
+ layout = BorderLayout()
+ setLocationRelativeTo(null)
+
+ val textArea = getDarkPanel(BorderLayout())
+ val label = getLabel("
Unsupported Java version!
Requires: Java 8 or 11.
Would you like to be taken to the download page for OpenJDK 11?
")
+ textArea.add(label, BorderLayout.NORTH)
+ add(textArea, BorderLayout.CENTER)
+
+
+ val buttons = getThemedPanel(BorderLayout())
+ val yesButton = ImgButton("/save_hi.png")
+ yesButton.onClick {
+ val osName = System.getProperty("os.name").toLowerCase()
+ val url = if(osName.contains("win"))
+ {
+ "https://api.adoptium.net/v3/installer/latest/11/ga/windows/x64/jre/hotspot/normal/eclipse?project=jdk"
+ }
+ else if(osName.contains("lin"))
+ {
+ "https://api.adoptium.net/v3/binary/latest/11/ga/linux/x64/jre/hotspot/normal/eclipse?project=jdk"
+ }
+ else "https://adoptium.net/temurin/releases"
+
+ if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
+ Desktop.getDesktop().browse(URI(url));
+ }
+
+ exitProcess(0)
+ }
+
+ val noButton = ImgButton("/update_no.png")
+ noButton.onClick {
+ isVisible = false
+ MainWindow.isEnabled = true
+ }
+
+ buttons.add(getSeparator(), BorderLayout.NORTH)
+ buttons.add(yesButton, BorderLayout.WEST)
+ buttons.add(noButton, BorderLayout.EAST)
+ add(buttons, BorderLayout.SOUTH)
+ pack()
+ }
+
+ fun getThemedPanel(layout: LayoutManager? = null): JPanel {
+ val panel = if(layout == null) JPanel() else JPanel(layout)
+ panel.background = Color(102,90,69)
+ return panel
+ }
+
+ fun getDarkPanel(layout: LayoutManager? = null): JPanel {
+ val panel = if(layout == null) JPanel() else JPanel(layout)
+ panel.background = Color(82,73,51)
+ return panel
+ }
+
+ fun getSeparator(): JSeparator {
+ val sep = JSeparator(JSeparator.HORIZONTAL)
+ sep.background = Color(57,49,39)
+ sep.foreground = Color(57,49,39)
+ return sep
+ }
+
+ fun getLabel(text: String): JLabel {
+ val label = JLabel(text)
+ label.foreground = Color(227,208,179)
+ return label
+ }
+
+ fun open() {
+ isVisible = true
+ MainWindow.isEnabled = false
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/settingseditor/Json.kt b/src/main/kotlin/settingseditor/Json.kt
index d057c02..7c5ee38 100644
--- a/src/main/kotlin/settingseditor/Json.kt
+++ b/src/main/kotlin/settingseditor/Json.kt
@@ -136,7 +136,8 @@ object Json {
{
"play.2009scape.org" -> 0
"test.2009scape.org" -> 1
- else -> 2
+ "localhost" -> 2
+ else -> 0 //live
}
} catch (e: Exception) {
println("error parsing settings, replacing with defaults...")