From b9a8e0ff938ada437f1a31b219f55cc02718ca7f Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Mon, 7 Oct 2024 13:26:26 +0200 Subject: [PATCH 1/3] added more checks to /shdebug --- src/main/java/SkyHanniInstallerFrame.java | 1 + .../at/hannibal2/skyhanni/data/HypixelData.kt | 5 + .../tweaker/DownloadSourceChecker.java | 4 +- .../skyhanni/tweaker/TweakerUtils.java | 4 - .../skyhanni/utils/ComputerEnvDebug.kt | 107 ++++++++++++++++++ .../skyhanni/utils/ComputerTimeOffset.kt | 11 +- .../at/hannibal2/skyhanni/utils/OSUtils.kt | 30 ++++- 7 files changed, 150 insertions(+), 12 deletions(-) create mode 100644 src/main/java/at/hannibal2/skyhanni/utils/ComputerEnvDebug.kt diff --git a/src/main/java/SkyHanniInstallerFrame.java b/src/main/java/SkyHanniInstallerFrame.java index 57f586212e00..2ed6ee92917e 100644 --- a/src/main/java/SkyHanniInstallerFrame.java +++ b/src/main/java/SkyHanniInstallerFrame.java @@ -590,6 +590,7 @@ public File getFile(String userHome, String minecraftPath) { } public OperatingSystem getOperatingSystem() { + String osName = System.getProperty("os.name").toLowerCase(Locale.US); if (osName.contains("win")) { return OperatingSystem.WINDOWS; diff --git a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt index f34dafb3b95c..3707d10af0a7 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt @@ -195,6 +195,11 @@ object HypixelData { @SubscribeEvent fun onDebugDataCollect(event: DebugDataCollectEvent) { event.title("Server ID") + if (!LorenzUtils.inSkyBlock) { + event.addIrrelevant("not in sb") + return + } + val id = serverId if (id == null) { event.addData { diff --git a/src/main/java/at/hannibal2/skyhanni/tweaker/DownloadSourceChecker.java b/src/main/java/at/hannibal2/skyhanni/tweaker/DownloadSourceChecker.java index 2c417909e6a2..7947b6ebc9e1 100644 --- a/src/main/java/at/hannibal2/skyhanni/tweaker/DownloadSourceChecker.java +++ b/src/main/java/at/hannibal2/skyhanni/tweaker/DownloadSourceChecker.java @@ -1,5 +1,7 @@ package at.hannibal2.skyhanni.tweaker; +import at.hannibal2.skyhanni.utils.OSUtils; + import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -32,7 +34,7 @@ public class DownloadSourceChecker { }; public static void init() { - if (!TweakerUtils.isOnWindows()) return; + if (!OSUtils.INSTANCE.isWindows()) return; URI host = getDangerousHost(); if (host != null) { openMenu(host); diff --git a/src/main/java/at/hannibal2/skyhanni/tweaker/TweakerUtils.java b/src/main/java/at/hannibal2/skyhanni/tweaker/TweakerUtils.java index b9070e0c16bb..ffd415c10133 100644 --- a/src/main/java/at/hannibal2/skyhanni/tweaker/TweakerUtils.java +++ b/src/main/java/at/hannibal2/skyhanni/tweaker/TweakerUtils.java @@ -11,10 +11,6 @@ public class TweakerUtils { - public static boolean isOnWindows() { - return System.getProperty("os.name").toLowerCase().contains("win"); - } - public static void openUrl(String url) { try { Desktop.getDesktop().browse(new URI(url)); diff --git a/src/main/java/at/hannibal2/skyhanni/utils/ComputerEnvDebug.kt b/src/main/java/at/hannibal2/skyhanni/utils/ComputerEnvDebug.kt new file mode 100644 index 000000000000..ca4eeeb71118 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/utils/ComputerEnvDebug.kt @@ -0,0 +1,107 @@ +package at.hannibal2.skyhanni.utils + +import at.hannibal2.skyhanni.events.DebugDataCollectEvent +import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule +import at.hannibal2.skyhanni.test.command.ErrorManager +import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher +import at.hannibal2.skyhanni.utils.system.PlatformUtils +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +@SkyHanniModule +object ComputerEnvDebug { + + @SubscribeEvent + fun onDebugDataCollect(event: DebugDataCollectEvent) { + os(event) + java(event) + launcher(event) + } + + private fun launcher(event: DebugDataCollectEvent) { + event.title("Computer Minecraft Launcher") + + val firstStack = getFirstStack() ?: run { + event.addData("Could not load data!") + return + } + + val (launcher, relevant) = findLauncher(firstStack) + + launcher?.let { + if (relevant) { + event.addData(it) + } else { + event.addIrrelevant(it) + } + return + } + + event.addData { + add("Unknown launcher!") + add("firstStack: '$firstStack'") + } + } + + // TODO put into repo + private fun findLauncher(firstStack: String): Pair { + if (firstStack.contains("net.fabricmc.devlaunchinjector.Main.main")) { + return Pair("Dev Env", false) + } + if (firstStack.contains("net.minecraft.launchwrapper.Launch.main")) { + return Pair("Vanilla Launcher", false) + } + if (firstStack.contains("org.prismlauncher.EntryPoint.main")) { + return Pair("Prism", false) + } + if (firstStack.contains("net.digitalingot.vendor.")) { + return Pair("Feather Client", true) + } + return Pair(null, true) + } + + private fun getFirstStack(): String? { + val firstStack = try { + Thread.currentThread().stackTrace.last().toString() + } catch (e: Exception) { + ErrorManager.logErrorWithData(e, "Failed loading current thread stack trace info") + null + } + return firstStack + } + + private fun java(event: DebugDataCollectEvent) { + event.title("Computer Java Version") + val version = System.getProperty("java.version") + val pattern = "1\\.8\\.0_(?.*)".toPattern() + pattern.matchMatcher(version) { + group("update").toIntOrNull()?.let { + val devEnvironment = PlatformUtils.isDevEnvironment + if (it < 300 && !devEnvironment) { + event.addData("Old update: $it") + } else { + if (devEnvironment) { + event.addIrrelevant("Update version: $it (dev env)") + } else { + event.addIrrelevant("New update: $it") + } + } + return + } + } + event.addData("Unknwon java version: '$version'") + } + + private fun os(event: DebugDataCollectEvent) { + event.title("Computer Operating System") + val osType = OSUtils.getOperatingSystem() + val exactName = OSUtils.getOperatingSystemRaw() + if (osType != OSUtils.OperatingSystem.UNKNOWN) { + event.addIrrelevant { + add("OS type: $osType") + add("Exact name: $exactName") + } + } else { + event.addData("Unknwon OS: '$exactName'") + } + } +} diff --git a/src/main/java/at/hannibal2/skyhanni/utils/ComputerTimeOffset.kt b/src/main/java/at/hannibal2/skyhanni/utils/ComputerTimeOffset.kt index 83ea15ecc437..c0f65645a1f3 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/ComputerTimeOffset.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/ComputerTimeOffset.kt @@ -112,11 +112,16 @@ object ComputerTimeOffset { @SubscribeEvent fun onDebugCollect(event: DebugDataCollectEvent) { event.title("Time Offset") - val relevant = offsetMillis?.absoluteValue?.let { it < 100.milliseconds } ?: true + val offset = offsetMillis ?: run { + event.addIrrelevant("not calculated yet") + return + } + + val relevant = offset.absoluteValue > 500.milliseconds if (relevant) { - event.addData(offsetMillis.toString()) + event.addData(offset.toString()) } else { - event.addIrrelevant(offsetMillis.toString()) + event.addIrrelevant(offset.toString()) } } } diff --git a/src/main/java/at/hannibal2/skyhanni/utils/OSUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/OSUtils.kt index 5b42c5dc640f..fe729ad042ca 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/OSUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/OSUtils.kt @@ -7,15 +7,37 @@ import java.net.URI object OSUtils { + enum class OperatingSystem { + LINUX, + SOLARIS, + WINDOWS, + MACOS, + UNKNOWN + } + + fun getOperatingSystemRaw(): String = System.getProperty("os.name") + + fun getOperatingSystem(): OperatingSystem { + val osName = getOperatingSystemRaw().lowercase() + return when { + osName.contains("win") -> OperatingSystem.WINDOWS + osName.contains("mac") -> OperatingSystem.MACOS + osName.contains("solaris") || osName.contains("sunos") -> OperatingSystem.SOLARIS + osName.contains("linux") || osName.contains("unix") -> OperatingSystem.LINUX + + else -> OperatingSystem.UNKNOWN + } + } + val isWindows: Boolean val isMac: Boolean val isLinux: Boolean init { - val os = System.getProperty("os.name") - isWindows = os.contains("win", ignoreCase = true) - isMac = os.contains("mac", ignoreCase = true) - isLinux = os.contains("linux", ignoreCase = true) + val os = getOperatingSystem() + isWindows = os == OperatingSystem.WINDOWS + isMac = os == OperatingSystem.MACOS + isLinux = os == OperatingSystem.LINUX } @JvmStatic From 7c158df1dab723782f2c11aedf1ac80b20c407b3 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Mon, 7 Oct 2024 13:31:23 +0200 Subject: [PATCH 2/3] formatting --- src/main/java/SkyHanniInstallerFrame.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/SkyHanniInstallerFrame.java b/src/main/java/SkyHanniInstallerFrame.java index 2ed6ee92917e..57f586212e00 100644 --- a/src/main/java/SkyHanniInstallerFrame.java +++ b/src/main/java/SkyHanniInstallerFrame.java @@ -590,7 +590,6 @@ public File getFile(String userHome, String minecraftPath) { } public OperatingSystem getOperatingSystem() { - String osName = System.getProperty("os.name").toLowerCase(Locale.US); if (osName.contains("win")) { return OperatingSystem.WINDOWS; From 11ea9446424de10feb99be39bfc66f8f0765afcf Mon Sep 17 00:00:00 2001 From: CalMWolfs <94038482+CalMWolfs@users.noreply.github.com> Date: Mon, 7 Oct 2024 22:31:54 +1100 Subject: [PATCH 3/3] Update src/main/java/at/hannibal2/skyhanni/utils/OSUtils.kt --- src/main/java/at/hannibal2/skyhanni/utils/OSUtils.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/at/hannibal2/skyhanni/utils/OSUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/OSUtils.kt index fe729ad042ca..ecd0f0650adf 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/OSUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/OSUtils.kt @@ -12,7 +12,7 @@ object OSUtils { SOLARIS, WINDOWS, MACOS, - UNKNOWN + UNKNOWN, } fun getOperatingSystemRaw(): String = System.getProperty("os.name")