summaryrefslogtreecommitdiffstats
path: root/src/Protocol/Protocol_1_13.cpp
diff options
context:
space:
mode:
author12xx12 <44411062+12xx12@users.noreply.github.com>2021-03-05 16:08:30 +0100
committerGitHub <noreply@github.com>2021-03-05 16:08:30 +0100
commit8405b8969f205ffae219361dfc03f3b4c680ce73 (patch)
treecc1aef4347d9e399b80a32afa16b657885fd3603 /src/Protocol/Protocol_1_13.cpp
parentAdd Mushrooms to Generator and fixed up the roofed forest (#5134) (diff)
downloadcuberite-8405b8969f205ffae219361dfc03f3b4c680ce73.tar
cuberite-8405b8969f205ffae219361dfc03f3b4c680ce73.tar.gz
cuberite-8405b8969f205ffae219361dfc03f3b4c680ce73.tar.bz2
cuberite-8405b8969f205ffae219361dfc03f3b4c680ce73.tar.lz
cuberite-8405b8969f205ffae219361dfc03f3b4c680ce73.tar.xz
cuberite-8405b8969f205ffae219361dfc03f3b4c680ce73.tar.zst
cuberite-8405b8969f205ffae219361dfc03f3b4c680ce73.zip
Diffstat (limited to 'src/Protocol/Protocol_1_13.cpp')
-rw-r--r--src/Protocol/Protocol_1_13.cpp90
1 files changed, 89 insertions, 1 deletions
diff --git a/src/Protocol/Protocol_1_13.cpp b/src/Protocol/Protocol_1_13.cpp
index afb0a9cc9..77cf86333 100644
--- a/src/Protocol/Protocol_1_13.cpp
+++ b/src/Protocol/Protocol_1_13.cpp
@@ -23,6 +23,7 @@ Implements the 1.13 protocol classes:
#include "../Mobs/IncludeAllMonsters.h"
+#include "../CompositeChat.h"
#include "../ClientHandle.h"
#include "../Root.h"
#include "../Server.h"
@@ -465,7 +466,6 @@ UInt32 cProtocol_1_13::GetProtocolMobType(eMonsterType a_MobType)
case mtZombieVillager: return 89;
default: return 0;
}
- UNREACHABLE("Unsupported mob type");
}
@@ -1338,6 +1338,94 @@ void cProtocol_1_13::WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mo
////////////////////////////////////////////////////////////////////////////////
// cProtocol_1_13_1:
+void cProtocol_1_13_1::SendBossBarAdd(UInt32 a_UniqueID, const cCompositeChat & a_Title, float a_FractionFilled, BossBarColor a_Color, BossBarDivisionType a_DivisionType, bool a_DarkenSky, bool a_PlayEndMusic, bool a_CreateFog)
+{
+ ASSERT(m_State == 3); // In game mode?
+
+ cPacketizer Pkt(*this, pktBossBar);
+ // TODO: Bad way to write a UUID, and it's not a true UUID, but this is functional for now.
+ Pkt.WriteBEUInt64(0);
+ Pkt.WriteBEUInt64(a_UniqueID);
+ Pkt.WriteVarInt32(0); // Add
+ Pkt.WriteString(a_Title.CreateJsonString());
+ Pkt.WriteBEFloat(a_FractionFilled);
+ Pkt.WriteVarInt32([a_Color]
+ {
+ switch (a_Color)
+ {
+ case BossBarColor::Pink: return 0U;
+ case BossBarColor::Blue: return 1U;
+ case BossBarColor::Red: return 2U;
+ case BossBarColor::Green: return 3U;
+ case BossBarColor::Yellow: return 4U;
+ case BossBarColor::Purple: return 5U;
+ case BossBarColor::White: return 6U;
+ }
+ }());
+ Pkt.WriteVarInt32([a_DivisionType]
+ {
+ switch (a_DivisionType)
+ {
+ case BossBarDivisionType::None: return 0U;
+ case BossBarDivisionType::SixNotches: return 1U;
+ case BossBarDivisionType::TenNotches: return 2U;
+ case BossBarDivisionType::TwelveNotches: return 3U;
+ case BossBarDivisionType::TwentyNotches: return 4U;
+ }
+ }());
+ {
+ UInt8 Flags = 0x00;
+ if (a_DarkenSky)
+ {
+ Flags |= 0x01;
+ }
+ if (a_PlayEndMusic)
+ {
+ Flags |= 0x02;
+ }
+ if (a_CreateFog)
+ {
+ Flags |= 0x04; // Only difference to 1.9 is fog now a separate flag
+ }
+ Pkt.WriteBEUInt8(Flags);
+ }
+}
+
+
+
+
+
+void cProtocol_1_13_1::SendBossBarUpdateFlags(UInt32 a_UniqueID, bool a_DarkenSky, bool a_PlayEndMusic, bool a_CreateFog)
+{
+ ASSERT(m_State == 3); // In game mode?
+
+ cPacketizer Pkt(*this, pktBossBar);
+ // TODO: Bad way to write a UUID, and it's not a true UUID, but this is functional for now.
+ Pkt.WriteBEUInt64(0);
+ Pkt.WriteBEUInt64(a_UniqueID);
+ Pkt.WriteVarInt32(5); // Update Flags
+ {
+ UInt8 Flags = 0x00;
+ if (a_DarkenSky)
+ {
+ Flags |= 0x01;
+ }
+ if (a_PlayEndMusic)
+ {
+ Flags |= 0x02;
+ }
+ if (a_CreateFog)
+ {
+ Flags |= 0x04; // Only difference to 1.9 is fog now a separate flag
+ }
+ Pkt.WriteBEUInt8(Flags);
+ }
+}
+
+
+
+
+
cProtocol::Version cProtocol_1_13_1::GetProtocolVersion()
{
return Version::v1_13_1;