Custom environment variables UI and implementation

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
TheKodeToad
2023-07-12 18:10:13 +01:00
parent 9499066375
commit 997a3709d4
31 changed files with 6722 additions and 486 deletions

View File

@ -186,6 +186,10 @@ void MinecraftInstance::loadSpecificSettings()
m_settings->registerOverride(global_settings->getSetting("CloseAfterLaunch"), miscellaneousOverride);
m_settings->registerOverride(global_settings->getSetting("QuitAfterGameStop"), miscellaneousOverride);
m_settings->registerSetting("UseEnv", false);
m_settings->registerSetting("OverrideEnv", false);
m_settings->registerSetting("Env", QVariant(QMap<QString, QVariant>()));
m_settings->set("InstanceType", "OneSix");
}
@ -526,6 +530,24 @@ QProcessEnvironment MinecraftInstance::createLaunchEnvironment()
}
#endif
// custom env
auto insertEnv = [&env](QMap<QString, QVariant> envMap) {
if (envMap.isEmpty())
return;
for (auto iter = envMap.begin(); iter != envMap.end(); iter++)
env.insert(iter.key(), iter.value().toString());
};
bool useEnv = settings()->get("UseEnv").toBool();
bool overrideEnv = useEnv && settings()->get("OverrideEnv").toBool();
if (!overrideEnv)
insertEnv(APPLICATION->settings()->get("Env").toMap());
if (useEnv)
insertEnv(settings()->get("Env").toMap());
return env;
}