From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.World/RespawnPacket.cpp | 97 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 Minecraft.World/RespawnPacket.cpp (limited to 'Minecraft.World/RespawnPacket.cpp') diff --git a/Minecraft.World/RespawnPacket.cpp b/Minecraft.World/RespawnPacket.cpp new file mode 100644 index 00000000..5c04bbeb --- /dev/null +++ b/Minecraft.World/RespawnPacket.cpp @@ -0,0 +1,97 @@ +#include "stdafx.h" +#include +#include "InputOutputStream.h" +#include "PacketListener.h" +#include "RespawnPacket.h" +#include "LevelType.h" + +RespawnPacket::RespawnPacket() +{ + this->dimension = 0; + this->difficulty = 1; + this->mapSeed = 0; + this->mapHeight = 0; + this->playerGameType = NULL; + this->m_newSeaLevel = false; + m_pLevelType = NULL; + m_newEntityId = 0; + m_xzSize = LEVEL_MAX_WIDTH; + m_hellScale = HELL_LEVEL_MAX_SCALE; +} + +RespawnPacket::RespawnPacket(char dimension, __int64 mapSeed, int mapHeight, GameType *playerGameType, char difficulty, LevelType *pLevelType, bool newSeaLevel, int newEntityId, int xzSize, int hellScale) +{ + this->dimension = dimension; + this->mapSeed = mapSeed; + this->mapHeight = mapHeight; + this->playerGameType = playerGameType; + this->difficulty = difficulty; + this->m_newSeaLevel = newSeaLevel; + this->m_pLevelType=pLevelType; + this->m_newEntityId = newEntityId; + m_xzSize = xzSize; + m_hellScale = hellScale; + app.DebugPrintf("RespawnPacket - Difficulty = %d\n",difficulty); + +} + +void RespawnPacket::handle(PacketListener *listener) +{ + listener->handleRespawn(shared_from_this()); +} + +void RespawnPacket::read(DataInputStream *dis) //throws IOException +{ + dimension = dis->readByte(); + playerGameType = GameType::byId(dis->readByte()); + mapHeight = dis->readShort(); + wstring typeName = readUtf(dis, 16); + m_pLevelType = LevelType::getLevelType(typeName); + if (m_pLevelType == NULL) + { + m_pLevelType = LevelType::lvl_normal; + } + mapSeed = dis->readLong(); + difficulty = dis->readByte(); + m_newSeaLevel = dis->readBoolean(); + m_newEntityId = dis->readShort(); +#ifdef _LARGE_WORLDS + m_xzSize = dis->readShort(); + m_hellScale = dis->read(); +#endif + app.DebugPrintf("RespawnPacket::read - Difficulty = %d\n",difficulty); + +} + +void RespawnPacket::write(DataOutputStream *dos) //throws IOException +{ + dos->writeByte(dimension); + dos->writeByte(playerGameType->getId()); + dos->writeShort(mapHeight); + if (m_pLevelType == NULL) + { + writeUtf(L"", dos); + } + else + { + writeUtf(m_pLevelType->getGeneratorName(), dos); + } + dos->writeLong(mapSeed); + dos->writeByte(difficulty); + dos->writeBoolean(m_newSeaLevel); + dos->writeShort(m_newEntityId); +#ifdef _LARGE_WORLDS + dos->writeShort(m_xzSize); + dos->write(m_hellScale); +#endif +} + +int RespawnPacket::getEstimatedSize() +{ + int length=0; + if (m_pLevelType != NULL) + { + length = (int)m_pLevelType->getGeneratorName().length(); + } + return 13+length; +} -- cgit v1.2.3