summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-02-14 20:46:25 +0100
committerGitHub <noreply@github.com>2024-02-14 20:46:25 +0100
commiteb4b815095666bd9d13074a052c4329ba9ac7da7 (patch)
tree8171cb34e221c2deacc5549d55d6b28fa1ea3d5b /src/main/java/at/hannibal2/skyhanni/utils
parent029514e0324d8ae72ad181c06bcf081c5c2a6304 (diff)
downloadskyhanni-eb4b815095666bd9d13074a052c4329ba9ac7da7.tar.gz
skyhanni-eb4b815095666bd9d13074a052c4329ba9ac7da7.tar.bz2
skyhanni-eb4b815095666bd9d13074a052c4329ba9ac7da7.zip
Add mod identification for outgoing mod calls and show this data in /shchathistory. #987
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/ReflectionUtils.kt21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/ReflectionUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/ReflectionUtils.kt
index 2cf613b39..5ef72ddd7 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/ReflectionUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/ReflectionUtils.kt
@@ -1,5 +1,7 @@
package at.hannibal2.skyhanni.utils
+import net.minecraftforge.fml.common.Loader
+import net.minecraftforge.fml.common.ModContainer
import java.lang.reflect.Constructor
import java.lang.reflect.Field
import java.lang.reflect.Modifier
@@ -59,4 +61,23 @@ object ReflectionUtils {
javaClass.getDeclaredField("modifiers").makeAccessible().set(this, modifiers and (Modifier.FINAL.inv()))
return this
}
+
+ fun StackTraceElement.getClassInstance(): Class<*> {
+ return Class.forName(this.className)
+ }
+
+ private val packageLookup by lazy {
+ Loader.instance().modList
+ .flatMap { mod -> mod.ownedPackages.map { it to mod } }
+ .toMap()
+ }
+
+ val Class<*>.shPackageName
+ get() =
+ canonicalName.substringBeforeLast('.')
+
+ fun Class<*>.getModContainer(): ModContainer? {
+ return packageLookup[shPackageName]
+ }
+
}