Skip to content

Commit 86d7482

Browse files
committed
Add flag to not install the mod, only the modloader.
1 parent e1c215a commit 86d7482

File tree

4 files changed

+24
-1
lines changed

4 files changed

+24
-1
lines changed

installer/src/main/kotlin/gg/essential/installer/main.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,16 @@ private val height = System.getProperty("ui.height")?.toIntOrNull() ?: 600
5050
private val scaleFactor = System.getProperty("ui.scaleFactor")?.toIntOrNull() ?: 1
5151
private val resizable = System.getProperty("ui.resizable")?.toBoolean() ?: false
5252
private val debug = System.getProperty("installer.debug")?.toBoolean() ?: false
53+
private val noModInstall = System.getProperty("installer.noModInstall")?.toBoolean() ?: false
5354

5455
private lateinit var mainCoroutineScope: CoroutineScope
5556
private var requestRestart = false
5657
private var requestShutdown = false
5758

5859
fun isDebug() = debug
5960

61+
fun isNoModInstallMode() = noModInstall
62+
6063
fun main(args: Array<String>) {
6164
// Most important things to be loaded before anything else is run
6265
// This also sets up log4j's log file property

installer/src/main/kotlin/gg/essential/installer/mod/ModManager.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,15 @@ package gg.essential.installer.mod
1717

1818
import gg.essential.elementa.state.v2.State
1919
import gg.essential.elementa.state.v2.combinators.map
20+
import gg.essential.elementa.state.v2.filter
2021
import gg.essential.elementa.state.v2.memo
2122
import gg.essential.elementa.state.v2.mutableStateOf
2223
import gg.essential.elementa.state.v2.toListState
2324
import gg.essential.installer.download.DownloadRequest
25+
import gg.essential.installer.download.util.DownloadInfo
2426
import gg.essential.installer.install.InstallSteps
2527
import gg.essential.installer.install.installationStep
28+
import gg.essential.installer.isNoModInstallMode
2629
import gg.essential.installer.launcher.InstallInfo
2730
import gg.essential.installer.logging.Logging.logger
2831
import gg.essential.installer.metadata.BRAND
@@ -31,6 +34,7 @@ import gg.essential.installer.metadata.MetadataManager
3134
import gg.essential.installer.metadata.VERSION
3235
import gg.essential.installer.metadata.data.ModMetadata
3336
import gg.essential.installer.minecraft.MCVersion
37+
import gg.essential.installer.modloader.Modloader
3438
import gg.essential.installer.modloader.ModloaderType
3539
import gg.essential.installer.platform.Platform
3640
import kotlinx.serialization.ExperimentalSerializationApi
@@ -68,6 +72,16 @@ object ModManager {
6872

6973
suspend fun loadModVersionsAndMetadata() {
7074
logger.info("Loading mod versions and metadata!")
75+
76+
if (isNoModInstallMode()) {
77+
logger.warn("Running in no mod install mode! This means mod versions will not actually be loaded!")
78+
MCVersion.refreshKnownMcVersions() // Hack, since this is otherwise refreshed after this method...
79+
val version = ModVersion("", "", DownloadInfo("", "", true))
80+
val map = Modloader.entries.associate { it.type to ModVersions(version, null, listOf(version)) }
81+
availableVersions.set(MCVersion.knownVersions.filter { it >= MCVersion(8, 9) }.getUntracked().associateWith { map })
82+
return
83+
}
84+
7185
val dataProviders = MetadataManager.dataProviders
7286

7387
logger.debug("Version provider: {}", dataProviders.modVersionProviderStrategy)
@@ -189,6 +203,9 @@ object ModManager {
189203

190204
@OptIn(ExperimentalSerializationApi::class)
191205
fun getInstallSteps(installInfo: InstallInfo): InstallSteps {
206+
if (isNoModInstallMode()) {
207+
return InstallSteps()
208+
}
192209
val modVersion = installInfo.modVersion
193210
val downloadInfo = modVersion.downloadInfo
194211
val filename = if(modVersion.version.isBlank()) "$BRAND-${installInfo.mcVersion}.jar" else "$BRAND-${modVersion.version}-${installInfo.mcVersion}.jar"

wrapper/src/installer.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,9 @@ pub fn try_run_installer(
8080

8181
let debug_arg = format!("-Dinstaller.debug={}", wrapper_info.debug);
8282
let version_arg = format!("-Dwrapper.version={}", VERSION);
83+
let no_mod_arg = format!("-Dinstaller.noModInstall={}", wrapper_info.no_mod_install);
8384

84-
let mut args: Vec<&str> = vec![debug_arg.as_str(), version_arg.as_str()];
85+
let mut args: Vec<&str> = vec![debug_arg.as_str(), version_arg.as_str(), no_mod_arg.as_str()];
8586

8687
let temp_arg: String;
8788
if let Some(temp_str) = wrapper_info.temp_dir.to_str() {

wrapper/src/main.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ pub fn main() {
6161
debug: args.contains(&String::from("--debug")),
6262
no_java_search: args.contains(&String::from("--no-java-search")),
6363
force_error: args.contains(&String::from("--force-error")),
64+
no_mod_install: args.contains(&String::from("--no-mod-install")),
6465
temp_dir,
6566
cache_dir,
6667
};
@@ -107,6 +108,7 @@ pub struct WrapperInfo {
107108
pub debug: bool,
108109
pub no_java_search: bool,
109110
pub force_error: bool,
111+
pub no_mod_install: bool,
110112
pub temp_dir: PathBuf,
111113
pub cache_dir: PathBuf,
112114
}

0 commit comments

Comments
 (0)