1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Send only changed node metadata to clients instead of whole mapblock (#5268)

Includes newer style changes and fixes by est31

Improve the block position de-serialization
Add type NodeMetadataMap
This commit is contained in:
SmallJoker 2018-12-04 20:37:48 +01:00 committed by GitHub
parent ae8d14b009
commit 3d66622772
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 202 additions and 70 deletions

View file

@ -58,21 +58,17 @@ void NodeMetaRef::clearMeta()
m_env->getMap().removeNodeMetadata(m_p);
}
void NodeMetaRef::reportMetadataChange()
void NodeMetaRef::reportMetadataChange(const std::string *name)
{
// NOTE: This same code is in rollback_interface.cpp
// Inform other things that the metadata has changed
v3s16 blockpos = getNodeBlockPos(m_p);
NodeMetadata *meta = dynamic_cast<NodeMetadata*>(m_meta);
MapEditEvent event;
event.type = MEET_BLOCK_NODE_METADATA_CHANGED;
event.p = blockpos;
event.p = m_p;
event.is_private_change = name && meta && meta->isPrivate(*name);
m_env->getMap().dispatchEvent(&event);
// Set the block to be saved
MapBlock *block = m_env->getMap().getBlockNoCreateNoEx(blockpos);
if (block) {
block->raiseModified(MOD_STATE_WRITE_NEEDED,
MOD_REASON_REPORT_META_CHANGE);
}
}
// Exported functions