Allow the on_blast API to pass an itemstack.
authorAuke Kok <sofar@foo-projects.org>
Tue, 26 Jan 2016 06:27:15 +0000 (22:27 -0800)
committerparamat <mat.gregory@virginmedia.com>
Sat, 16 Apr 2016 18:27:16 +0000 (19:27 +0100)
If the node is special and has an on_blast() handler, we need
to call it instead of getting node drops manually. However, we
do want to know if drops should be added for the special nodes,
so we modify the on_blast() handler code to allow the nodedef
handlers to pass back itemstacks. This could be used by e.g.
the doors mod to drop door items after a blast.

Since this API is documented in lua_api.txt, a separate PR will
be incoming to update the on_blast() documentation.

mods/tnt/init.lua

index 981cc9ee7be6dcdd009f9d64d52b571d0e733e18..6b16ab7e4ee64fc0410796f614095edebfe98e09 100644 (file)
@@ -93,7 +93,12 @@ local function destroy(drops, pos, cid)
        end
        local def = cid_data[cid]
        if def and def.on_blast then
-               def.on_blast(vector.new(pos), 1)
+               local node_drops = def.on_blast(vector.new(pos), 1)
+               if node_drops then
+                       for _, item in ipairs(node_drops) do
+                               add_drop(drops, item)
+                       end
+               end
                return
        end
        if def and def.flammable then