2022-03-24 20:30:23 +05:30
// SPDX-License-Identifier: GPL-3.0-only
/*
* PolyMC - Minecraft Launcher
* Copyright ( C ) 2022 Sefa Eyeoglu < contact @ scrumplex . net >
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , version 3.
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < https : //www.gnu.org/licenses/>.
*
* This file incorporates work covered by the following copyright and
* permission notice :
*
* Copyright 2013 - 2021 MultiMC Contributors
*
* Licensed under the Apache License , Version 2.0 ( the " License " ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an " AS IS " BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
*/
2021-06-24 01:54:25 +05:30
# include "VerifyJavaInstall.h"
2022-03-24 19:17:22 +05:30
# include "java/JavaVersion.h"
# include "minecraft/PackProfile.h"
# include "minecraft/MinecraftInstance.h"
2021-12-12 17:15:58 +05:30
2021-06-24 01:54:25 +05:30
void VerifyJavaInstall : : executeTask ( ) {
2022-03-24 19:17:22 +05:30
auto instance = std : : dynamic_pointer_cast < MinecraftInstance > ( m_parent - > instance ( ) ) ;
auto packProfile = instance - > getPackProfile ( ) ;
auto settings = instance - > settings ( ) ;
auto storedVersion = settings - > get ( " JavaVersion " ) . toString ( ) ;
auto ignoreCompatibility = settings - > get ( " IgnoreJavaCompatibility " ) . toBool ( ) ;
auto compatibleMajors = packProfile - > getProfile ( ) - > getCompatibleJavaMajors ( ) ;
JavaVersion javaVersion ( storedVersion ) ;
if ( compatibleMajors . isEmpty ( ) | | compatibleMajors . contains ( javaVersion . major ( ) ) )
{
emitSucceeded ( ) ;
return ;
2021-06-24 01:54:25 +05:30
}
2022-03-24 19:17:22 +05:30
if ( ignoreCompatibility )
{
emit logLine ( tr ( " Java major version is incompatible. Things might break. " ) , MessageLevel : : Warning ) ;
emitSucceeded ( ) ;
return ;
2021-06-24 01:54:25 +05:30
}
2022-04-02 04:24:48 +05:30
emit logLine ( tr ( " This instance is not compatible with Java version %1. \n "
" Please switch to one of the following Java versions for this instance: " ) . arg ( javaVersion . major ( ) ) ,
2022-03-24 19:17:22 +05:30
MessageLevel : : Error ) ;
2022-04-02 04:24:48 +05:30
for ( auto major : compatibleMajors )
2022-03-24 19:17:22 +05:30
{
2022-04-02 04:24:48 +05:30
emit logLine ( tr ( " Java version %1 " ) . arg ( major ) , MessageLevel : : Error ) ;
2022-03-24 19:17:22 +05:30
}
2022-10-31 12:28:38 +05:30
emit logLine ( tr ( " Go to instance Java settings to change your Java version or disable the Java compatibility check if you know what you're doing. " ) , MessageLevel : : Error ) ;
2022-10-30 09:22:16 +05:30
2022-03-24 19:17:22 +05:30
emitFailed ( QString ( " Incompatible Java major version " ) ) ;
2021-06-24 01:54:25 +05:30
}