Added support for additional data in the ParticleEffect Packet
Also started refactoring how broadcasts are handled
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
#include "../Map.h"
|
||||
#include "../ByteBuffer.h"
|
||||
|
||||
#include <array>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -98,6 +100,7 @@ public:
|
||||
virtual void SendPlayerAbilities (void) = 0;
|
||||
virtual void SendEntityAnimation (const cEntity & a_Entity, char a_Animation) = 0;
|
||||
virtual void SendParticleEffect (const AString & a_SoundName, float a_SrcX, float a_SrcY, float a_SrcZ, float a_OffsetX, float a_OffsetY, float a_OffsetZ, float a_ParticleData, int a_ParticleAmount) = 0;
|
||||
virtual void SendParticleEffect (const AString & a_SoundName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array<int, 2> a_Data) = 0;
|
||||
virtual void SendPlayerListAddPlayer (const cPlayer & a_Player) = 0;
|
||||
virtual void SendPlayerListRemovePlayer (const cPlayer & a_Player) = 0;
|
||||
virtual void SendPlayerListUpdateGameMode (const cPlayer & a_Player) = 0;
|
||||
|
||||
@@ -804,6 +804,16 @@ void cProtocol172::SendParticleEffect(const AString & a_ParticleName, float a_Sr
|
||||
|
||||
|
||||
|
||||
void cProtocol172::SendParticleEffect(const AString & a_ParticleName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array<int, 2> a_Data)
|
||||
{
|
||||
// 1.72 doesn't support extra data
|
||||
this->SendParticleEffect(a_ParticleName, a_Src.x, a_Src.y, a_Src.z, a_Offset.x, a_Offset.y, a_Offset.z, a_ParticleData, a_ParticleAmount);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cProtocol172::SendPlayerListAddPlayer(const cPlayer & a_Player)
|
||||
{
|
||||
ASSERT(m_State == 3); // In game mode?
|
||||
|
||||
@@ -99,6 +99,7 @@ public:
|
||||
virtual void SendMapInfo (int a_ID, unsigned int a_Scale) override;
|
||||
virtual void SendPaintingSpawn (const cPainting & a_Painting) override;
|
||||
virtual void SendParticleEffect (const AString & a_ParticleName, float a_SrcX, float a_SrcY, float a_SrcZ, float a_OffsetX, float a_OffsetY, float a_OffsetZ, float a_ParticleData, int a_ParticleAmount) override;
|
||||
virtual void SendParticleEffect (const AString & a_ParticleName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array<int, 2> a_Data) override;
|
||||
virtual void SendPickupSpawn (const cPickup & a_Pickup) override;
|
||||
virtual void SendPlayerAbilities (void) override;
|
||||
virtual void SendPlayerListAddPlayer (const cPlayer & a_Player) override;
|
||||
|
||||
@@ -802,6 +802,50 @@ void cProtocol180::SendParticleEffect(const AString & a_ParticleName, float a_Sr
|
||||
|
||||
|
||||
|
||||
void cProtocol180::SendParticleEffect(const AString & a_ParticleName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array<int, 2> a_Data)
|
||||
{
|
||||
ASSERT(m_State == 3); // In game mode?
|
||||
int ParticleID = GetParticleID(a_ParticleName);
|
||||
|
||||
cPacketizer Pkt(*this, 0x2A);
|
||||
Pkt.WriteBEInt32(ParticleID);
|
||||
Pkt.WriteBool(false);
|
||||
Pkt.WriteBEFloat(a_Src.x);
|
||||
Pkt.WriteBEFloat(a_Src.y);
|
||||
Pkt.WriteBEFloat(a_Src.z);
|
||||
Pkt.WriteBEFloat(a_Offset.x);
|
||||
Pkt.WriteBEFloat(a_Offset.y);
|
||||
Pkt.WriteBEFloat(a_Offset.z);
|
||||
Pkt.WriteBEFloat(a_ParticleData);
|
||||
Pkt.WriteBEInt32(a_ParticleAmount);
|
||||
switch (ParticleID)
|
||||
{
|
||||
// iconcrack
|
||||
case 36:
|
||||
{
|
||||
Pkt.WriteVarInt32(static_cast<UInt32>(a_Data[0]));
|
||||
Pkt.WriteVarInt32(static_cast<UInt32>(a_Data[1]));
|
||||
break;
|
||||
}
|
||||
// blockcrack
|
||||
// blockdust
|
||||
case 37:
|
||||
case 38:
|
||||
{
|
||||
Pkt.WriteVarInt32(static_cast<UInt32>(a_Data[0]));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cProtocol180::SendPlayerListAddPlayer(const cPlayer & a_Player)
|
||||
{
|
||||
ASSERT(m_State == 3); // In game mode?
|
||||
|
||||
@@ -97,6 +97,7 @@ public:
|
||||
virtual void SendPlayerAbilities (void) override;
|
||||
virtual void SendEntityAnimation (const cEntity & a_Entity, char a_Animation) override;
|
||||
virtual void SendParticleEffect (const AString & a_ParticleName, float a_SrcX, float a_SrcY, float a_SrcZ, float a_OffsetX, float a_OffsetY, float a_OffsetZ, float a_ParticleData, int a_ParticleAmount) override;
|
||||
virtual void SendParticleEffect (const AString & a_ParticleName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array<int, 2> a_Data) override;
|
||||
virtual void SendPlayerListAddPlayer (const cPlayer & a_Player) override;
|
||||
virtual void SendPlayerListRemovePlayer (const cPlayer & a_Player) override;
|
||||
virtual void SendPlayerListUpdateGameMode (const cPlayer & a_Player) override;
|
||||
|
||||
@@ -439,6 +439,17 @@ void cProtocolRecognizer::SendParticleEffect(const AString & a_ParticleName, flo
|
||||
|
||||
|
||||
|
||||
|
||||
void cProtocolRecognizer::SendParticleEffect(const AString & a_ParticleName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array<int, 2> a_Data)
|
||||
{
|
||||
ASSERT(m_Protocol != nullptr);
|
||||
m_Protocol->SendParticleEffect(a_ParticleName, a_Src, a_Offset, a_ParticleData, a_ParticleAmount, a_Data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cProtocolRecognizer::SendPaintingSpawn(const cPainting & a_Painting)
|
||||
{
|
||||
m_Protocol->SendPaintingSpawn(a_Painting);
|
||||
|
||||
@@ -81,6 +81,7 @@ public:
|
||||
virtual void SendMapDecorators (int a_ID, const cMapDecoratorList & a_Decorators, unsigned int m_Scale) override;
|
||||
virtual void SendMapInfo (int a_ID, unsigned int a_Scale) override;
|
||||
virtual void SendParticleEffect (const AString & a_ParticleName, float a_SrcX, float a_SrcY, float a_SrcZ, float a_OffsetX, float a_OffsetY, float a_OffsetZ, float a_ParticleData, int a_ParticleAmount) override;
|
||||
virtual void SendParticleEffect (const AString & a_ParticleName, Vector3f a_Src, Vector3f a_Offset, float a_ParticleData, int a_ParticleAmount, std::array<int, 2> a_Data) override;
|
||||
virtual void SendPaintingSpawn (const cPainting & a_Painting) override;
|
||||
virtual void SendPickupSpawn (const cPickup & a_Pickup) override;
|
||||
virtual void SendPlayerAbilities (void) override;
|
||||
|
||||
Reference in New Issue
Block a user