X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fremoteplayer.cpp;h=f8f31d928f6f49fb49c8332ee1e2988f9cf7951f;hb=644d0ab2bb44df8a3aefb387736930150b7d0aed;hp=20c18ee155c3ce18495f4f4e23472763163aa63f;hpb=7528986e4449febead9b18b6118f0b096f7cf800;p=oweals%2Fminetest.git diff --git a/src/remoteplayer.cpp b/src/remoteplayer.cpp index 20c18ee15..f8f31d928 100644 --- a/src/remoteplayer.cpp +++ b/src/remoteplayer.cpp @@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "porting.h" // strlcpy #include "server.h" #include "settings.h" +#include "convert_json.h" /* RemotePlayer @@ -76,8 +77,8 @@ void RemotePlayer::serializeExtraAttributes(std::string &output) json_root[attr.first] = attr.second; } - Json::FastWriter writer; - output = writer.write(json_root); + output = fastWriteJson(json_root); + m_sao->setExtendedAttributeModified(false); } @@ -100,7 +101,7 @@ void RemotePlayer::deSerialize(std::istream &is, const std::string &playername, try { sao->setHPRaw(args.getS32("hp")); } catch(SettingNotFoundException &e) { - sao->setHPRaw(PLAYER_MAX_HP); + sao->setHPRaw(PLAYER_MAX_HP_DEFAULT); } try { @@ -120,9 +121,13 @@ void RemotePlayer::deSerialize(std::istream &is, const std::string &playername, try { const std::string &extended_attributes = args.get("extended_attributes"); - Json::Reader reader; + std::istringstream iss(extended_attributes); + Json::CharReaderBuilder builder; + builder.settings_["collectComments"] = false; + std::string errs; + Json::Value attr_root; - reader.parse(extended_attributes, attr_root); + Json::parseFromStream(builder, iss, &attr_root, &errs); const Json::Value::Members attr_list = attr_root.getMemberNames(); for (const auto &it : attr_list) {