From 8be1dd54bb17b3ba3e20960aa3c3f696d09facf7 Mon Sep 17 00:00:00 2001 From: nshah25 <68348722+nshah25@users.noreply.github.com> Date: Mon, 3 May 2021 16:07:09 -0400 Subject: Add player statistics to API (#5193) * Fixed issue #5166 Co-authored-by: 12xx12 <44411062+12xx12@users.noreply.github.com> Co-authored-by: Tiger Wang --- src/Protocol/Protocol_1_13.cpp | 47 +++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 26 deletions(-) (limited to 'src/Protocol/Protocol_1_13.cpp') diff --git a/src/Protocol/Protocol_1_13.cpp b/src/Protocol/Protocol_1_13.cpp index 44a011c76..336f3c339 100644 --- a/src/Protocol/Protocol_1_13.cpp +++ b/src/Protocol/Protocol_1_13.cpp @@ -142,24 +142,22 @@ void cProtocol_1_13::SendScoreboardObjective(const AString & a_Name, const AStri -void cProtocol_1_13::SendStatistics(const cStatManager & a_Manager) +void cProtocol_1_13::SendStatistics(const StatisticsManager & a_Manager) { ASSERT(m_State == 3); // In game mode? UInt32 Size = 0; - a_Manager.ForEachStatisticType([this, &Size](const auto & Store) + + for (const auto & [Statistic, Value] : a_Manager.Custom) { - for (const auto & Item : Store) - { - // Client balks at out-of-range values so there is no good default value - // We're forced to not send the statistics this protocol version doesn't support + // Client balks at out-of-range values so there is no good default value. + // We're forced to not send the statistics this protocol version doesn't support. - if (GetProtocolStatisticType(Item.first) != static_cast(-1)) - { - Size++; - } + if (GetProtocolStatisticType(Statistic) != static_cast(-1)) + { + Size++; } - }); + } // No need to check Size != 0 // Assume that the vast majority of the time there's at least one statistic to send @@ -167,22 +165,19 @@ void cProtocol_1_13::SendStatistics(const cStatManager & a_Manager) cPacketizer Pkt(*this, pktStatistics); Pkt.WriteVarInt32(Size); - a_Manager.ForEachStatisticType([this, &Pkt](const cStatManager::CustomStore & Store) + for (const auto & [Statistic, Value] : a_Manager.Custom) { - for (const auto & Item : Store) + const auto ID = GetProtocolStatisticType(Statistic); + if (ID == static_cast(-1)) { - const auto ID = GetProtocolStatisticType(Item.first); - if (ID == static_cast(-1)) - { - // Unsupported, don't send: - continue; - } - - Pkt.WriteVarInt32(8); // "Custom" category - Pkt.WriteVarInt32(ID); - Pkt.WriteVarInt32(static_cast(Item.second)); + // Unsupported, don't send: + continue; } - }); + + Pkt.WriteVarInt32(8); // "Custom" category. + Pkt.WriteVarInt32(ID); + Pkt.WriteVarInt32(static_cast(Value)); + } } @@ -588,7 +583,7 @@ UInt32 cProtocol_1_13::GetProtocolMobType(eMonsterType a_MobType) const -UInt32 cProtocol_1_13::GetProtocolStatisticType(Statistic a_Statistic) const +UInt32 cProtocol_1_13::GetProtocolStatisticType(const CustomStatistic a_Statistic) const { return Palette_1_13::From(a_Statistic); } @@ -1480,7 +1475,7 @@ UInt32 cProtocol_1_13_1::GetProtocolItemType(short a_ItemID, short a_ItemDamage) -UInt32 cProtocol_1_13_1::GetProtocolStatisticType(Statistic a_Statistic) const +UInt32 cProtocol_1_13_1::GetProtocolStatisticType(const CustomStatistic a_Statistic) const { return Palette_1_13_1::From(a_Statistic); } -- cgit v1.2.3