From be18bd6a8cafdc2c452da39dd8cc428d8dbf62e6 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Thu, 14 May 2015 11:35:24 +0100 Subject: 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... --- builtin/game/item_entity.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3