From 1caf8ed1bd7677509849202b39f0da8c7fb30d8b Mon Sep 17 00:00:00 2001 From: artdeell Date: Sun, 10 Dec 2023 10:40:36 +0300 Subject: [PATCH] Fix[datedetect]: Read original release date instead of the modded release date --- .../main/java/net/kdt/pojavlaunch/Tools.java | 7 ++----- .../net/kdt/pojavlaunch/utils/DateUtils.java | 20 +++++++++++++++++++ .../pojavlaunch/utils/OldVersionsUtils.java | 1 - 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java index 9a381bbf0c..1dd336aca6 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -82,13 +82,10 @@ import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; -import java.util.GregorianCalendar; import java.util.List; -import java.util.Locale; import java.util.Map; @SuppressWarnings("IOStreamConstructor") @@ -346,11 +343,11 @@ public static String[] getMinecraftClientArgs(MinecraftAccount profile, JMinecra String userType = "mojang"; try { - Date creationDate = DateUtils.parseReleaseDate(versionInfo.releaseTime); + Date creationDate = DateUtils.getOriginalReleaseDate(versionInfo); // Minecraft 22w43a which adds chat reporting (and signing) was released on // 26th October 2022. So, if the date is not before that (meaning it is equal or higher) // change the userType to MSA to fix the missing signature - if(creationDate != null && !DateUtils.dateBefore(creationDate, 2022, 10, 26)) { + if(creationDate != null && !DateUtils.dateBefore(creationDate, 2022, 9, 26)) { userType = "msa"; } }catch (ParseException e) { diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/DateUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/DateUtils.java index 4e61eacda2..1ed7a93c74 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/DateUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/DateUtils.java @@ -4,6 +4,9 @@ import androidx.annotation.NonNull; +import net.kdt.pojavlaunch.JMinecraftVersionList; +import net.kdt.pojavlaunch.Tools; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -41,4 +44,21 @@ public static boolean dateBefore(@NonNull Date date, int year, int month, int da Log.i("DateUtils","isBefore:"+date.before(comparsionDate)); return date.before(comparsionDate); } + + /** + * Extracts the original release date of a game version, ignoring any mods (if present) + * @param gameVersion the JMinecraftVersionList.Version object + * @return the game's original release date + */ + public static Date getOriginalReleaseDate(JMinecraftVersionList.Version gameVersion) throws ParseException { + if(Tools.isValidString(gameVersion.inheritsFrom)) { + gameVersion = Tools.getVersionInfo(gameVersion.inheritsFrom, true); + }else { + // The launcher's inheritor mutilates the version object, causing it to have the original + // version's ID but modded version's dates. Work around it by re-reading the version without + // inheriting. + gameVersion = Tools.getVersionInfo(gameVersion.id, true); + } + return parseReleaseDate(gameVersion.releaseTime); + } } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/OldVersionsUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/OldVersionsUtils.java index f7c6219be2..5676cc6798 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/OldVersionsUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/OldVersionsUtils.java @@ -9,7 +9,6 @@ import java.text.ParseException; import java.util.Date; -import java.util.GregorianCalendar; /** Class here to help with various stuff to help run lower versions smoothly */ public class OldVersionsUtils {