diff --git a/buildapp/instructions.md b/buildapp/instructions.md index 5f736a8f8..238abb4cf 100644 --- a/buildapp/instructions.md +++ b/buildapp/instructions.md @@ -15,11 +15,11 @@ The filenames must be: Then, on the terminal, run following commands: ``` -jlink --module-path ~/Documents/openjdk/jdk-17.0.1-x86/jmods:mods --add-modules java.base,java.desktop,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-linux-x86 --no-header-files --no-man-pages --strip-debug --compress=2 -jlink --module-path ~/Documents/openjdk/jdk-17.0.1-arm/jmods:mods --add-modules java.base,java.desktop,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-linux-arm --no-header-files --no-man-pages --strip-debug --compress=2 -jlink --module-path ~/Documents/openjdk/jdk-17.0.1-windows/jmods:mods --add-modules java.base,java.desktop,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-windows-x86 --no-header-files --no-man-pages --strip-debug --compress=2 -jlink --module-path ~/Documents/openjdk/jdk-17.0.1.jdk-arm/Contents/Home/jmods:mods --add-modules java.base,java.desktop,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-osx-arm --no-header-files --no-man-pages --strip-debug --compress=2 -jlink --module-path ~/Documents/openjdk/jdk-17.0.1.jdk-x86/Contents/Home/jmods:mods --add-modules java.base,java.desktop,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-osx-x86 --no-header-files --no-man-pages --strip-debug --compress=2 +jlink --module-path ~/Documents/openjdk/jdk-17.0.1-x86/jmods:mods --add-modules java.base,java.desktop,java.net.http,jdk.crypto.ec,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-linux-x86 --no-header-files --no-man-pages --strip-debug --compress=2 +jlink --module-path ~/Documents/openjdk/jdk-17.0.1-arm/jmods:mods --add-modules java.base,java.desktop,java.net.http,jdk.crypto.ec,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-linux-arm --no-header-files --no-man-pages --strip-debug --compress=2 +jlink --module-path ~/Documents/openjdk/jdk-17.0.1-windows/jmods:mods --add-modules java.base,java.desktop,java.net.http,jdk.crypto.ec,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-windows-x86 --no-header-files --no-man-pages --strip-debug --compress=2 +jlink --module-path ~/Documents/openjdk/jdk-17.0.1.jdk-arm/Contents/Home/jmods:mods --add-modules java.base,java.desktop,java.net.http,jdk.crypto.ec,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-osx-arm --no-header-files --no-man-pages --strip-debug --compress=2 +jlink --module-path ~/Documents/openjdk/jdk-17.0.1.jdk-x86/Contents/Home/jmods:mods --add-modules java.base,java.desktop,java.net.http,jdk.crypto.ec,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-osx-x86 --no-header-files --no-man-pages --strip-debug --compress=2 ``` (note: matching the building machine with the target OS is highly recommended -- Use Linux for building linux x86/arm; Mac for building macOS x86/arm; Windows for building Windows Java Runtime) diff --git a/src/net/torvald/terrarum/App.java b/src/net/torvald/terrarum/App.java index cfabd7061..b54f165d5 100644 --- a/src/net/torvald/terrarum/App.java +++ b/src/net/torvald/terrarum/App.java @@ -1,11 +1,9 @@ package net.torvald.terrarum; import com.badlogic.gdx.*; -import com.badlogic.gdx.Graphics; import com.badlogic.gdx.audio.AudioDevice; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; -import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Graphics; import com.badlogic.gdx.controllers.Controllers; import com.badlogic.gdx.graphics.*; import com.badlogic.gdx.graphics.Color; @@ -32,7 +30,6 @@ import net.torvald.terrarum.langpack.Lang; import net.torvald.terrarum.modulebasegame.IngameRenderer; import net.torvald.terrarum.modulebasegame.TerrarumIngame; import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory; -import net.torvald.terrarum.serialise.Common; import net.torvald.terrarum.serialise.WriteConfig; import net.torvald.terrarum.ui.Toolkit; import net.torvald.terrarum.utils.JsonFetcher; @@ -44,7 +41,6 @@ import net.torvald.unsafe.DanglingPointerException; import net.torvald.unsafe.UnsafeHelper; import net.torvald.util.DebugTimers; -import java.awt.*; import java.io.File; import java.io.FileWriter; import java.io.IOException; @@ -327,6 +323,8 @@ public class App implements ApplicationListener { public static long bogoflops = 0L; private static double bogoflopf = Math.random(); + public static boolean hasUpdate = true; + public static Screen getCurrentScreen() { return currentScreen; } @@ -1115,6 +1113,10 @@ public class App implements ApplicationListener { } + hasUpdate = CheckUpdate.INSTANCE.hasUpdate(); + printdbg(this, "Has update: " + hasUpdate); + + printdbg(this, "PostInit done"); } diff --git a/src/net/torvald/terrarum/CheckUpdate.kt b/src/net/torvald/terrarum/CheckUpdate.kt new file mode 100644 index 000000000..f6aabc37b --- /dev/null +++ b/src/net/torvald/terrarum/CheckUpdate.kt @@ -0,0 +1,70 @@ +package net.torvald.terrarum + +import net.torvald.terrarum.App.printdbg +import net.torvald.terrarum.App.printdbgerr +import net.torvald.terrarum.savegame.ByteArray64GrowableOutputStream +import net.torvald.terrarum.savegame.DiskSkimmer.Companion.read +import java.io.* +import java.net.MalformedURLException +import java.net.URI +import java.net.URL +import java.net.http.HttpClient +import java.net.http.HttpRequest +import java.net.http.HttpResponse + +/** + * Created by minjaesong on 2023-10-03. + */ +object CheckUpdate { + + private val versionNumFull = App.getVERSION_STRING() + private val versionNumOnly = String.format( + "%d.%d.%d", + App.VERSION_RAW ushr 48, + App.VERSION_RAW and 0xffff000000L ushr 24, + App.VERSION_RAW and 0xffffffL + ) + + private val checkUpdateURL = setOf( + "https://github.com/curioustorvald/Terrarum/releases/tag/v$versionNumOnly", + "https://github.com/curioustorvald/Terrarum/releases/tag/v$versionNumFull", + ).toList() + + private fun wget(url: String): String? { + printdbg(this, "wget $url") + + var ret: String? = null + var fail: Throwable? = null + try { + // check the http connection before we do anything to the fs + val client = HttpClient.newBuilder().build() + val request = HttpRequest.newBuilder().uri(URI.create(url)).build() + val response = client.send(request, HttpResponse.BodyHandlers.ofString()) + ret = if (response.statusCode() >= 400) null else response.body() + + printdbg(this, "HTTP ${response.statusCode()}") + } + catch (e: Throwable) { + fail = e + printdbgerr(this, "wget $url got error: ${e.stackTraceToString()}") + } + finally { + } + + return ret + } + + fun hasUpdate(): Boolean { + var allNull = true + + val hasLatestAny = checkUpdateURL.any { url -> + val http = wget(url) + if (http != null) allNull = false + http?.contains("a href=\"/curioustorvald/Terrarum/releases/latest") ?: false + } + + return if (allNull) false else !hasLatestAny + } + + +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/Principii.java b/src/net/torvald/terrarum/Principii.java index 3d40fe41c..486b9146f 100644 --- a/src/net/torvald/terrarum/Principii.java +++ b/src/net/torvald/terrarum/Principii.java @@ -111,6 +111,8 @@ public class Principii { cmd0.add(runtime); cmd0.addAll(extracmds); cmd0.addAll(userDefinedExtraCmds); +// cmd0.add("-Dhttps.protocols=SSLv3,TLSv1.2,TLSv1.1,TLSv1"); +// cmd0.add("-Djavax.net.debug=ssl:handshake:verbose"); cmd0.add("-Xms1G"); cmd0.add("-Xmx"+xmx+"G"); cmd0.add("-cp");