From 0b7d5ba223657f0a5de33862871a2355e7235c18 Mon Sep 17 00:00:00 2001 From: Brady Date: Sun, 9 Jun 2024 07:27:18 -0230 Subject: Backend: Dev Modules (#2011) Co-authored-by: Cal --- .../skyhanni/utils/system/PlatformUtils.kt | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/java/at/hannibal2/skyhanni/utils/system/PlatformUtils.kt (limited to 'src/main/java/at/hannibal2/skyhanni/utils/system') 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 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) -- cgit