diff options
author | SmallJoker <SmallJoker@users.noreply.github.com> | 2018-12-04 20:37:48 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-04 20:37:48 +0100 |
commit | 3d66622772e66154b7624957a27f9be54c4c7c28 (patch) | |
tree | 7ff32e791a39d302f6d1306089b95cb23ebba838 /src/script/lua_api/l_nodemeta.cpp | |
parent | ae8d14b009650f0fe019301123793312406556e4 (diff) | |
download | minetest-3d66622772e66154b7624957a27f9be54c4c7c28.tar.gz minetest-3d66622772e66154b7624957a27f9be54c4c7c28.tar.bz2 minetest-3d66622772e66154b7624957a27f9be54c4c7c28.zip |
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
Diffstat (limited to 'src/script/lua_api/l_nodemeta.cpp')
-rw-r--r-- | src/script/lua_api/l_nodemeta.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/script/lua_api/l_nodemeta.cpp b/src/script/lua_api/l_nodemeta.cpp index 33b158ae0..22fc61782 100644 --- a/src/script/lua_api/l_nodemeta.cpp +++ b/src/script/lua_api/l_nodemeta.cpp @@ -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 |