summaryrefslogtreecommitdiffstats
path: root/src/Blocks/BroadcastInterface.h
blob: d7c17b564134ce1936c857637fe312e32d888c1f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147

#pragma once

#include "../Defines.h"
#include "../Scoreboard.h"

// fwd:
class cClientHandle;
class cCompositeChat;
class cPlayer;
class cWorld;
enum class EffectID : Int32;



class cBroadcastInterface
{
  public:
	virtual ~cBroadcastInterface() {}

	// Broadcast respective packets to all clients of the chunk where the event is taking place
	// (Please keep these alpha-sorted)
	virtual void BroadcastAttachEntity(const cEntity & a_Entity, const cEntity & a_Vehicle) = 0;
	virtual void BroadcastBlockAction(
		Vector3i a_BlockPos,
		Byte a_Byte1,
		Byte a_Byte2,
		BLOCKTYPE a_BlockType,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastBlockBreakAnimation(
		UInt32 a_EntityID,
		Vector3i a_BlockPos,
		Int8 a_Stage,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastBlockEntity(Vector3i a_BlockPos, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastBossBarUpdateHealth(const cEntity & a_Entity, UInt32 a_UniqueID, float a_FractionFilled) = 0;
	virtual void BroadcastChat(
		const AString & a_Message,
		const cClientHandle * a_Exclude = nullptr,
		eMessageType a_ChatPrefix = mtCustom
	) = 0;
	virtual void BroadcastChatInfo(const AString & a_Message, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastChatFailure(const AString & a_Message, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastChatSuccess(const AString & a_Message, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastChatWarning(const AString & a_Message, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastChatFatal(const AString & a_Message, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastChatDeath(const AString & a_Message, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastChat(const cCompositeChat & a_Message, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastCollectEntity(
		const cEntity & a_Collected,
		const cEntity & a_Collector,
		unsigned a_Count,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastDestroyEntity(const cEntity & a_Entity, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastDetachEntity(const cEntity & a_Entity, const cEntity & a_PreviousVehicle) = 0;
	virtual void BroadcastEntityEffect(
		const cEntity & a_Entity,
		int a_EffectID,
		int a_Amplifier,
		int a_Duration,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastEntityEquipment(
		const cEntity & a_Entity,
		short a_SlotNum,
		const cItem & a_Item,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastEntityHeadLook(const cEntity & a_Entity, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastEntityLook(const cEntity & a_Entity, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastEntityMetadata(const cEntity & a_Entity, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastEntityPosition(const cEntity & a_Entity, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastEntityVelocity(const cEntity & a_Entity, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastEntityAnimation(
		const cEntity & a_Entity,
		EntityAnimation a_Animation,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastLeashEntity(const cEntity & a_Entity, const cEntity & a_EntityLeashedTo) = 0;
	virtual void BroadcastParticleEffect(
		const AString & a_ParticleName,
		Vector3f a_Src,
		Vector3f a_Offset,
		float a_ParticleData,
		int a_ParticleAmount,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastParticleEffect(
		const AString & a_ParticleName,
		Vector3f a_Src,
		Vector3f a_Offset,
		float a_ParticleData,
		int a_ParticleAmount,
		std::array<int, 2> a_Data,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastPlayerListAddPlayer(const cPlayer & a_Player, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastPlayerListHeaderFooter(const cCompositeChat & a_Header, const cCompositeChat & a_Footer) = 0;
	virtual void BroadcastPlayerListRemovePlayer(
		const cPlayer & a_Player,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastPlayerListUpdateDisplayName(
		const cPlayer & a_Player,
		const AString & a_CustomName,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastPlayerListUpdateGameMode(
		const cPlayer & a_Player,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastPlayerListUpdatePing() = 0;
	virtual void BroadcastRemoveEntityEffect(
		const cEntity & a_Entity,
		int a_EffectID,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastScoreboardObjective(const AString & a_Name, const AString & a_DisplayName, Byte a_Mode) = 0;
	virtual void BroadcastScoreUpdate(
		const AString & a_Objective,
		const AString & a_PlayerName,
		cObjective::Score a_Score,
		Byte a_Mode
	) = 0;
	virtual void BroadcastDisplayObjective(const AString & a_Objective, cScoreboard::eDisplaySlot a_Display) = 0;
	virtual void BroadcastSoundEffect(
		const AString & a_SoundName,
		Vector3d a_Position,
		float a_Volume,
		float a_Pitch,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastSoundParticleEffect(
		const EffectID a_EffectID,
		Vector3i a_SrcPos,
		int a_Data,
		const cClientHandle * a_Exclude = nullptr
	) = 0;
	virtual void BroadcastSpawnEntity(cEntity & a_Entity, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastThunderbolt(Vector3i a_BlockPos, const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastTimeUpdate(const cClientHandle * a_Exclude = nullptr) = 0;
	virtual void BroadcastUnleashEntity(const cEntity & a_Entity) = 0;
	virtual void BroadcastWeather(eWeather a_Weather, const cClientHandle * a_Exclude = nullptr) = 0;
};