Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backend: More /shdebug #2691

Merged
merged 3 commits into from
Oct 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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);
Expand Down
4 changes: 0 additions & 4 deletions src/main/java/at/hannibal2/skyhanni/tweaker/TweakerUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
107 changes: 107 additions & 0 deletions src/main/java/at/hannibal2/skyhanni/utils/ComputerEnvDebug.kt
Original file line number Diff line number Diff line change
@@ -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<String?, Boolean> {
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_(?<update>.*)".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'")
}
}
}
11 changes: 8 additions & 3 deletions src/main/java/at/hannibal2/skyhanni/utils/ComputerTimeOffset.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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())
}
}
}
30 changes: 26 additions & 4 deletions src/main/java/at/hannibal2/skyhanni/utils/OSUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading