MCPcopy Create free account
hub / github.com/ElyPrismLauncher/Launcher / downloadJava

Method downloadJava

launcher/minecraft/launch/AutoInstallJava.cpp:162–204  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

160}
161
162void AutoInstallJava::downloadJava(Meta::Version::Ptr version, QString javaName)
163{
164 auto runtimes = version->data()->runtimes;
165 for (auto java : runtimes) {
166 if (java->runtimeOS == m_supported_arch && java->name() == javaName) {
167 QDir javaDir(APPLICATION->javaPath());
168 auto final_path = javaDir.absoluteFilePath(java->m_name);
169 auto deletePath = [final_path] { FS::deletePath(final_path); };
170 switch (java->downloadType) {
171 case Java::DownloadType::Manifest:
172 m_current_task = makeShared<Java::ManifestDownloadTask>(java->url, final_path, java->checksumType, java->checksumHash);
173 break;
174 case Java::DownloadType::Archive:
175 m_current_task = makeShared<Java::ArchiveDownloadTask>(java->url, final_path, java->checksumType, java->checksumHash);
176 break;
177 case Java::DownloadType::Unknown:
178 deletePath();
179 emitFailed(tr("Could not determine Java download type!"));
180 return;
181 }
182#if defined(Q_OS_MACOS)
183 auto seq = makeShared<SequentialTask>(tr("Install Java"));
184 seq->addTask(m_current_task);
185 seq->addTask(makeShared<Java::SymlinkTask>(final_path));
186 m_current_task = seq;
187#endif
188 connect(m_current_task.get(), &Task::failed, this, [this, deletePath](QString reason) {
189 deletePath();
190 emitFailed(reason);
191 });
192 connect(m_current_task.get(), &Task::aborted, this, deletePath);
193 connect(m_current_task.get(), &Task::succeeded, this, &AutoInstallJava::setJavaPathFromPartial);
194 connect(m_current_task.get(), &Task::failed, this, &AutoInstallJava::tryNextMajorJava);
195 connect(m_current_task.get(), &Task::progress, this, &AutoInstallJava::setProgress);
196 connect(m_current_task.get(), &Task::stepProgress, this, &AutoInstallJava::propagateStepProgress);
197 connect(m_current_task.get(), &Task::status, this, &AutoInstallJava::setStatus);
198 connect(m_current_task.get(), &Task::details, this, &AutoInstallJava::setDetails);
199 m_current_task->start();
200 return;
201 }
202 }
203 tryNextMajorJava();
204}
205
206void AutoInstallJava::tryNextMajorJava()
207{

Callers

nothing calls this directly

Calls 7

deletePathFunction · 0.85
addTaskMethod · 0.80
dataMethod · 0.45
nameMethod · 0.45
javaPathMethod · 0.45
getMethod · 0.45
startMethod · 0.45

Tested by

no test coverage detected