Remove buildable_to nodes without dropping item when replaced by a falling node
authorCasimir <jul.lutz@gmx.net>
Sat, 17 Aug 2013 23:15:38 +0000 (01:15 +0200)
committersapier <Sapier at GMX dot net>
Fri, 22 Aug 2014 09:14:15 +0000 (11:14 +0200)
builtin/game/falling.lua

index b3d5a9a8b536517e39dd825b74d54b00458c26ad..8f3b41d5a6a5a19e8aa850b81e2f6f9bb393ae6a 100644 (file)
@@ -79,17 +79,24 @@ core.register_entity(":__builtin:falling_node", {
                        local np = {x=bcp.x, y=bcp.y+1, z=bcp.z}
                        -- Check what's here
                        local n2 = core.get_node(np)
-                       -- remove node and replace it with it's drops
-                       local drops = core.get_node_drops(n2.name, "")
-                       core.remove_node(np)
-                       local _, dropped_item
-                       for _, dropped_item in ipairs(drops) do
-                               core.add_item(np, dropped_item)
-                       end
-                       -- Run script hook
-                       local _, callback
-                       for _, callback in ipairs(core.registered_on_dignodes) do
-                               callback(np, n2, nil)
+                       -- If it's not air or liquid, remove node and replace it with
+                       -- it's drops
+                       if n2.name ~= "air" and (not core.registered_nodes[n2.name] or
+                                       core.registered_nodes[n2.name].liquidtype == "none") then
+                               core.remove_node(np)
+                               if core.registered_nodes[n2.name].buildable_to == false then
+                                       -- Add dropped items
+                                       local drops = core.get_node_drops(n2.name, "")
+                                       local _, dropped_item
+                                       for _, dropped_item in ipairs(drops) do
+                                               core.add_item(np, dropped_item)
+                                       end
+                               end
+                               -- Run script hook
+                               local _, callback
+                               for _, callback in ipairs(core.registered_on_dignodes) do
+                                       callback(np, n2, nil)
+                               end
                        end
                        -- Create node and remove entity
                        core.add_node(np, self.node)