Skip to content

Commit 946b82b

Browse files
committed
fix: fix TextPacket #358
1 parent 5afaf39 commit 946b82b

File tree

1 file changed

+50
-14
lines changed

1 file changed

+50
-14
lines changed

src/legacy/api/PlayerAPI.cpp

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,13 @@
111111
#include "mc/world/scores/ScoreboardId.h"
112112
#include "mc/world/scores/ScoreboardOperationResult.h"
113113

114-
SetScorePacket::SetScorePacket() = default;
114+
SetScorePacket::SetScorePacket() { mType = ScorePacketType::Change; }
115+
ToastRequestPacket::ToastRequestPacket() { mSerializationMode = SerializationMode::ManualOnly; }
116+
ToastRequestPacketPayload::ToastRequestPacketPayload() = default;
117+
SetDisplayObjectivePacket::SetDisplayObjectivePacket() { mSerializationMode = SerializationMode::ManualOnly; }
118+
SetDisplayObjectivePacketPayload::SetDisplayObjectivePacketPayload() { mSortOrder = ObjectiveSortOrder::Ascending; }
119+
RemoveObjectivePacketPayload::RemoveObjectivePacketPayload() = default;
120+
RemoveObjectivePacket::RemoveObjectivePacket() { mSerializationMode = SerializationMode::ManualOnly; }
115121

116122
//////////////////// Class Definition ////////////////////
117123

@@ -746,8 +752,28 @@ Local<Value> McClass::broadcast(Arguments const& args) {
746752
int newType = args[1].asNumber().toInt32();
747753
if (newType >= 0 && newType <= 11) type = static_cast<TextPacketType>(newType);
748754
}
755+
749756
TextPacket pkt;
750-
pkt.mBody = TextPacket::MessageOnly(type, args[0].asString().toString());
757+
switch (type) {
758+
case TextPacketType::Raw:
759+
case TextPacketType::Tip:
760+
case TextPacketType::SystemMessage:
761+
case TextPacketType::TextObject:
762+
case TextPacketType::TextObjectWhisper:
763+
case TextPacketType::TextObjectAnnouncement:
764+
pkt.mBody = TextPacket::MessageOnly(type, args[0].asString().toString());
765+
break;
766+
case TextPacketType::Chat:
767+
case TextPacketType::Whisper:
768+
case TextPacketType::Announcement:
769+
pkt.mBody = TextPacket::AuthorAndMessage(type, "", args[0].asString().toString());
770+
break;
771+
case TextPacketType::Translate:
772+
case TextPacketType::Popup:
773+
case TextPacketType::JukeboxPopup:
774+
pkt.mBody = TextPacket::MessageAndParams(type, args[0].asString().toString(), {});
775+
}
776+
751777
pkt.sendToClients();
752778
return Boolean::newBoolean(true);
753779
}
@@ -1623,8 +1649,27 @@ Local<Value> PlayerClass::tell(Arguments const& args) const {
16231649
if (newType >= 0 && newType <= 11) type = static_cast<TextPacketType>(newType);
16241650
}
16251651

1626-
TextPacket pkt = TextPacket();
1627-
pkt.mBody = TextPacket::MessageOnly(type, args[0].asString().toString());
1652+
TextPacket pkt;
1653+
switch (type) {
1654+
case TextPacketType::Raw:
1655+
case TextPacketType::Tip:
1656+
case TextPacketType::SystemMessage:
1657+
case TextPacketType::TextObject:
1658+
case TextPacketType::TextObjectWhisper:
1659+
case TextPacketType::TextObjectAnnouncement:
1660+
pkt.mBody = TextPacket::MessageOnly(type, args[0].asString().toString());
1661+
break;
1662+
case TextPacketType::Chat:
1663+
case TextPacketType::Whisper:
1664+
case TextPacketType::Announcement:
1665+
pkt.mBody = TextPacket::AuthorAndMessage(type, "", args[0].asString().toString());
1666+
break;
1667+
case TextPacketType::Translate:
1668+
case TextPacketType::Popup:
1669+
case TextPacketType::JukeboxPopup:
1670+
pkt.mBody = TextPacket::MessageAndParams(type, args[0].asString().toString(), {});
1671+
}
1672+
16281673
player->sendNetworkPacket(pkt);
16291674
return Boolean::newBoolean(true);
16301675
}
@@ -2249,9 +2294,6 @@ Local<Value> PlayerClass::deleteScore(Arguments const& args) const {
22492294
CATCH_AND_THROW
22502295
}
22512296

2252-
SetDisplayObjectivePacket::SetDisplayObjectivePacket() = default;
2253-
SetDisplayObjectivePacketPayload::SetDisplayObjectivePacketPayload() = default;
2254-
22552297
Local<Value> PlayerClass::setSidebar(Arguments const& args) const {
22562298
CHECK_ARGS_COUNT(args, 2);
22572299
CHECK_ARG_TYPE(args[0], ValueKind::kString);
@@ -2266,7 +2308,7 @@ Local<Value> PlayerClass::setSidebar(Arguments const& args) const {
22662308
auto source = args[1].asObject();
22672309
auto keys = source.getKeyNames();
22682310
for (auto& key : keys) {
2269-
data.push_back(make_pair(key, source.get(key).asNumber().toInt32()));
2311+
data.emplace_back(key, source.get(key).asNumber().toInt32());
22702312
}
22712313

22722314
int sortOrder = 1;
@@ -2298,9 +2340,6 @@ Local<Value> PlayerClass::setSidebar(Arguments const& args) const {
22982340
CATCH_AND_THROW
22992341
}
23002342

2301-
RemoveObjectivePacketPayload::RemoveObjectivePacketPayload() = default;
2302-
RemoveObjectivePacket::RemoveObjectivePacket() = default;
2303-
23042343
Local<Value> PlayerClass::removeSidebar(Arguments const&) const {
23052344
try {
23062345
Player* player = get();
@@ -3532,9 +3571,6 @@ Local<Value> PlayerClass::removeItem(Arguments const& args) const {
35323571
CATCH_AND_THROW
35333572
}
35343573

3535-
ToastRequestPacket::ToastRequestPacket() = default;
3536-
ToastRequestPacketPayload::ToastRequestPacketPayload() = default;
3537-
35383574
Local<Value> PlayerClass::sendToast(Arguments const& args) const {
35393575
CHECK_ARGS_COUNT(args, 2);
35403576
CHECK_ARG_TYPE(args[0], ValueKind::kString);

0 commit comments

Comments
 (0)