/* SPDX-FileCopyrightText: 2026 Project Tick
 * SPDX-FileContributor: Project Tick
 * SPDX-License-Identifier: GPL-3.0-or-later WITH LicenseRef-MeshMC-MMCO-Module-Exception-1.0
 *
 *   MeshMC - A Custom Launcher for Minecraft
 *   Copyright (C) 2026 Project Tick
 *
 *   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, either version 3 of the License, or
 *   (at your option) any later version, with the additional permission
 *   described in the MeshMC MMCO Module Exception 1.0.
 *
 *   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/>.
 *
 *   You should have received a copy of the MeshMC MMCO Module Exception 1.0
 *   along with this program.  If not, see <https://projecttick.org/licenses/>.
 */

#include "VersionFilterData.h"
#include "ParseUtils.h"

VersionFilterData g_VersionFilterData = VersionFilterData();

VersionFilterData::VersionFilterData()
{
	// 1.3.*
	auto libs13 = QList<FMLlib>{
		{"argo-2.25.jar", "bb672829fde76cb163004752b86b0484bd0a7f4b"},
		{"guava-12.0.1.jar", "b8e78b9af7bf45900e14c6f958486b6ca682195f"},
		{"asm-all-4.0.jar", "98308890597acb64047f7e896638e0d98753ae82"}};

	fmlLibsMapping["1.3.2"] = libs13;

	// 1.4.*
	auto libs14 = QList<FMLlib>{
		{"argo-2.25.jar", "bb672829fde76cb163004752b86b0484bd0a7f4b"},
		{"guava-12.0.1.jar", "b8e78b9af7bf45900e14c6f958486b6ca682195f"},
		{"asm-all-4.0.jar", "98308890597acb64047f7e896638e0d98753ae82"},
		{"bcprov-jdk15on-147.jar", "b6f5d9926b0afbde9f4dbe3db88c5247be7794bb"}};

	fmlLibsMapping["1.4"] = libs14;
	fmlLibsMapping["1.4.1"] = libs14;
	fmlLibsMapping["1.4.2"] = libs14;
	fmlLibsMapping["1.4.3"] = libs14;
	fmlLibsMapping["1.4.4"] = libs14;
	fmlLibsMapping["1.4.5"] = libs14;
	fmlLibsMapping["1.4.6"] = libs14;
	fmlLibsMapping["1.4.7"] = libs14;

	// 1.5
	fmlLibsMapping["1.5"] = QList<FMLlib>{
		{"argo-small-3.2.jar", "58912ea2858d168c50781f956fa5b59f0f7c6b51"},
		{"guava-14.0-rc3.jar", "931ae21fa8014c3ce686aaa621eae565fefb1a6a"},
		{"asm-all-4.1.jar", "054986e962b88d8660ae4566475658469595ef58"},
		{"bcprov-jdk15on-148.jar", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65"},
		{"deobfuscation_data_1.5.zip",
		 "5f7c142d53776f16304c0bbe10542014abad6af8"},
		{"scala-library.jar", "458d046151ad179c85429ed7420ffb1eaf6ddf85"}};

	// 1.5.1
	fmlLibsMapping["1.5.1"] = QList<FMLlib>{
		{"argo-small-3.2.jar", "58912ea2858d168c50781f956fa5b59f0f7c6b51"},
		{"guava-14.0-rc3.jar", "931ae21fa8014c3ce686aaa621eae565fefb1a6a"},
		{"asm-all-4.1.jar", "054986e962b88d8660ae4566475658469595ef58"},
		{"bcprov-jdk15on-148.jar", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65"},
		{"deobfuscation_data_1.5.1.zip",
		 "22e221a0d89516c1f721d6cab056a7e37471d0a6"},
		{"scala-library.jar", "458d046151ad179c85429ed7420ffb1eaf6ddf85"}};

	// 1.5.2
	fmlLibsMapping["1.5.2"] = QList<FMLlib>{
		{"argo-small-3.2.jar", "58912ea2858d168c50781f956fa5b59f0f7c6b51"},
		{"guava-14.0-rc3.jar", "931ae21fa8014c3ce686aaa621eae565fefb1a6a"},
		{"asm-all-4.1.jar", "054986e962b88d8660ae4566475658469595ef58"},
		{"bcprov-jdk15on-148.jar", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65"},
		{"deobfuscation_data_1.5.2.zip",
		 "446e55cd986582c70fcf12cb27bc00114c5adfd9"},
		{"scala-library.jar", "458d046151ad179c85429ed7420ffb1eaf6ddf85"}};

	// don't use installers for those.
	forgeInstallerBlacklist = QSet<QString>({"1.5.2"});

	// FIXME: remove, used for deciding when core mods should display
	legacyCutoffDate = timeFromS3Time("2013-06-25T15:08:56+02:00");
	lwjglWhitelist = QSet<QString>{
		"net.java.jinput:jinput",	  "net.java.jinput:jinput-platform",
		"net.java.jutils:jutils",	  "org.lwjgl.lwjgl:lwjgl",
		"org.lwjgl.lwjgl:lwjgl_util", "org.lwjgl.lwjgl:lwjgl-platform"};

	java8BeginsDate = timeFromS3Time("2017-03-30T09:32:19+00:00");
	java16BeginsDate = timeFromS3Time("2021-05-12T11:19:15+00:00");
	java17BeginsDate = timeFromS3Time("2021-11-16T17:04:48+00:00");
	java21BeginsDate = timeFromS3Time("2024-04-03T00:00:00+00:00");
	java25BeginsDate = timeFromS3Time("2025-10-15T00:00:00+00:00");
}
