From a58cf0cc3931343daa144a33598c2ae77b10647f Mon Sep 17 00:00:00 2001 From: jvnpr Date: Wed, 11 Mar 2026 01:53:14 -0500 Subject: [PATCH] create check for existing setting file, write new data version to file after fix-up --- Minecraft.Client/Common/Consoles_App.cpp | 47 ++++++++++++++++++------ Minecraft.Client/Common/Consoles_App.h | 6 ++- 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/Minecraft.Client/Common/Consoles_App.cpp b/Minecraft.Client/Common/Consoles_App.cpp index 44a233985..525b5ab0a 100644 --- a/Minecraft.Client/Common/Consoles_App.cpp +++ b/Minecraft.Client/Common/Consoles_App.cpp @@ -794,10 +794,23 @@ static void Win64_LoadSettings(GAME_SETTINGS *gs) if (fread(&temp, sizeof(GAME_SETTINGS), 1, f) == 1) memcpy(gs, &temp, sizeof(GAME_SETTINGS)); fclose(f); + CMinecraftApp::SetSettingsFileLoaded(true); } } #endif +bool CMinecraftApp::settingFileLoaded = false; + +void CMinecraftApp::SetSettingsFileLoaded(bool loaded) +{ + settingFileLoaded = loaded; +} + +bool CMinecraftApp::GetSettingsFileLoaded() +{ + return settingFileLoaded; +} + void CMinecraftApp::InitGameSettings() { for(int i=0;iuiSettingDataVersion + int iPad = ProfileManager.GetPrimaryPad(); - if (GameSettingsA[version != currentSettingDataVersion) + unsigned int version = GameSettingsA[iPad]->uiSettingDataVersion; + + if (GetSettingsFileLoaded()) { - DebugPrintf("[SettingFixer]: Fixing Settings!\n"); + if (version != currentSettingDataVersion) + { + DebugPrintf("[SettingFixer]: Fixing Settings!\n"); - /* ex: - if (version < 1) fix v1 setting changes; - if (version < 2) fix v2 setting changes; - ... - */ + // perform fixing up + + GameSettingsA[iPad]->uiSettingDataVersion = currentSettingDataVersion; + GameSettingsA[iPad]->bSettingsChanged = true; + CheckGameSettingsChanged(true, iPad); + + DebugPrintf("[SettingFixer]: Settings fixed and saved.\n"); + + } + else + { + DebugPrintf("[SettingFixer]: Nothing to do.\n"); + } } else { - DebugPrintf("[SettingFixer]: Nothing to do.\n"); + DebugPrintf("[SettingFixer]: No settings file found, nothing to do.\n"); } - - GameSettingsA[ProfileManager.GetPrimaryPad()]->uiSettingDataVersion = currentSettingDataVersion; } void CMinecraftApp::SetPlayerSkin(int iPad,const wstring &name) diff --git a/Minecraft.Client/Common/Consoles_App.h b/Minecraft.Client/Common/Consoles_App.h index 072868115..6da11d629 100644 --- a/Minecraft.Client/Common/Consoles_App.h +++ b/Minecraft.Client/Common/Consoles_App.h @@ -237,11 +237,15 @@ public: #endif virtual void SetRichPresenceContext(int iPad, int contextId) = 0; + // jvnpr -- SettingFixer & related checks + void SettingFixer(); + static void SetSettingsFileLoaded(bool loaded); + static bool GetSettingsFileLoaded(); + static bool settingFileLoaded; void SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucVal); unsigned char GetGameSettings(int iPad,eGameSetting eVal); unsigned char GetGameSettings(eGameSetting eVal); // for the primary pad - void SettingFixer(); // jvnpr -- used to convert any old settings values to new settings based on uiSettingDataVersion / eGameSetting_SettingDataVersion void SetPlayerSkin(int iPad,const wstring &name); void SetPlayerSkin(int iPad,DWORD dwSkinId); void SetPlayerCape(int iPad,const wstring &name);