void cFireworkItem::WriteToNBTCompound(const cFireworkItem & a_FireworkItem, cFastNBTWriter & a_Writer, const ENUM_ITEM_ID a_Type) { switch (a_Type) { case E_ITEM_FIREWORK_ROCKET: { a_Writer.BeginCompound("Fireworks"); a_Writer.AddByte("Flight", a_FireworkItem.m_FlightTimeInTicks / 20); a_Writer.BeginList("Explosions", TAG_Compound); a_Writer.BeginCompound(""); a_Writer.AddByte("Flicker", a_FireworkItem.m_HasFlicker); a_Writer.AddByte("Trail", a_FireworkItem.m_HasTrail); a_Writer.AddByte("Type", a_FireworkItem.m_Type); if (!a_FireworkItem.m_Colours.empty()) { a_Writer.AddIntArray("Colors", &(a_FireworkItem.m_Colours[0]), a_FireworkItem.m_Colours.size()); } if (!a_FireworkItem.m_FadeColours.empty()) { a_Writer.AddIntArray("FadeColors", &(a_FireworkItem.m_FadeColours[0]), a_FireworkItem.m_FadeColours.size()); } a_Writer.EndCompound(); a_Writer.EndList(); a_Writer.EndCompound(); break; } case E_ITEM_FIREWORK_STAR: { a_Writer.BeginCompound("Explosion"); a_Writer.AddByte("Flicker", a_FireworkItem.m_HasFlicker); a_Writer.AddByte("Trail", a_FireworkItem.m_HasTrail); a_Writer.AddByte("Type", a_FireworkItem.m_Type); if (!a_FireworkItem.m_Colours.empty()) { a_Writer.AddIntArray("Colors", &(a_FireworkItem.m_Colours[0]), a_FireworkItem.m_Colours.size()); } if (!a_FireworkItem.m_FadeColours.empty()) { a_Writer.AddIntArray("FadeColors", &(a_FireworkItem.m_FadeColours[0]), a_FireworkItem.m_FadeColours.size()); } a_Writer.EndCompound(); break; } default: ASSERT(!"Unhandled firework item!"); break; } }
void cEnchantments::WriteToNBTCompound(cFastNBTWriter & a_Writer, const AString & a_ListTagName) const { // Write the enchantments into the specified NBT writer // begin with the LIST tag of the specified name ("ench" or "StoredEnchantments") a_Writer.BeginList(a_ListTagName, TAG_Compound); for (cMap::const_iterator itr = m_Enchantments.begin(), end = m_Enchantments.end(); itr != end; ++itr) { a_Writer.BeginCompound(""); a_Writer.AddShort("id", itr->first); a_Writer.AddShort("lvl", itr->second); a_Writer.EndCompound(); } // for itr - m_Enchantments[] a_Writer.EndList(); }
void cMapSerializer::SaveMapToNBT(cFastNBTWriter & a_Writer) { a_Writer.BeginCompound("data"); a_Writer.AddByte("scale", m_Map->GetScale()); a_Writer.AddByte("dimension", (int) m_Map->GetDimension()); a_Writer.AddShort("width", m_Map->GetWidth()); a_Writer.AddShort("height", m_Map->GetHeight()); a_Writer.AddInt("xCenter", m_Map->GetCenterX()); a_Writer.AddInt("zCenter", m_Map->GetCenterZ()); const cMap::cColorList & Data = m_Map->GetData(); a_Writer.AddByteArray("colors", (char *)Data.data(), Data.size()); a_Writer.EndCompound(); }
void cScoreboardSerializer::SaveScoreboardToNBT(cFastNBTWriter & a_Writer) { a_Writer.BeginCompound("data"); a_Writer.BeginList("Objectives", TAG_Compound); for (cScoreboard::cObjectiveMap::const_iterator it = m_ScoreBoard->m_Objectives.begin(); it != m_ScoreBoard->m_Objectives.end(); ++it) { const cObjective & Objective = it->second; a_Writer.BeginCompound(""); a_Writer.AddString("CriteriaName", cObjective::TypeToString(Objective.GetType())); a_Writer.AddString("DisplayName", Objective.GetDisplayName()); a_Writer.AddString("Name", it->first); a_Writer.EndCompound(); } a_Writer.EndList(); // Objectives a_Writer.BeginList("PlayerScores", TAG_Compound); for (cScoreboard::cObjectiveMap::const_iterator it = m_ScoreBoard->m_Objectives.begin(); it != m_ScoreBoard->m_Objectives.end(); ++it) { const cObjective & Objective = it->second; for (cObjective::cScoreMap::const_iterator it2 = Objective.m_Scores.begin(); it2 != Objective.m_Scores.end(); ++it2) { a_Writer.BeginCompound(""); a_Writer.AddInt("Score", it2->second); a_Writer.AddString("Name", it2->first); a_Writer.AddString("Objective", it->first); a_Writer.EndCompound(); } } a_Writer.EndList(); // PlayerScores a_Writer.BeginList("Teams", TAG_Compound); for (cScoreboard::cTeamMap::const_iterator it = m_ScoreBoard->m_Teams.begin(); it != m_ScoreBoard->m_Teams.end(); ++it) { const cTeam & Team = it->second; a_Writer.BeginCompound(""); a_Writer.AddByte("AllowFriendlyFire", Team.AllowsFriendlyFire() ? 1 : 0); a_Writer.AddByte("SeeFriendlyInvisibles", Team.CanSeeFriendlyInvisible() ? 1 : 0); a_Writer.AddString("DisplayName", Team.GetDisplayName()); a_Writer.AddString("Name", it->first); a_Writer.AddString("Prefix", Team.GetPrefix()); a_Writer.AddString("Suffix", Team.GetSuffix()); a_Writer.BeginList("Players", TAG_String); for (cTeam::cPlayerNameSet::const_iterator it2 = Team.m_Players.begin(); it2 != Team.m_Players.end(); ++it2) { a_Writer.AddString("", *it2); } a_Writer.EndList(); a_Writer.EndCompound(); } a_Writer.EndList(); // Teams a_Writer.BeginCompound("DisplaySlots"); cObjective * Objective = m_ScoreBoard->GetObjectiveIn(cScoreboard::dsList); a_Writer.AddString("slot_0", (Objective == nullptr) ? "" : Objective->GetName()); Objective = m_ScoreBoard->GetObjectiveIn(cScoreboard::dsSidebar); a_Writer.AddString("slot_1", (Objective == nullptr) ? "" : Objective->GetName()); Objective = m_ScoreBoard->GetObjectiveIn(cScoreboard::dsName); a_Writer.AddString("slot_2", (Objective == nullptr) ? "" : Objective->GetName()); a_Writer.EndCompound(); // DisplaySlots a_Writer.EndCompound(); // Data }