aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/RespawnPacket.cpp
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.World/RespawnPacket.cpp
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.World/RespawnPacket.cpp')
-rw-r--r--Minecraft.World/RespawnPacket.cpp97
1 files changed, 97 insertions, 0 deletions
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 <iostream>
+#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;
+}