summaryrefslogtreecommitdiff
path: root/src/server/luaentity_sao.cpp
diff options
context:
space:
mode:
authorhecks <42101236+hecktest@users.noreply.github.com>2021-01-02 15:14:29 +0100
committerGitHub <noreply@github.com>2021-01-02 15:14:29 +0100
commitdd5a732fa90550066bb96305b64b6648903cc822 (patch)
tree1d39d1362e7619ff459eb6da5f1c9aab7629d1b6 /src/server/luaentity_sao.cpp
parentad58fb22064c7db223cb825596c12f93f2a75a26 (diff)
downloadminetest-dd5a732fa90550066bb96305b64b6648903cc822.tar.gz
minetest-dd5a732fa90550066bb96305b64b6648903cc822.tar.bz2
minetest-dd5a732fa90550066bb96305b64b6648903cc822.zip
Add on_deactivate callback for luaentities (#10723)
Diffstat (limited to 'src/server/luaentity_sao.cpp')
-rw-r--r--src/server/luaentity_sao.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/server/luaentity_sao.cpp b/src/server/luaentity_sao.cpp
index b39797531..c7277491a 100644
--- a/src/server/luaentity_sao.cpp
+++ b/src/server/luaentity_sao.cpp
@@ -112,6 +112,15 @@ void LuaEntitySAO::addedToEnvironment(u32 dtime_s)
}
}
+void LuaEntitySAO::dispatchScriptDeactivate()
+{
+ // Ensure that this is in fact a registered entity,
+ // and that it isn't already gone.
+ // The latter also prevents this from ever being called twice.
+ if (m_registered && !isGone())
+ m_env->getScriptIface()->luaentity_Deactivate(m_id);
+}
+
void LuaEntitySAO::step(float dtime, bool send_recommended)
{
if(!m_properties_sent)
@@ -302,7 +311,7 @@ u16 LuaEntitySAO::punch(v3f dir,
{
if (!m_registered) {
// Delete unknown LuaEntities when punched
- m_pending_removal = true;
+ markForRemoval();
return 0;
}
@@ -335,7 +344,7 @@ u16 LuaEntitySAO::punch(v3f dir,
clearParentAttachment();
clearChildAttachments();
m_env->getScriptIface()->luaentity_on_death(m_id, puncher);
- m_pending_removal = true;
+ markForRemoval();
}
actionstream << puncher->getDescription() << " (id=" << puncher->getId() <<