From 91674547675107bde2b6c4294739ddcc5a82c136 Mon Sep 17 00:00:00 2001 From: dtentiion Date: Sat, 18 Apr 2026 23:47:18 +0100 Subject: [PATCH 1/3] fix: Nether portal trigger and travel sounds not playing (#1523) --- Minecraft.Client/Common/Audio/SoundEngine.cpp | 5 ++++- Minecraft.Client/ServerPlayer.cpp | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Minecraft.Client/Common/Audio/SoundEngine.cpp b/Minecraft.Client/Common/Audio/SoundEngine.cpp index fc3ae86a..b4210b17 100644 --- a/Minecraft.Client/Common/Audio/SoundEngine.cpp +++ b/Minecraft.Client/Common/Audio/SoundEngine.cpp @@ -583,23 +583,26 @@ void SoundEngine::playUI(int iSound, float volume, float pitch) { U8 szSoundName[256]; wstring name; + const char* soundDir; if (iSound >= eSFX_MAX) { strcpy((char*)szSoundName, "Minecraft/"); name = wchSoundNames[iSound]; + soundDir = "Minecraft"; } else { strcpy((char*)szSoundName, "Minecraft/UI/"); name = wchUISoundNames[iSound]; + soundDir = "Minecraft/UI"; } char* SoundName = (char*)ConvertSoundPathToName(name); strcat((char*)szSoundName, SoundName); char basePath[256]; - sprintf_s(basePath, "Windows64Media/Sound/Minecraft/UI/%s", ConvertSoundPathToName(name)); + sprintf_s(basePath, "Windows64Media/Sound/%s/%s", soundDir, ConvertSoundPathToName(name)); char finalPath[256]; sprintf_s(finalPath, "%s.wav", basePath); diff --git a/Minecraft.Client/ServerPlayer.cpp b/Minecraft.Client/ServerPlayer.cpp index 883047fc..6738360a 100644 --- a/Minecraft.Client/ServerPlayer.cpp +++ b/Minecraft.Client/ServerPlayer.cpp @@ -8,6 +8,9 @@ #include "Settings.h" #include "PlayerList.h" #include "MultiPlayerLevel.h" +#include "Minecraft.h" +#include "Common/Audio/SoundEngine.h" +#include "../Minecraft.World/SoundTypes.h" #include "../Minecraft.World/net.minecraft.network.packet.h" #include "../Minecraft.World/net.minecraft.world.damagesource.h" @@ -783,6 +786,13 @@ void ServerPlayer::changeDimension(int i) // 4J: Removed on the advice of the mighty King of Achievments (JV) // awardStat(GenericStats::portal(), GenericStats::param_portal()); } + // play the travel whoosh right before the actual dimension swap + Minecraft *mc = Minecraft::GetInstance(); + if (mc != nullptr && mc->soundEngine != nullptr) + { + mc->soundEngine->playUI(eSoundType_PORTAL_TRAVEL, 1, 1.0f); + } + server->getPlayers()->toggleDimension( dynamic_pointer_cast(shared_from_this()), i); lastSentExp = -1; lastSentHealth = -1; From 4a7b34f4c26945a9a13ebf7447a1906ae5a766f5 Mon Sep 17 00:00:00 2001 From: dtentiion Date: Sat, 18 Apr 2026 23:49:43 +0100 Subject: [PATCH 2/3] fix: Display save thumbnail in world detail view on Windows64 (#1519) --- .../Common/UI/UIScene_LoadMenu.cpp | 43 ++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp b/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp index 5945e10e..63c4760c 100644 --- a/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp @@ -110,6 +110,8 @@ UIScene_LoadMenu::UIScene_LoadMenu(int iPad, void *initData, UILayer *parentLaye m_bThumbnailGetFailed = false; m_seed = 0; m_bIsCorrupt = false; + m_pbThumbnailData = nullptr; + m_uiThumbnailSize = 0; m_bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_iPad); // 4J-PB - read the settings for the online flag. We'll only save this setting if the user changed it. @@ -249,13 +251,42 @@ UIScene_LoadMenu::UIScene_LoadMenu(int iPad, void *initData, UILayer *parentLaye #endif #endif #ifdef _WINDOWS64 - if (params->saveDetails != nullptr && params->saveDetails->UTF8SaveName[0] != '\0') + if (params->saveDetails != nullptr) { - wchar_t wSaveName[128]; - ZeroMemory(wSaveName, sizeof(wSaveName)); - mbstowcs(wSaveName, params->saveDetails->UTF8SaveName, 127); - m_levelName = wstring(wSaveName); - m_labelGameName.init(m_levelName); + if (params->saveDetails->UTF8SaveName[0] != '\0') + { + wchar_t wSaveName[128]; + ZeroMemory(wSaveName, sizeof(wSaveName)); + mbstowcs(wSaveName, params->saveDetails->UTF8SaveName, 127); + m_levelName = wstring(wSaveName); + m_labelGameName.init(m_levelName); + } + + wchar_t wFilename[MAX_SAVEFILENAME_LENGTH]; + ZeroMemory(wFilename, sizeof(wFilename)); + mbstowcs(wFilename, params->saveDetails->UTF8SaveFilename, MAX_SAVEFILENAME_LENGTH - 1); + m_thumbnailName = wFilename; + + if (params->saveDetails->pbThumbnailData && params->saveDetails->dwThumbnailSize > 0) + { + // save list already loaded this, register and display it + registerSubstitutionTexture(wFilename, params->saveDetails->pbThumbnailData, params->saveDetails->dwThumbnailSize); + m_bitmapIcon.setTextureName(wFilename); + m_pbThumbnailData = params->saveDetails->pbThumbnailData; + m_uiThumbnailSize = params->saveDetails->dwThumbnailSize; + } + else + { + // ask the storage lib to load it + PSAVE_DETAILS pSaveDetails = StorageManager.ReturnSavesInfo(); + if (pSaveDetails) + { + StorageManager.LoadSaveDataThumbnail( + &pSaveDetails->SaveInfoA[(int)m_iSaveGameInfoIndex], + &LoadSaveDataThumbnailReturned, (LPVOID)GetCallbackUniqueId()); + } + } + m_bRetrievingSaveThumbnail = false; } #endif } From 7c1606837f2b76ba96fad9a1ef2460e225e4e6a9 Mon Sep 17 00:00:00 2001 From: Sylvessa <225480449+sylvessa@users.noreply.github.com> Date: Sat, 18 Apr 2026 19:14:42 -0500 Subject: [PATCH 3/3] fix: worlds without worlds won't open (#1529) --- Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp b/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp index 63c4760c..0e858213 100644 --- a/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp @@ -275,17 +275,7 @@ UIScene_LoadMenu::UIScene_LoadMenu(int iPad, void *initData, UILayer *parentLaye m_pbThumbnailData = params->saveDetails->pbThumbnailData; m_uiThumbnailSize = params->saveDetails->dwThumbnailSize; } - else - { - // ask the storage lib to load it - PSAVE_DETAILS pSaveDetails = StorageManager.ReturnSavesInfo(); - if (pSaveDetails) - { - StorageManager.LoadSaveDataThumbnail( - &pSaveDetails->SaveInfoA[(int)m_iSaveGameInfoIndex], - &LoadSaveDataThumbnailReturned, (LPVOID)GetCallbackUniqueId()); - } - } + m_bRetrievingSaveThumbnail = false; } #endif