summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils/system
diff options
context:
space:
mode:
authorBrady <thatgravyboat@gmail.com>2024-06-09 07:27:18 -0230
committerGitHub <noreply@github.com>2024-06-09 11:57:18 +0200
commit0b7d5ba223657f0a5de33862871a2355e7235c18 (patch)
treef9bafed7c379d89c23d13af141b0dfa9df1dcc50 /src/main/java/at/hannibal2/skyhanni/utils/system
parent1c13055266d04715b2292cc6ab107202a346adca (diff)
downloadskyhanni-0b7d5ba223657f0a5de33862871a2355e7235c18.tar.gz
skyhanni-0b7d5ba223657f0a5de33862871a2355e7235c18.tar.bz2
skyhanni-0b7d5ba223657f0a5de33862871a2355e7235c18.zip
Backend: Dev Modules (#2011)
Co-authored-by: Cal <cwolfson58@gmail.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils/system')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/system/PlatformUtils.kt31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/system/PlatformUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/system/PlatformUtils.kt
new file mode 100644
index 000000000..4828bc2af
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/utils/system/PlatformUtils.kt
@@ -0,0 +1,31 @@
+package at.hannibal2.skyhanni.utils.system
+
+import net.minecraft.launchwrapper.Launch
+import net.minecraftforge.fml.common.Loader
+import net.minecraftforge.fml.common.ModContainer
+
+/**
+ * This object contains utilities for all platform specific operations.
+ * i.e. operations that are specific to the mod loader or the environment the mod is running in.
+ */
+object PlatformUtils {
+
+ private val modPackages: Map<String, ModContainer> by lazy {
+ Loader.instance().modList
+ .flatMap { mod -> mod.ownedPackages.map { it to mod } }
+ .toMap()
+ }
+
+ val isDevEnvironment: Boolean by lazy {
+ Launch.blackboard?.get("fml.deobfuscatedEnvironment") as? Boolean ?: true
+ }
+
+ fun getModFromPackage(packageName: String?): ModInstance? = modPackages[packageName]?.let {
+ ModInstance(it.modId, it.name, it.version)
+ }
+
+ fun Class<*>.getModInstance(): ModInstance? = getModFromPackage(canonicalName?.substringBeforeLast('.'))
+
+}
+
+data class ModInstance(val id: String, val name: String, val version: String)