1
0

Improved command blocks

* Their command and previous output are displayed on the client
* They have a BlockHandler implementation, so you can't place blocks on
them anymore
+ As a side effect, implemented UpdateBlockEntity
This commit is contained in:
Tiger Wang
2014-01-19 00:54:38 +00:00
parent 36b9d42819
commit f8c8dcc7f3
11 changed files with 124 additions and 5 deletions

View File

@@ -892,6 +892,20 @@ void cProtocol172::SendUnloadChunk(int a_ChunkX, int a_ChunkZ)
void cProtocol172::SendUpdateBlockEntity(int a_BlockX, int a_BlockY, int a_BlockZ, Byte a_Action, cFastNBTWriter & a_NBT)
{
cPacketizer Pkt(*this, 0x35); // Update tile entity packet
Pkt.WriteInt(a_BlockX);
Pkt.WriteShort(a_BlockY);
Pkt.WriteInt(a_BlockZ);
Pkt.WriteByte(a_Action);
Pkt.WriteBlockEntity(a_NBT);
}
void cProtocol172::SendUpdateSign(int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4)
{
@@ -1819,6 +1833,17 @@ void cProtocol172::cPacketizer::WriteItem(const cItem & a_Item)
void cProtocol172::cPacketizer::WriteBlockEntity(const cFastNBTWriter & a_NBT)
{
AString Compressed;
CompressStringGZIP(a_NBT.GetResult().data(), a_NBT.GetResult().size(), Compressed);
WriteShort(Compressed.size());
WriteBuf(Compressed.data(), Compressed.size());
}
void cProtocol172::cPacketizer::WriteByteAngle(double a_Angle)
{