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:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user