Jelajahi Sumber

Send to clients node metadata that changed to become empty (#11597)

Jude Melton-Houghton 2 tahun lalu
induk
melakukan
7423c4c11e
3 mengubah file dengan 5 tambahan dan 5 penghapusan
  1. 3 3
      src/nodemetadata.cpp
  2. 1 1
      src/nodemetadata.h
  3. 1 1
      src/server.cpp

+ 3 - 3
src/nodemetadata.cpp

@@ -113,13 +113,13 @@ int NodeMetadata::countNonPrivate() const
 */
 
 void NodeMetadataList::serialize(std::ostream &os, u8 blockver, bool disk,
-	bool absolute_pos) const
+	bool absolute_pos, bool include_empty) const
 {
 	/*
 		Version 0 is a placeholder for "nothing to see here; go away."
 	*/
 
-	u16 count = countNonEmpty();
+	u16 count = include_empty ? m_data.size() : countNonEmpty();
 	if (count == 0) {
 		writeU8(os, 0); // version
 		return;
@@ -134,7 +134,7 @@ void NodeMetadataList::serialize(std::ostream &os, u8 blockver, bool disk,
 			i != m_data.end(); ++i) {
 		v3s16 p = i->first;
 		NodeMetadata *data = i->second;
-		if (data->empty())
+		if (!include_empty && data->empty())
 			continue;
 
 		if (absolute_pos) {

+ 1 - 1
src/nodemetadata.h

@@ -82,7 +82,7 @@ public:
 	~NodeMetadataList();
 
 	void serialize(std::ostream &os, u8 blockver, bool disk = true,
-		bool absolute_pos = false) const;
+		bool absolute_pos = false, bool include_empty = false) const;
 	void deSerialize(std::istream &is, IItemDefManager *item_def_mgr,
 		bool absolute_pos = false);
 

+ 1 - 1
src/server.cpp

@@ -2320,7 +2320,7 @@ void Server::sendMetadataChanged(const std::list<v3s16> &meta_updates, float far
 
 		// Send the meta changes
 		std::ostringstream os(std::ios::binary);
-		meta_updates_list.serialize(os, client->net_proto_version, false, true);
+		meta_updates_list.serialize(os, client->serialization_version, false, true, true);
 		std::ostringstream oss(std::ios::binary);
 		compressZlib(os.str(), oss);