aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2022-12-04 12:35:14 +0100
committerGitHub <noreply@github.com>2022-12-04 12:35:14 +0100
commit37386b9c3cfc6746734f8c00fa99a44a63b8aeed (patch)
tree9baec3820a02044290eee400db4bcd2f2ddb674f /src
parentaa3505a9e4523c2a8bec5ca6368b3bc2068185ef (diff)
downloadminetest-37386b9c3cfc6746734f8c00fa99a44a63b8aeed.tar.xz
Expose dtime_s to LBM handler
Diffstat (limited to 'src')
-rw-r--r--src/script/lua_api/l_env.cpp6
-rw-r--r--src/script/lua_api/l_env.h2
-rw-r--r--src/serverenvironment.cpp7
-rw-r--r--src/serverenvironment.h6
4 files changed, 13 insertions, 8 deletions
diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp
index 642101166..45d444d55 100644
--- a/src/script/lua_api/l_env.cpp
+++ b/src/script/lua_api/l_env.cpp
@@ -109,7 +109,8 @@ void LuaABM::trigger(ServerEnvironment *env, v3s16 p, MapNode n,
lua_pop(L, 1); // Pop error handler
}
-void LuaLBM::trigger(ServerEnvironment *env, v3s16 p, MapNode n)
+void LuaLBM::trigger(ServerEnvironment *env, v3s16 p,
+ const MapNode n, const float dtime_s)
{
ServerScripting *scriptIface = env->getScriptIface();
scriptIface->realityCheck();
@@ -141,8 +142,9 @@ void LuaLBM::trigger(ServerEnvironment *env, v3s16 p, MapNode n)
lua_remove(L, -2); // Remove registered_lbms[m_id]
push_v3s16(L, p);
pushnode(L, n);
+ lua_pushnumber(L, dtime_s);
- int result = lua_pcall(L, 2, 0, error_handler);
+ int result = lua_pcall(L, 3, 0, error_handler);
if (result)
scriptIface->scriptError(result, "LuaLBM::trigger");
diff --git a/src/script/lua_api/l_env.h b/src/script/lua_api/l_env.h
index 3b386f86a..08782a4fb 100644
--- a/src/script/lua_api/l_env.h
+++ b/src/script/lua_api/l_env.h
@@ -287,7 +287,7 @@ public:
this->trigger_contents = trigger_contents;
this->name = name;
}
- virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n);
+ virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n, float dtime_s);
};
//! Lua wrapper for RaycastState objects
diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp
index 045f05994..9dd5ba621 100644
--- a/src/serverenvironment.cpp
+++ b/src/serverenvironment.cpp
@@ -249,7 +249,8 @@ std::string LBMManager::createIntroductionTimesString()
return oss.str();
}
-void LBMManager::applyLBMs(ServerEnvironment *env, MapBlock *block, u32 stamp)
+void LBMManager::applyLBMs(ServerEnvironment *env, MapBlock *block,
+ const u32 stamp, const float dtime_s)
{
// Precondition, we need m_lbm_lookup to be initialized
FATAL_ERROR_IF(!m_query_mode,
@@ -280,7 +281,7 @@ void LBMManager::applyLBMs(ServerEnvironment *env, MapBlock *block, u32 stamp)
if (!lbm_list)
continue;
for (auto lbmdef : *lbm_list) {
- lbmdef->trigger(env, pos + pos_of_block, n);
+ lbmdef->trigger(env, pos + pos_of_block, n, dtime_s);
}
}
}
@@ -997,7 +998,7 @@ void ServerEnvironment::activateBlock(MapBlock *block, u32 additional_dtime)
activateObjects(block, dtime_s);
/* Handle LoadingBlockModifiers */
- m_lbm_mgr.applyLBMs(this, block, stamp);
+ m_lbm_mgr.applyLBMs(this, block, stamp, (float)dtime_s);
// Run node timers
block->step((float)dtime_s, [&](v3s16 p, MapNode n, f32 d) -> bool {
diff --git a/src/serverenvironment.h b/src/serverenvironment.h
index 4eb7ab22a..5c4b23f40 100644
--- a/src/serverenvironment.h
+++ b/src/serverenvironment.h
@@ -95,7 +95,8 @@ struct LoadingBlockModifierDef
virtual ~LoadingBlockModifierDef() = default;
- virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n){};
+ virtual void trigger(ServerEnvironment *env, v3s16 p,
+ MapNode n, float dtime_s) {};
};
struct LBMContentMapping
@@ -129,7 +130,8 @@ public:
std::string createIntroductionTimesString();
// Don't call this before loadIntroductionTimes() ran.
- void applyLBMs(ServerEnvironment *env, MapBlock *block, u32 stamp);
+ void applyLBMs(ServerEnvironment *env, MapBlock *block,
+ u32 stamp, float dtime_s);
// Warning: do not make this std::unordered_map, order is relevant here
typedef std::map<u32, LBMContentMapping> lbm_lookup_map;