From b3feddfef372618c8a9d7a0abcaf18cfad866c18 Mon Sep 17 00:00:00 2001 From: daoge <3523206925@qq.com> Date: Tue, 3 Mar 2026 03:04:10 +0800 Subject: feat: TU19 (Dec 2014) Features & Content (#155) * try to resolve merge conflict * feat: TU19 (Dec 2014) Features & Content (#32) * December 2014 files * Working release build * Fix compilation issues * Add sound to Windows64Media * Add DLC content and force Tutorial DLC * Revert "Add DLC content and force Tutorial DLC" This reverts commit 97a43994725008e35fceb984d5549df9c8cea470. * Disable broken light packing * Disable breakpoint during DLC texture map load Allows DLC loading but the DLC textures are still broken * Fix post build not working * ... * fix vs2022 build * fix cmake build --------- Co-authored-by: Loki --- Minecraft.World/MapItemSavedData.cpp | 50 +++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 9 deletions(-) (limited to 'Minecraft.World/MapItemSavedData.cpp') diff --git a/Minecraft.World/MapItemSavedData.cpp b/Minecraft.World/MapItemSavedData.cpp index d69a7f53..6304aa62 100644 --- a/Minecraft.World/MapItemSavedData.cpp +++ b/Minecraft.World/MapItemSavedData.cpp @@ -31,6 +31,8 @@ MapItemSavedData::HoldingPlayer::HoldingPlayer(shared_ptr player, const tick = 0; sendPosTick = 0; + step = 0; + hasSentInitial = false; // java ctor //this->player = player; @@ -50,6 +52,15 @@ MapItemSavedData::HoldingPlayer::~HoldingPlayer() charArray MapItemSavedData::HoldingPlayer::nextUpdatePacket(shared_ptr itemInstance) { + if (!hasSentInitial) + { + charArray data(2); + data[0] = HEADER_METADATA; + data[1] = parent->scale; + + hasSentInitial = true; + return data; + } if (--sendPosTick < 0) { sendPosTick = 4; @@ -128,8 +139,7 @@ charArray MapItemSavedData::HoldingPlayer::nextUpdatePacket(shared_ptr servPlayer = dynamic_pointer_cast(player); for (int d = 0; d < 10; d++) { - int column = (tick * 11) % (MapItem::IMAGE_WIDTH); - tick++; + int column = (tick++ * 11) % (MapItem::IMAGE_WIDTH); if (rowsDirtyMin[column] >= 0) { @@ -137,7 +147,7 @@ charArray MapItemSavedData::HoldingPlayer::nextUpdatePacket(shared_ptrgetInt(L"zCenter"); scale = tag->getByte(L"scale"); if (scale < 0) scale = 0; - if (scale > 4) scale = 4; + if (scale > MAX_SCALE) scale = MAX_SCALE; int width = tag->getShort(L"width"); int height = tag->getShort(L"height"); @@ -332,7 +341,7 @@ void MapItemSavedData::tickCarriedBy(shared_ptr player, shared_ptrgetFrame()->dir * 90) * 16 / 360); if (dimension < 0) { - int s = step / 10; + int s = (int) (playerLevel->getLevelData()->getDayTime() / 10); rot = (char) ((s * s * 34187121 + s * 121) >> 15 & 15); } #ifdef _LARGE_WORLDS @@ -412,7 +421,7 @@ void MapItemSavedData::tickCarriedBy(shared_ptr player, shared_ptryRot * 16 / 360 + 0.5); if (dimension < 0) { - int s = step / 10; + int s = (int) (playerLevel->getLevelData()->getDayTime() / 10); rot = (char) ((s * s * 34187121 + s * 121) >> 15 & 15); } @@ -494,7 +503,7 @@ void MapItemSavedData::setDirty(int x, int y0, int y1) void MapItemSavedData::handleComplexItemData(charArray &data) { - if (data[0] == 0) + if (data[0] == HEADER_COLOURS) { int xx = data[1] & 0xff; int yy = data[2] & 0xff; @@ -505,7 +514,7 @@ void MapItemSavedData::handleComplexItemData(charArray &data) setDirty(); } - else if (data[0] == 1) + else if (data[0] == HEADER_DECORATIONS) { for( unsigned int i = 0; i < decorations.size(); i++ ) { @@ -529,6 +538,29 @@ void MapItemSavedData::handleComplexItemData(charArray &data) decorations.push_back(new MapDecoration(img, x, y, rot, entityId, visible)); } } + else if (data[0] == HEADER_METADATA) + { + scale = data[1]; + } +} + +shared_ptr MapItemSavedData::getHoldingPlayer(shared_ptr player) +{ + shared_ptr hp = nullptr; + AUTO_VAR(it,carriedByPlayers.find(player)); + + if (it == carriedByPlayers.end()) + { + hp = shared_ptr( new HoldingPlayer(player, this) ); + carriedByPlayers[player] = hp; + carriedBy.push_back(hp); + } + else + { + hp = it->second; + } + + return hp; } // 4J Added -- cgit v1.2.3