Use standard byte buffers for save image metadata

This commit is contained in:
notmatthewbeshay 2026-03-10 19:21:10 +11:00
parent 2bc55b838d
commit 3e89da8dff
5 changed files with 20 additions and 20 deletions

View file

@ -7631,9 +7631,9 @@ unsigned int CMinecraftApp::FromBigEndian(unsigned int uiValue)
#endif #endif
} }
void CMinecraftApp::GetImageTextData(PBYTE pbImageData, DWORD dwImageBytes,unsigned char *pszSeed,unsigned int &uiHostOptions,bool &bHostOptionsRead,std::uint32_t &uiTexturePack) void CMinecraftApp::GetImageTextData(std::uint8_t *imageData, unsigned int imageBytes, unsigned char *seedText, unsigned int &uiHostOptions, bool &bHostOptionsRead, std::uint32_t &uiTexturePack)
{ {
unsigned char *ucPtr=pbImageData; std::uint8_t *ucPtr = imageData;
unsigned int uiCount=0; unsigned int uiCount=0;
unsigned int uiChunkLen; unsigned int uiChunkLen;
unsigned int uiChunkType; unsigned int uiChunkType;
@ -7648,7 +7648,7 @@ void CMinecraftApp::GetImageTextData(PBYTE pbImageData, DWORD dwImageBytes,unsig
uiCount+=8; uiCount+=8;
while(uiCount<dwImageBytes) while(uiCount < imageBytes)
{ {
uiChunkLen=*(unsigned int *)&ucPtr[uiCount]; uiChunkLen=*(unsigned int *)&ucPtr[uiCount];
uiChunkLen=FromBigEndian(uiChunkLen); uiChunkLen=FromBigEndian(uiChunkLen);
@ -7677,10 +7677,10 @@ void CMinecraftApp::GetImageTextData(PBYTE pbImageData, DWORD dwImageBytes,unsig
unsigned int uiValueC=0; unsigned int uiValueC=0;
while(*pszKeyword!=0 && (pszKeyword < ucPtr + uiCount + uiChunkLen) ) while(*pszKeyword!=0 && (pszKeyword < ucPtr + uiCount + uiChunkLen) )
{ {
pszSeed[uiValueC++]=*pszKeyword; seedText[uiValueC++]=*pszKeyword;
pszKeyword++; pszKeyword++;
} }
//memcpy(pszSeed,pszKeyword,uiChunkLen-8); //memcpy(seedText,pszKeyword,uiChunkLen-8);
} }
else if(strcmp(szKeyword,"4J_HOSTOPTIONS")==0) else if(strcmp(szKeyword,"4J_HOSTOPTIONS")==0)
{ {
@ -7727,33 +7727,33 @@ void CMinecraftApp::GetImageTextData(PBYTE pbImageData, DWORD dwImageBytes,unsig
return; return;
} }
unsigned int CMinecraftApp::CreateImageTextData(PBYTE bTextMetadata, __int64 seed, bool hasSeed, unsigned int uiHostOptions, unsigned int uiTexturePackId) unsigned int CMinecraftApp::CreateImageTextData(std::uint8_t *textMetadata, __int64 seed, bool hasSeed, unsigned int uiHostOptions, unsigned int uiTexturePackId)
{ {
int iTextMetadataBytes = 0; int iTextMetadataBytes = 0;
if(hasSeed) if(hasSeed)
{ {
strcpy((char *)bTextMetadata,"4J_SEED"); strcpy((char *)textMetadata,"4J_SEED");
snprintf((char *)&bTextMetadata[8], 42, "%lld", (long long)seed); snprintf((char *)&textMetadata[8], 42, "%lld", (long long)seed);
// get the length // get the length
iTextMetadataBytes+=8; iTextMetadataBytes+=8;
while(bTextMetadata[iTextMetadataBytes]!=0) iTextMetadataBytes++; while(textMetadata[iTextMetadataBytes]!=0) iTextMetadataBytes++;
++iTextMetadataBytes; // Add a null terminator at the end of the seed value ++iTextMetadataBytes; // Add a null terminator at the end of the seed value
} }
// Save the host options that this world was last played with // Save the host options that this world was last played with
strcpy((char *)&bTextMetadata[iTextMetadataBytes],"4J_HOSTOPTIONS"); strcpy((char *)&textMetadata[iTextMetadataBytes],"4J_HOSTOPTIONS");
snprintf( (char *)&bTextMetadata[iTextMetadataBytes + 15], 9, "%X", uiHostOptions); snprintf( (char *)&textMetadata[iTextMetadataBytes + 15], 9, "%X", uiHostOptions);
iTextMetadataBytes += 15; iTextMetadataBytes += 15;
while(bTextMetadata[iTextMetadataBytes]!=0) iTextMetadataBytes++; while(textMetadata[iTextMetadataBytes]!=0) iTextMetadataBytes++;
++iTextMetadataBytes; // Add a null terminator at the end of the host options value ++iTextMetadataBytes; // Add a null terminator at the end of the host options value
// Save the texture pack id // Save the texture pack id
strcpy((char *)&bTextMetadata[iTextMetadataBytes],"4J_TEXTUREPACK"); strcpy((char *)&textMetadata[iTextMetadataBytes],"4J_TEXTUREPACK");
iTextMetadataBytes += 15; iTextMetadataBytes += 15;
while(bTextMetadata[iTextMetadataBytes]!=0) iTextMetadataBytes++; while(textMetadata[iTextMetadataBytes]!=0) iTextMetadataBytes++;
return iTextMetadataBytes; return iTextMetadataBytes;
} }

View file

@ -703,8 +703,8 @@ public:
bool CanRecordStatsAndAchievements(); bool CanRecordStatsAndAchievements();
// World seed from png image // World seed from png image
void GetImageTextData(PBYTE pbImageData, DWORD dwImageBytes,unsigned char *pszSeed,unsigned int &uiHostOptions,bool &bHostOptionsRead,std::uint32_t &uiTexturePack); void GetImageTextData(std::uint8_t *imageData, unsigned int imageBytes, unsigned char *seedText, unsigned int &uiHostOptions, bool &bHostOptionsRead, std::uint32_t &uiTexturePack);
unsigned int CreateImageTextData(PBYTE bTextMetadata, __int64 seed, bool hasSeed, unsigned int uiHostOptions, unsigned int uiTexturePackId); unsigned int CreateImageTextData(std::uint8_t *textMetadata, __int64 seed, bool hasSeed, unsigned int uiHostOptions, unsigned int uiTexturePackId);
// Game rules // Game rules
GameRuleManager m_gameRules; GameRuleManager m_gameRules;

View file

@ -2446,7 +2446,7 @@ int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc( LPVOID lpParameter
StorageManager.GetDefaultSaveImage(&pbDataSaveImage, &dwDataSizeSaveImage); // Get the default save thumbnail (as set by SetDefaultImages) for use on saving games t StorageManager.GetDefaultSaveImage(&pbDataSaveImage, &dwDataSizeSaveImage); // Get the default save thumbnail (as set by SetDefaultImages) for use on saving games t
StorageManager.GetDefaultSaveThumbnail(&pbThumbnailData,&dwThumbnailDataSize); // Get the default save image (as set by SetDefaultImages) for use on saving games that StorageManager.GetDefaultSaveThumbnail(&pbThumbnailData,&dwThumbnailDataSize); // Get the default save image (as set by SetDefaultImages) for use on saving games that
BYTE bTextMetadata[88]; std::uint8_t bTextMetadata[88];
ZeroMemory(bTextMetadata,88); ZeroMemory(bTextMetadata,88);
int iTextMetadataBytes = app.CreateImageTextData(bTextMetadata, app.getRemoteStorage()->getSaveSeed(), true, app.getRemoteStorage()->getSaveHostOptions(), app.getRemoteStorage()->getSaveTexturePack() ); int iTextMetadataBytes = app.CreateImageTextData(bTextMetadata, app.getRemoteStorage()->getSaveSeed(), true, app.getRemoteStorage()->getSaveHostOptions(), app.getRemoteStorage()->getSaveTexturePack() );
@ -2606,7 +2606,7 @@ int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc( LPVOID lpParameter
StorageManager.GetDefaultSaveImage(&pbDataSaveImage, &dwDataSizeSaveImage); // Get the default save thumbnail (as set by SetDefaultImages) for use on saving games t StorageManager.GetDefaultSaveImage(&pbDataSaveImage, &dwDataSizeSaveImage); // Get the default save thumbnail (as set by SetDefaultImages) for use on saving games t
StorageManager.GetDefaultSaveThumbnail(&pbThumbnailData,&dwThumbnailDataSize); // Get the default save image (as set by SetDefaultImages) for use on saving games that StorageManager.GetDefaultSaveThumbnail(&pbThumbnailData,&dwThumbnailDataSize); // Get the default save image (as set by SetDefaultImages) for use on saving games that
BYTE bTextMetadata[88]; std::uint8_t bTextMetadata[88];
ZeroMemory(bTextMetadata,88); ZeroMemory(bTextMetadata,88);
int iTextMetadataBytes = app.CreateImageTextData(bTextMetadata, app.getRemoteStorage()->getSaveSeed(), true, app.getRemoteStorage()->getSaveHostOptions(), app.getRemoteStorage()->getSaveTexturePack() ); int iTextMetadataBytes = app.CreateImageTextData(bTextMetadata, app.getRemoteStorage()->getSaveSeed(), true, app.getRemoteStorage()->getSaveHostOptions(), app.getRemoteStorage()->getSaveTexturePack() );

View file

@ -762,7 +762,7 @@ void ConsoleSaveFileOriginal::Flush(bool autosave, bool updateThumbnail )
app.GetSaveThumbnail(&pbThumbnailData,&dwThumbnailDataSize,&pbDataSaveImage,&dwDataSizeSaveImage); app.GetSaveThumbnail(&pbThumbnailData,&dwThumbnailDataSize,&pbDataSaveImage,&dwDataSizeSaveImage);
#endif #endif
BYTE bTextMetadata[88]; std::uint8_t bTextMetadata[88];
ZeroMemory(bTextMetadata,88); ZeroMemory(bTextMetadata,88);
__int64 seed = 0; __int64 seed = 0;

View file

@ -1426,7 +1426,7 @@ void ConsoleSaveFileSplit::Flush(bool autosave, bool updateThumbnail)
app.GetSaveThumbnail(&pbThumbnailData,&dwThumbnailDataSize,&pbDataSaveImage,&dwDataSizeSaveImage); app.GetSaveThumbnail(&pbThumbnailData,&dwThumbnailDataSize,&pbDataSaveImage,&dwDataSizeSaveImage);
#endif #endif
BYTE bTextMetadata[88]; std::uint8_t bTextMetadata[88];
ZeroMemory(bTextMetadata,88); ZeroMemory(bTextMetadata,88);
__int64 seed = 0; __int64 seed = 0;