Replace getpos() with get_pos()
[MineClone/MineClone2.git] / mods / ITEMS / mcl_fire / flint_and_steel.lua
blob3b6861f58d1a56df18b2c9ddd6fae7b463827b59
1 -- Flint and Steel
2 minetest.register_tool("mcl_fire:flint_and_steel", {
3 description = "Flint and Steel",
4 _doc_items_longdesc = "Flint and steel is a tool to start fires and ignite blocks.",
5 _doc_items_usagehelp = "Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.",
6 inventory_image = "mcl_fire_flint_and_steel.png",
7 liquids_pointable = false,
8 stack_max = 1,
9 groups = { tool = 1 },
10 on_place = function(itemstack, user, pointed_thing)
11 -- Use pointed node's on_rightclick function first, if present
12 local node = minetest.get_node(pointed_thing.under)
13 if user and not user:get_player_control().sneak then
14 if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then
15 return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack
16 end
17 end
19 local idef = itemstack:get_definition()
20 minetest.sound_play(
21 "fire_flint_and_steel",
22 {pos = pointed_thing.above, gain = 0.5, max_hear_distance = 8}
24 local used = false
25 if pointed_thing.type == "node" then
26 local nodedef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
27 if nodedef and nodedef._on_ignite then
28 local overwrite = nodedef._on_ignite(user, pointed_thing)
29 if not overwrite then
30 mcl_fire.set_fire(pointed_thing)
31 end
32 else
33 mcl_fire.set_fire(pointed_thing)
34 end
35 used = true
36 end
37 if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then
38 minetest.sound_play(idef.sound.breaks, {pos=user:get_pos(), gain=0.5})
39 end
40 if not minetest.settings:get_bool("creative_mode") and used == true then
41 itemstack:add_wear(65535/65) -- 65 uses
42 end
43 return itemstack
44 end,
45 _dispense_into_walkable = true,
46 _on_dispense = function(stack, pos, droppos, dropnode, dropdir)
47 if dropnode.name == "air" then
48 minetest.add_node(droppos, {name="mcl_fire:fire"})
49 if not minetest.settings:get_bool("creative_mode") then
50 stack:add_wear(65535/65) -- 65 uses
51 end
52 elseif dropnode.name == "mcl_tnt:tnt" then
53 tnt.ignite(droppos)
54 if not minetest.settings:get_bool("creative_mode") then
55 stack:add_wear(65535/65) -- 65 uses
56 end
57 end
58 return stack
59 end,
60 sound = { breaks = "default_tool_breaks" },
63 minetest.register_craft({
64 type = 'shapeless',
65 output = 'mcl_fire:flint_and_steel',
66 recipe = { 'mcl_core:iron_ingot', 'mcl_core:flint'},