]> git.lizzy.rs Git - Crafter.git/blob - mods/fire/init.lua
Make fire last forever on Netherrack
[Crafter.git] / mods / fire / init.lua
1 minetest.register_node("fire:fire", {
2     description = "How did you even get this?",
3     drawtype = "firelike",
4         tiles = {
5                 {
6                         name = "fire.png",
7                         animation = {
8                                 type = "vertical_frames",
9                                 aspect_w = 16,
10                                 aspect_h = 16,
11                                 length = 0.3
12                         },
13                 },
14         },
15         inventory_image = "fire.png",
16     groups = {dig_immediate = 1},
17     sounds = main.stoneSound(),
18     drop = "",
19     walkable = false,
20     is_ground_content = false,
21     light_source = 11, --debugging
22     on_construct = function(pos)
23                 local under = minetest.get_node(vector.new(pos.x,pos.y-1,pos.z)).name
24                 --fire lasts forever on netherrack
25                 if under == "nether:obsidian" then
26                         minetest.remove_node(pos)
27                         create_nether_portal(pos)
28                 elseif under ~= "nether:netherrack" then
29                         local timer = minetest.get_node_timer(pos)
30                         timer:start(math.random(5,10))
31                 end
32     end,
33     on_timer = function(pos, elapsed)
34                 minetest.remove_node(pos)
35     end,
36 })
37
38
39 minetest.register_abm({
40         label = "Fire Spread",
41         nodenames = {"group:flammable"},
42         neighbors = {"fire:fire"},
43         interval = 0.25,
44         chance = 15.0,
45         catch_up = false,
46         action = function(pos)
47                 minetest.set_node(pos,{name="fire:fire"})
48         end,
49 })
50
51 --flint and steel
52 minetest.register_tool("fire:flint_and_steel", {
53         description = "Flint and Steel",
54         inventory_image = "flint_and_steel.png",
55         on_place = function(itemstack, placer, pointed_thing)
56                 if pointed_thing.type ~= "node" then
57                         return
58                 end
59                 if minetest.get_node(pointed_thing.above).name ~= "air" then
60                         minetest.sound_play("flint_failed", {pos=pointed_thing.above})
61                         return
62                 end
63                 
64                 minetest.add_node(pointed_thing.above,{name="fire:fire"})
65                 minetest.sound_play("flint_and_steel", {pos=pointed_thing.above})
66                 itemstack:add_wear(100)
67                 return(itemstack)
68         end,
69         sound = {breaks = {name="tool_break",gain=0.4}},
70 })
71
72 minetest.register_craft({
73         type = "shapeless",
74         output = "fire:flint_and_steel",
75         recipe = {"main:flint","main:iron"},
76 })