diff options
| author | Brady <thatgravyboat@gmail.com> | 2024-06-09 07:27:18 -0230 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-09 11:57:18 +0200 |
| commit | 0b7d5ba223657f0a5de33862871a2355e7235c18 (patch) | |
| tree | f9bafed7c379d89c23d13af141b0dfa9df1dcc50 /src/main/java/at/hannibal2/skyhanni/utils/system | |
| parent | 1c13055266d04715b2292cc6ab107202a346adca (diff) | |
| download | skyhanni-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.kt | 31 |
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) |
