fix(runtime): remap modded block ids using save hooks

This commit is contained in:
Jacobwasbeast
2026-03-08 22:35:05 -05:00
parent 2a959e2e4f
commit 887d75eb79
7 changed files with 493 additions and 0 deletions

View File

@@ -21,6 +21,11 @@ bool HookManager::Install(const SymbolResolver& symbols)
}
WorldIdRemap::SetTagNewTagSymbol(symbols.pTagNewTag);
WorldIdRemap::SetLevelChunkTileSymbols(
symbols.pLevelChunkGetTile,
symbols.pLevelChunkSetTile,
symbols.pLevelChunkGetPos,
symbols.pLevelChunkGetHighestNonEmptyY);
if (symbols.pRunStaticCtors)
{
@@ -380,6 +385,34 @@ bool HookManager::Install(const SymbolResolver& symbols)
}
}
if (symbols.pMcRegionChunkStorageLoad)
{
if (MH_CreateHook(symbols.pMcRegionChunkStorageLoad,
reinterpret_cast<void*>(&GameHooks::Hooked_McRegionChunkStorageLoad),
reinterpret_cast<void**>(&GameHooks::Original_McRegionChunkStorageLoad)) != MH_OK)
{
LogUtil::Log("[WeaveLoader] Warning: Failed to hook McRegionChunkStorage::load");
}
else
{
LogUtil::Log("[WeaveLoader] Hooked McRegionChunkStorage::load (block id remap)");
}
}
if (symbols.pMcRegionChunkStorageSave)
{
if (MH_CreateHook(symbols.pMcRegionChunkStorageSave,
reinterpret_cast<void*>(&GameHooks::Hooked_McRegionChunkStorageSave),
reinterpret_cast<void**>(&GameHooks::Original_McRegionChunkStorageSave)) != MH_OK)
{
LogUtil::Log("[WeaveLoader] Warning: Failed to hook McRegionChunkStorage::save");
}
else
{
LogUtil::Log("[WeaveLoader] Hooked McRegionChunkStorage::save (block namespace persistence)");
}
}
if (symbols.pTileGetResource)
{
if (MH_CreateHook(symbols.pTileGetResource,