Chunks are successfully streamed to clients (in a bad a slow way, but whatever)
Fixed respawn packet for 1.2.2 git-svn-id: http://mc-server.googlecode.com/svn/trunk@350 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
d24c07a550
commit
a2f6ab93b6
@ -364,10 +364,12 @@ void cPlayer::Respawn()
|
|||||||
//Packet.m_CreativeMode = (char)GetWorld()->GetGameMode();
|
//Packet.m_CreativeMode = (char)GetWorld()->GetGameMode();
|
||||||
Packet.m_CreativeMode = (char)m_GameMode; //Set GameMode packet based on Player's GameMode;
|
Packet.m_CreativeMode = (char)m_GameMode; //Set GameMode packet based on Player's GameMode;
|
||||||
|
|
||||||
|
#if (MINECRAFT_1_2_2 != 1 )
|
||||||
//TODO Less hardcoded
|
//TODO Less hardcoded
|
||||||
Packet.m_World = 0;
|
Packet.m_World = 0;
|
||||||
|
|
||||||
Packet.m_MapSeed = GetWorld()->GetWorldSeed();
|
Packet.m_MapSeed = GetWorld()->GetWorldSeed();
|
||||||
|
#endif
|
||||||
|
|
||||||
//Send Packet
|
//Send Packet
|
||||||
m_ClientHandle->Send( Packet );
|
m_ClientHandle->Send( Packet );
|
||||||
|
@ -36,15 +36,23 @@ cPacket_MapChunk::cPacket_MapChunk(cChunk * a_Chunk)
|
|||||||
|
|
||||||
m_UnusedInt = 0;
|
m_UnusedInt = 0;
|
||||||
|
|
||||||
for( int i = 0; i < 16; ++i )
|
|
||||||
{
|
|
||||||
m_BitMap1 |= (1 << i);
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int DataSize = 16 * (4096 + 2048 + 2048 + 2048);
|
unsigned int DataSize = 16 * (4096 + 2048 + 2048 + 2048);
|
||||||
char* AllData = new char[ DataSize ];
|
char* AllData = new char[ DataSize ];
|
||||||
memset( AllData, 0, 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 );
|
uLongf CompressedSize = compressBound( DataSize );
|
||||||
char * CompressedBlockData = new char[CompressedSize];
|
char * CompressedBlockData = new char[CompressedSize];
|
||||||
|
|
||||||
|
@ -10,12 +10,21 @@
|
|||||||
void cPacket_Respawn::Serialize(AString & a_Data) const
|
void cPacket_Respawn::Serialize(AString & a_Data) const
|
||||||
{
|
{
|
||||||
AppendByte (a_Data, m_PacketID);
|
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_World);
|
||||||
AppendByte (a_Data, m_Difficulty);
|
AppendByte (a_Data, m_Difficulty);
|
||||||
AppendByte (a_Data, m_CreativeMode);
|
AppendByte (a_Data, m_CreativeMode);
|
||||||
AppendShort (a_Data, m_WorldHeight);
|
AppendShort (a_Data, m_WorldHeight);
|
||||||
AppendLong (a_Data, m_MapSeed);
|
AppendLong (a_Data, m_MapSeed);
|
||||||
AppendString16(a_Data, m_LevelType);
|
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 cPacket_Respawn::Parse(const char * a_Data, int a_Size)
|
||||||
{
|
{
|
||||||
int TotalBytes = 0;
|
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_World, TotalBytes);
|
||||||
HANDLE_PACKET_READ(ReadByte, m_Difficulty, TotalBytes);
|
HANDLE_PACKET_READ(ReadByte, m_Difficulty, TotalBytes);
|
||||||
HANDLE_PACKET_READ(ReadByte, m_CreativeMode, TotalBytes);
|
HANDLE_PACKET_READ(ReadByte, m_CreativeMode, TotalBytes);
|
||||||
HANDLE_PACKET_READ(ReadShort, m_WorldHeight, TotalBytes);
|
HANDLE_PACKET_READ(ReadShort, m_WorldHeight, TotalBytes);
|
||||||
HANDLE_PACKET_READ(ReadLong, m_MapSeed, TotalBytes);
|
HANDLE_PACKET_READ(ReadLong, m_MapSeed, TotalBytes);
|
||||||
HANDLE_PACKET_READ(ReadString16, m_LevelType, TotalBytes);
|
HANDLE_PACKET_READ(ReadString16, m_LevelType, TotalBytes);
|
||||||
|
#endif
|
||||||
return TotalBytes;
|
return TotalBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,24 +13,40 @@ class cPacket_Respawn : public cPacket
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
cPacket_Respawn()
|
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_World( 0 )
|
||||||
, m_Difficulty( 0 )
|
, m_Difficulty( 0 )
|
||||||
, m_CreativeMode( 0 )
|
, m_CreativeMode( 0 )
|
||||||
, m_WorldHeight( 0 )
|
, m_WorldHeight( 0 )
|
||||||
, m_MapSeed( 0 )
|
, m_MapSeed( 0 )
|
||||||
, m_LevelType( cPacket_Login::LEVEL_TYPE_DEFAULT )
|
, m_LevelType( cPacket_Login::LEVEL_TYPE_DEFAULT )
|
||||||
|
#endif
|
||||||
{ m_PacketID = E_RESPAWN; }
|
{ m_PacketID = E_RESPAWN; }
|
||||||
virtual cPacket* Clone() const { return new cPacket_Respawn( *this ); }
|
virtual cPacket* Clone() const { return new cPacket_Respawn( *this ); }
|
||||||
|
|
||||||
virtual int Parse(const char * a_Data, int a_Size) override;
|
virtual int Parse(const char * a_Data, int a_Size) override;
|
||||||
virtual void Serialize(AString & a_Data) const 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_World;
|
||||||
char m_Difficulty;
|
char m_Difficulty;
|
||||||
char m_CreativeMode;
|
char m_CreativeMode;
|
||||||
short m_WorldHeight;
|
short m_WorldHeight;
|
||||||
long long m_MapSeed;
|
long long m_MapSeed;
|
||||||
AString m_LevelType;
|
AString m_LevelType;
|
||||||
|
#endif
|
||||||
|
|
||||||
static const unsigned int c_Size = 1 + 1 + 1 + 1 + 2 + 8 + 2;
|
static const unsigned int c_Size = 1 + 1 + 1 + 1 + 2 + 8 + 2;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user