From a20a7e987fcc6e2d43a1686a175447495245615c Mon Sep 17 00:00:00 2001 From: Jamie Mansfield Date: Wed, 23 Jun 2021 21:24:25 +0100 Subject: NOISSUE Fail launch if minimum Java requirement is not met This will fail launch in the following conditions: 1. A version greater than or equal to Minecraft 17w13a, and less than 21w19a - and the Java version is less than 8. 2. A version greater than or equal to Minecraft 21w19a - and the Java version is less than 16. --- api/logic/minecraft/launch/VerifyJavaInstall.cpp | 34 ++++++++++++++++++++++++ api/logic/minecraft/launch/VerifyJavaInstall.h | 17 ++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 api/logic/minecraft/launch/VerifyJavaInstall.cpp create mode 100644 api/logic/minecraft/launch/VerifyJavaInstall.h (limited to 'api/logic/minecraft/launch') diff --git a/api/logic/minecraft/launch/VerifyJavaInstall.cpp b/api/logic/minecraft/launch/VerifyJavaInstall.cpp new file mode 100644 index 00000000..657669af --- /dev/null +++ b/api/logic/minecraft/launch/VerifyJavaInstall.cpp @@ -0,0 +1,34 @@ +#include "VerifyJavaInstall.h" + +#include +#include +#include +#include + +void VerifyJavaInstall::executeTask() { + auto m_inst = std::dynamic_pointer_cast(m_parent->instance()); + + auto javaVersion = m_inst->getJavaVersion(); + auto minecraftComponent = m_inst->getPackProfile()->getComponent("net.minecraft"); + + // Java 16 requirement + if (minecraftComponent->getReleaseDateTime() >= g_VersionFilterData.java16BeginsDate) { + if (javaVersion.major() < 16) { + emit logLine("Minecraft 21w19a and above require the use of Java 16", + MessageLevel::Fatal); + emitFailed(tr("Minecraft 21w19a and above require the use of Java 16")); + return; + } + } + // Java 8 requirement + else if (minecraftComponent->getReleaseDateTime() >= g_VersionFilterData.java8BeginsDate) { + if (javaVersion.major() < 8) { + emit logLine("Minecraft 17w13a and above require the use of Java 8", + MessageLevel::Fatal); + emitFailed(tr("Minecraft 17w13a and above require the use of Java 8")); + return; + } + } + + emitSucceeded(); +} diff --git a/api/logic/minecraft/launch/VerifyJavaInstall.h b/api/logic/minecraft/launch/VerifyJavaInstall.h new file mode 100644 index 00000000..a553106d --- /dev/null +++ b/api/logic/minecraft/launch/VerifyJavaInstall.h @@ -0,0 +1,17 @@ +#pragma once + +#include + +class VerifyJavaInstall : public LaunchStep { + Q_OBJECT + +public: + explicit VerifyJavaInstall(LaunchTask *parent) : LaunchStep(parent) { + }; + ~VerifyJavaInstall() override = default; + + void executeTask() override; + bool canAbort() const override { + return false; + } +}; -- cgit