diff options
| author | Linnea Gräf <nea@nea.moe> | 2024-02-14 20:46:25 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-14 20:46:25 +0100 |
| commit | eb4b815095666bd9d13074a052c4329ba9ac7da7 (patch) | |
| tree | 8171cb34e221c2deacc5549d55d6b28fa1ea3d5b /src/main/java/at/hannibal2/skyhanni/utils | |
| parent | 029514e0324d8ae72ad181c06bcf081c5c2a6304 (diff) | |
| download | skyhanni-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.kt | 21 |
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] + } + } |
