aboutsummaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorest31 <MTest31@outlook.com>2016-11-16 10:17:46 +0100
committerest31 <MTest31@outlook.com>2016-11-16 18:51:36 +0100
commitafc48c802a81b95b11aef3ad0141a56f6a184979 (patch)
tree2b99da4289a6e5eabf1236aa305ad2d882001989 /builtin
parent5f0dc8e78ad7e62959786efd5c7f72044aacb53a (diff)
downloadminetest-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.lua6
-rw-r--r--builtin/game/init.lua8
-rw-r--r--builtin/game/item.lua4
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