Torches: Make liquids drop torches as items
authorForbiddenJ <justinscomputercreations@gmail.com>
Tue, 25 Jul 2017 18:52:39 +0000 (13:52 -0500)
committerparamat <mat.gregory@virginmedia.com>
Mon, 7 Aug 2017 01:38:31 +0000 (02:38 +0100)
Liquids that are 'igniters', such as lava, will drop the torch without
a flame-extinguish sound, as the torch item will burn up after a few
seconds with a sound and smoke particles.

All other liquids cause a flame-extinguish sound.

mods/default/torch.lua

index 3c3ae965ad10ccd8347ebf740e49c9499ca2b704..016ae685ca5106fd6d78a24a9deaa70310a6de62 100644 (file)
@@ -35,6 +35,21 @@ See LICENSE.txt and http://www.gnu.org/licenses/lgpl-2.1.txt
 
 --]]
 
+local function on_flood(pos, oldnode, newnode)
+       minetest.add_item(pos, ItemStack("default:torch 1"))
+       -- Play flame-extinguish sound if liquid is not an 'igniter'
+       local nodedef = minetest.registered_items[newnode.name]
+       if not (nodedef and nodedef.groups and
+                       nodedef.groups.igniter and nodedef.groups.igniter > 0) then
+               minetest.sound_play(
+                       "default_cool_lava",
+                       {pos = pos, max_hear_distance = 16, gain = 0.1}
+               )
+       end
+       -- Remove the torch node
+       return false
+end
+
 minetest.register_node("default:torch", {
        description = "Torch",
        drawtype = "mesh",
@@ -83,7 +98,9 @@ minetest.register_node("default:torch", {
                itemstack:set_name("default:torch")
 
                return itemstack
-       end
+       end,
+       floodable = true,
+       on_flood = on_flood,
 })
 
 minetest.register_node("default:torch_wall", {
@@ -105,6 +122,8 @@ minetest.register_node("default:torch_wall", {
                wall_side = {-1/2, -1/2, -1/8, -1/8, 1/8, 1/8},
        },
        sounds = default.node_sound_wood_defaults(),
+       floodable = true,
+       on_flood = on_flood,
 })
 
 minetest.register_node("default:torch_ceiling", {
@@ -126,6 +145,8 @@ minetest.register_node("default:torch_ceiling", {
                wall_top = {-1/8, -1/16, -5/16, 1/8, 1/2, 1/8},
        },
        sounds = default.node_sound_wood_defaults(),
+       floodable = true,
+       on_flood = on_flood,
 })
 
 minetest.register_lbm({