only allow function to be called from an `epic:epic` block

master
BuckarooBanzay 2020-03-05 14:47:58 +01:00
parent d21e4f9662
commit dc92da6317
2 changed files with 6 additions and 14 deletions

View File

@ -28,18 +28,10 @@ epic.start = function(playername, pos)
return false
end
local main_node = epic.get_node(main_pos)
if main_node.name == "epic:epic" then
-- delegate to "real" epic block
-- TODO: detect recursion here
return epic.start(playername, main_pos)
else
-- start epic
epic.execute_epic(player, main_pos, epic_name)
return true
end
-- start epic
epic.execute_epic(player, main_pos, epic_name)
return true
end
-- abort epic if running
@ -180,7 +172,7 @@ epic.is_epic = function(node)
return nodedef.epic ~= nil
end
-- executes an epic with main and optional exit function
-- executes an epic function
epic.execute_epic = function(player, main_pos, name)
if epic.state[player:get_player_name()] then
-- already running a function

View File

@ -78,8 +78,8 @@ minetest.register_on_punchnode(function(pos, node, puncher)
not minetest.check_player_privs(playername, {epic_admin=true}) then
minetest.chat_send_player(playername, "[epic] target is protected! aborting selection.")
elseif node.name ~= "epic:function" and node.name ~= "epic:epic" then
minetest.chat_send_player(playername, "[epic] target is not a function or an epic! aborting selection.")
elseif node.name ~= "epic:function" then
minetest.chat_send_player(playername, "[epic] target is not a function! aborting selection.")
else
local meta = minetest.get_meta(cfg_pos)