diff options
author | est31 <MTest31@outlook.com> | 2016-11-16 10:17:46 +0100 |
---|---|---|
committer | est31 <MTest31@outlook.com> | 2016-11-16 18:51:36 +0100 |
commit | afc48c802a81b95b11aef3ad0141a56f6a184979 (patch) | |
tree | 2b99da4289a6e5eabf1236aa305ad2d882001989 /builtin | |
parent | 5f0dc8e78ad7e62959786efd5c7f72044aacb53a (diff) | |
download | minetest-afc48c802a81b95b11aef3ad0141a56f6a184979.tar.gz minetest-afc48c802a81b95b11aef3ad0141a56f6a184979.tar.bz2 minetest-afc48c802a81b95b11aef3ad0141a56f6a184979.zip |
Introduce builtin_shared and use it to fix #4778
Fixes #4778 which was about the error:
ServerError: Lua: Runtime error from mod '' in callback item_OnPlace():
/usr/local/share/minetest/builtin/game/item.lua:278: attempt to call global 'check_attached_node' (a nil value)
The issue was a regression of commit 649448a2a91fbf3e944b2f2e739f4e2292af1df0
"Rename nodeupdate and nodeupdate_single and make them part of the official API"
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/game/falling.lua | 6 | ||||
-rw-r--r-- | builtin/game/init.lua | 8 | ||||
-rw-r--r-- | builtin/game/item.lua | 4 |
3 files changed, 13 insertions, 5 deletions
diff --git a/builtin/game/falling.lua b/builtin/game/falling.lua index ece08b325..8b88b68d8 100644 --- a/builtin/game/falling.lua +++ b/builtin/game/falling.lua @@ -1,5 +1,7 @@ -- Minetest: builtin/item.lua +local builtin_shared = ... + -- -- Falling stuff -- @@ -127,7 +129,7 @@ local function drop_attached_node(p) end end -local function check_attached_node(p, n) +function builtin_shared.check_attached_node(p, n) local def = core.registered_nodes[n.name] local d = {x = 0, y = 0, z = 0} if def.paramtype2 == "wallmounted" then @@ -177,7 +179,7 @@ function core.check_single_for_falling(p) end if core.get_item_group(n.name, "attached_node") ~= 0 then - if not check_attached_node(p, n) then + if not builtin_shared.check_attached_node(p, n) then drop_attached_node(p) return true end diff --git a/builtin/game/init.lua b/builtin/game/init.lua index 2f9f90315..b5e2f7cca 100644 --- a/builtin/game/init.lua +++ b/builtin/game/init.lua @@ -3,10 +3,14 @@ local scriptpath = core.get_builtin_path()..DIR_DELIM local commonpath = scriptpath.."common"..DIR_DELIM local gamepath = scriptpath.."game"..DIR_DELIM +-- Shared between builtin files, but +-- not exposed to outer context +local builtin_shared = {} + dofile(commonpath.."vector.lua") dofile(gamepath.."constants.lua") -dofile(gamepath.."item.lua") +assert(loadfile(gamepath.."item.lua"))(builtin_shared) dofile(gamepath.."register.lua") if core.setting_getbool("profiler.load") then @@ -21,7 +25,7 @@ dofile(gamepath.."auth.lua") dofile(gamepath.."chatcommands.lua") dofile(gamepath.."static_spawn.lua") dofile(gamepath.."detached_inventory.lua") -dofile(gamepath.."falling.lua") +assert(loadfile(gamepath.."falling.lua"))(builtin_shared) dofile(gamepath.."features.lua") dofile(gamepath.."voxelarea.lua") dofile(gamepath.."forceloading.lua") diff --git a/builtin/game/item.lua b/builtin/game/item.lua index 26ff8225c..ec996292f 100644 --- a/builtin/game/item.lua +++ b/builtin/game/item.lua @@ -1,5 +1,7 @@ -- Minetest: builtin/item.lua +local builtin_shared = ... + local function copy_pointed_thing(pointed_thing) return { type = pointed_thing.type, @@ -275,7 +277,7 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2) -- Check if the node is attached and if it can be placed there if core.get_item_group(def.name, "attached_node") ~= 0 and - not check_attached_node(place_to, newnode) then + not builtin_shared.check_attached_node(place_to, newnode) then core.log("action", "attached node " .. def.name .. " can not be placed at " .. core.pos_to_string(place_to)) return itemstack, false |