summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfaketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-03-01 19:56:56 +0100
committerfaketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-03-01 19:56:56 +0100
commita2f6ab93b6140740ca2562d5f82022a64c79feb6 (patch)
tree67b6272f417ea12dfa1b9bcf74d1fad15dc74802
parentClients can join the server, but chunks are sent completely empty (diff)
downloadcuberite-a2f6ab93b6140740ca2562d5f82022a64c79feb6.tar
cuberite-a2f6ab93b6140740ca2562d5f82022a64c79feb6.tar.gz
cuberite-a2f6ab93b6140740ca2562d5f82022a64c79feb6.tar.bz2
cuberite-a2f6ab93b6140740ca2562d5f82022a64c79feb6.tar.lz
cuberite-a2f6ab93b6140740ca2562d5f82022a64c79feb6.tar.xz
cuberite-a2f6ab93b6140740ca2562d5f82022a64c79feb6.tar.zst
cuberite-a2f6ab93b6140740ca2562d5f82022a64c79feb6.zip
-rw-r--r--source/cPlayer.cpp2
-rw-r--r--source/packets/cPacket_MapChunk.cpp18
-rw-r--r--source/packets/cPacket_Respawn.cpp18
-rw-r--r--source/packets/cPacket_Respawn.h16
4 files changed, 49 insertions, 5 deletions
diff --git a/source/cPlayer.cpp b/source/cPlayer.cpp
index c71f04d33..f013465de 100644
--- a/source/cPlayer.cpp
+++ b/source/cPlayer.cpp
@@ -364,10 +364,12 @@ void cPlayer::Respawn()
//Packet.m_CreativeMode = (char)GetWorld()->GetGameMode();
Packet.m_CreativeMode = (char)m_GameMode; //Set GameMode packet based on Player's GameMode;
+#if (MINECRAFT_1_2_2 != 1 )
//TODO Less hardcoded
Packet.m_World = 0;
Packet.m_MapSeed = GetWorld()->GetWorldSeed();
+#endif
//Send Packet
m_ClientHandle->Send( Packet );
diff --git a/source/packets/cPacket_MapChunk.cpp b/source/packets/cPacket_MapChunk.cpp
index 859db47f3..99afd9a40 100644
--- a/source/packets/cPacket_MapChunk.cpp
+++ b/source/packets/cPacket_MapChunk.cpp
@@ -36,15 +36,23 @@ cPacket_MapChunk::cPacket_MapChunk(cChunk * a_Chunk)
m_UnusedInt = 0;
- for( int i = 0; i < 16; ++i )
- {
- m_BitMap1 |= (1 << i);
- }
-
unsigned int DataSize = 16 * (4096 + 2048 + 2048 + 2048);
char* AllData = new char[ DataSize ];
memset( AllData, 0, DataSize );
+ unsigned int iterator = 0;
+ for( int i = 0; i < 8; ++i ) // Old world is only 8 high
+ {
+ m_BitMap1 |= (1 << i);
+ for( int y = 0; y < 16; ++y ) for( int z = 0; z < 16; ++z ) for( int x = 0; x < 16; ++x )
+ {
+ AllData[iterator] = a_Chunk->GetBlock( x, y+i*16, z );
+ ++iterator;
+ }
+
+ //iterator+=2048*2; // Ignore light and stuff
+ }
+
uLongf CompressedSize = compressBound( DataSize );
char * CompressedBlockData = new char[CompressedSize];
diff --git a/source/packets/cPacket_Respawn.cpp b/source/packets/cPacket_Respawn.cpp
index f438e8bde..12c30deaa 100644
--- a/source/packets/cPacket_Respawn.cpp
+++ b/source/packets/cPacket_Respawn.cpp
@@ -10,12 +10,21 @@
void cPacket_Respawn::Serialize(AString & a_Data) const
{
AppendByte (a_Data, m_PacketID);
+
+#if (MINECRAFT_1_2_2 == 1)
+ AppendInteger (a_Data, m_Dimension);
+ AppendByte (a_Data, m_Difficulty);
+ AppendByte (a_Data, m_CreativeMode);
+ AppendShort (a_Data, m_WorldHeight);
+ AppendString16(a_Data, m_LevelType);
+#else
AppendByte (a_Data, m_World);
AppendByte (a_Data, m_Difficulty);
AppendByte (a_Data, m_CreativeMode);
AppendShort (a_Data, m_WorldHeight);
AppendLong (a_Data, m_MapSeed);
AppendString16(a_Data, m_LevelType);
+#endif
}
@@ -25,12 +34,21 @@ void cPacket_Respawn::Serialize(AString & a_Data) const
int cPacket_Respawn::Parse(const char * a_Data, int a_Size)
{
int TotalBytes = 0;
+
+#if (MINECRAFT_1_2_2 == 1)
+ HANDLE_PACKET_READ(ReadInteger, m_Dimension, TotalBytes);
+ HANDLE_PACKET_READ(ReadByte, m_Difficulty, TotalBytes);
+ HANDLE_PACKET_READ(ReadByte, m_CreativeMode, TotalBytes);
+ HANDLE_PACKET_READ(ReadShort, m_WorldHeight, TotalBytes);
+ HANDLE_PACKET_READ(ReadString16, m_LevelType, TotalBytes);
+#else
HANDLE_PACKET_READ(ReadByte, m_World, TotalBytes);
HANDLE_PACKET_READ(ReadByte, m_Difficulty, TotalBytes);
HANDLE_PACKET_READ(ReadByte, m_CreativeMode, TotalBytes);
HANDLE_PACKET_READ(ReadShort, m_WorldHeight, TotalBytes);
HANDLE_PACKET_READ(ReadLong, m_MapSeed, TotalBytes);
HANDLE_PACKET_READ(ReadString16, m_LevelType, TotalBytes);
+#endif
return TotalBytes;
}
diff --git a/source/packets/cPacket_Respawn.h b/source/packets/cPacket_Respawn.h
index 7f5950945..dbb4957c5 100644
--- a/source/packets/cPacket_Respawn.h
+++ b/source/packets/cPacket_Respawn.h
@@ -13,24 +13,40 @@ class cPacket_Respawn : public cPacket
{
public:
cPacket_Respawn()
+#if (MINECRAFT_1_2_2 == 1)
+ : m_Dimension( 0 )
+ , m_Difficulty( 0 )
+ , m_CreativeMode( 0 )
+ , m_WorldHeight( 0 )
+ , m_LevelType( cPacket_Login::LEVEL_TYPE_DEFAULT )
+#else
: m_World( 0 )
, m_Difficulty( 0 )
, m_CreativeMode( 0 )
, m_WorldHeight( 0 )
, m_MapSeed( 0 )
, m_LevelType( cPacket_Login::LEVEL_TYPE_DEFAULT )
+#endif
{ m_PacketID = E_RESPAWN; }
virtual cPacket* Clone() const { return new cPacket_Respawn( *this ); }
virtual int Parse(const char * a_Data, int a_Size) override;
virtual void Serialize(AString & a_Data) const override;
+#if (MINECRAFT_1_2_2 == 1)
+ int m_Dimension;
+ char m_Difficulty;
+ char m_CreativeMode;
+ short m_WorldHeight;
+ AString m_LevelType;
+#else
char m_World;
char m_Difficulty;
char m_CreativeMode;
short m_WorldHeight;
long long m_MapSeed;
AString m_LevelType;
+#endif
static const unsigned int c_Size = 1 + 1 + 1 + 1 + 2 + 8 + 2;
};