summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortenplus1 <tenplus1@users.noreply.github.com>2015-05-14 11:35:24 +0100
committerest31 <MTest31@outlook.com>2015-05-15 00:15:25 +0200
commitbe18bd6a8cafdc2c452da39dd8cc428d8dbf62e6 (patch)
tree1fe9ac5f1d1425c7a937874ea2944e9e9888329b
parent178f536f082fd586a13d03ec9aa0775f1c009d5e (diff)
downloadminetest-be18bd6a8cafdc2c452da39dd8cc428d8dbf62e6.tar.gz
minetest-be18bd6a8cafdc2c452da39dd8cc428d8dbf62e6.tar.bz2
minetest-be18bd6a8cafdc2c452da39dd8cc428d8dbf62e6.zip
Don't crash if an item gets dropped into unloaded space
Items dropped into unloaded map space will crash game so here's a fix...
-rw-r--r--builtin/game/item_entity.lua12
1 files changed, 11 insertions, 1 deletions
diff --git a/builtin/game/item_entity.lua b/builtin/game/item_entity.lua
index d848fd855..6425a10aa 100644
--- a/builtin/game/item_entity.lua
+++ b/builtin/game/item_entity.lua
@@ -155,7 +155,17 @@ core.register_entity(":__builtin:item", {
end
local p = self.object:getpos()
p.y = p.y - 0.5
- local nn = core.get_node(p).name
+ local node = core.get_node_or_nil(p)
+ local in_unloaded = (node == nil)
+ if in_unloaded then
+ -- Don't infinetly fall into unloaded map
+ self.object:setvelocity({x = 0, y = 0, z = 0})
+ self.object:setacceleration({x = 0, y = 0, z = 0})
+ self.physical_state = false
+ self.object:set_properties({physical = false})
+ return
+ end
+ local nn = node.name
-- If node is not registered or node is walkably solid and resting on nodebox
local v = self.object:getvelocity()
if not core.registered_nodes[nn] or core.registered_nodes[nn].walkable and v.y == 0 then