summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils/system/PlatformUtils.kt
blob: 07fc8ed485f2006b07dceae1787bdeddba1a4a32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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)