From 43b9d829c8ef52fc8fddbdfc72a348b55f94c8f6 Mon Sep 17 00:00:00 2001 From: qloak Date: Tue, 14 Jul 2026 10:54:43 -0700 Subject: [PATCH] fixed Windows build for networking branch --- Minecraft.Client/Extrax64Stubs.cpp | 17 ++++++++++++----- Minecraft.World/AbstractContainerMenu.cpp | 4 ++-- Minecraft.World/ByteArrayTag.h | 2 +- Minecraft.World/OldChunkStorage.cpp | 2 +- Minecraft.World/RegionFileCache.cpp | 5 +---- Minecraft.World/RegionFileCache.h | 2 +- Minecraft.World/Tag.cpp | 2 +- 7 files changed, 19 insertions(+), 15 deletions(-) diff --git a/Minecraft.Client/Extrax64Stubs.cpp b/Minecraft.Client/Extrax64Stubs.cpp index 7fff9b09..e7d5fd6a 100644 --- a/Minecraft.Client/Extrax64Stubs.cpp +++ b/Minecraft.Client/Extrax64Stubs.cpp @@ -211,22 +211,29 @@ ULONG_PTR IQNetPlayer::GetCustomDataValue() { return m_customData; } -IQNetPlayer IQNet::m_player[4]; +static IQNetPlayer s_playerArray[4]; +IQNetPlayer *IQNet::m_player = s_playerArray; +DWORD IQNet::s_playerCapacity = 4; +DWORD IQNet::s_playerCount = 0; +bool IQNet::s_isHosting = false; bool _bQNetStubGameRunning = false; HRESULT IQNet::AddLocalPlayerByUserIndex(DWORD dwUserIndex){ return S_OK; } +void IQNet::SetPlayerCapacity(DWORD capacity) { s_playerCapacity = capacity; } +DWORD IQNet::GetPlayerCapacity() { return s_playerCapacity; } IQNetPlayer *IQNet::GetHostPlayer() { return &m_player[0]; } IQNetPlayer *IQNet::GetLocalPlayerByUserIndex(DWORD dwUserIndex) { return &m_player[dwUserIndex]; } IQNetPlayer *IQNet::GetPlayerByIndex(DWORD dwPlayerIndex) { return &m_player[0]; } IQNetPlayer *IQNet::GetPlayerBySmallId(BYTE SmallId){ return &m_player[0]; } IQNetPlayer *IQNet::GetPlayerByXuid(PlayerUID xuid){ return &m_player[0]; } -DWORD IQNet::GetPlayerCount() { return 1; } +DWORD IQNet::GetPlayerCount() { return s_playerCount; } QNET_STATE IQNet::GetState() { return _bQNetStubGameRunning ? QNET_STATE_GAME_PLAY : QNET_STATE_IDLE; } -bool IQNet::IsHost() { return true; } +bool IQNet::IsHost() { return s_isHosting; } HRESULT IQNet::JoinGameFromInviteInfo(DWORD dwUserIndex, DWORD dwUserMask, const INVITE_INFO *pInviteInfo) { return S_OK; } -void IQNet::HostGame() { _bQNetStubGameRunning = true; } -void IQNet::EndGame() { _bQNetStubGameRunning = false; } +void IQNet::HostGame() { _bQNetStubGameRunning = true; s_isHosting = true; } +void IQNet::ClientJoinGame() { _bQNetStubGameRunning = true; s_isHosting = false; } +void IQNet::EndGame() { _bQNetStubGameRunning = false; s_isHosting = false; } DWORD MinecraftDynamicConfigurations::GetTrialTime() { return DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME; } diff --git a/Minecraft.World/AbstractContainerMenu.cpp b/Minecraft.World/AbstractContainerMenu.cpp index 6e00be6d..f775fb7a 100644 --- a/Minecraft.World/AbstractContainerMenu.cpp +++ b/Minecraft.World/AbstractContainerMenu.cpp @@ -552,13 +552,13 @@ bool AbstractContainerMenu::isPauseScreen() void AbstractContainerMenu::setItem(unsigned int slot, shared_ptr item) { - if (slot >= slots->size()) return; + if (slot >= slots.size()) return; getSlot(slot)->set(item); } void AbstractContainerMenu::setAll(ItemInstanceArray *items) { - for (unsigned int i = 0; i < items->length && i < slots->size(); i++) + for (unsigned int i = 0; i < items->length && i < slots.size(); i++) { getSlot(i)->set( (*items)[i] ); } diff --git a/Minecraft.World/ByteArrayTag.h b/Minecraft.World/ByteArrayTag.h index 6b797845..0e87607f 100644 --- a/Minecraft.World/ByteArrayTag.h +++ b/Minecraft.World/ByteArrayTag.h @@ -18,7 +18,7 @@ public: dos->write(data); } - void load(DataInput *dis) + void load(DataInput *dis, int tagDepth) { int length = dis->readInt(); if (length < 0 || length > 2 * 1024 * 1024) length = 0; diff --git a/Minecraft.World/OldChunkStorage.cpp b/Minecraft.World/OldChunkStorage.cpp index acfaecc3..54d510a4 100644 --- a/Minecraft.World/OldChunkStorage.cpp +++ b/Minecraft.World/OldChunkStorage.cpp @@ -490,7 +490,7 @@ LevelChunk *OldChunkStorage::load(Level *level, DataInputStream *dis) { CompoundTag *teTag = tileTicks->get(i); - level->forceAddTileTick(teTag->getInt(L"x"), teTag->getInt(L"y"), teTag->getInt(L"z"), teTag->getInt(L"i"), teTag->getInt(L"t")); + level->forceAddTileTick(teTag->getInt(L"x"), teTag->getInt(L"y"), teTag->getInt(L"z"), teTag->getInt(L"i"), teTag->getInt(L"t"), teTag->getInt(L"p")); } } } diff --git a/Minecraft.World/RegionFileCache.cpp b/Minecraft.World/RegionFileCache.cpp index 06bd498a..75485ceb 100644 --- a/Minecraft.World/RegionFileCache.cpp +++ b/Minecraft.World/RegionFileCache.cpp @@ -126,7 +126,4 @@ DataOutputStream *RegionFileCache::_getChunkDataOutputStream(ConsoleSaveFile *sa } -RegionFileCache::~RegionFileCache() -{ - _clear(); -} + diff --git a/Minecraft.World/RegionFileCache.h b/Minecraft.World/RegionFileCache.h index 9361ca4f..ae660baa 100644 --- a/Minecraft.World/RegionFileCache.h +++ b/Minecraft.World/RegionFileCache.h @@ -17,7 +17,7 @@ private: public: // Made public and non-static so we can have a cache for input and output files RegionFileCache() { InitializeCriticalSectionAndSpinCount(&m_cs, 4000); } - ~RegionFileCache() { DeleteCriticalSection(&m_cs); } + ~RegionFileCache() { _clear(); DeleteCriticalSection(&m_cs); } RegionFile *_getRegionFile(ConsoleSaveFile *saveFile, const wstring &prefix, int chunkX, int chunkZ); // 4J - TODO was synchronized void _clear(); // 4J - TODO was synchronized diff --git a/Minecraft.World/Tag.cpp b/Minecraft.World/Tag.cpp index 2cd9c229..f27130ae 100644 --- a/Minecraft.World/Tag.cpp +++ b/Minecraft.World/Tag.cpp @@ -115,7 +115,7 @@ Tag *Tag::readNamedTag(DataInput *dis) Tag *tag = newTag(type, name); if (tag == NULL) { depth--; return new EndTag(); } - tag->load(dis); + tag->load(dis, depth + 1); depth--; return tag; }