Skip to content

Commit 6386684

Browse files
committed
Fire: Ignite tnt, gunpowder, permanent flame above coalblock
Enable ignition of tnt, gunpowder and permanent flame above coalblock using flint and steel Override coalblock to remove flame above when dug Add depends.txt for default mod
1 parent ba33639 commit 6386684

File tree

2 files changed

+51
-11
lines changed

2 files changed

+51
-11
lines changed

mods/fire/depends.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
default

mods/fire/init.lua

+50-11
Original file line numberDiff line numberDiff line change
@@ -80,26 +80,51 @@ minetest.register_node("fire:permanent_flame", {
8080
end,
8181
})
8282

83+
84+
-- Flint and steel
85+
8386
minetest.register_tool("fire:flint_and_steel", {
8487
description = "Flint and Steel",
8588
inventory_image = "fire_flint_steel.png",
8689
on_use = function(itemstack, user, pointed_thing)
87-
local player_name = user:get_player_name()
90+
itemstack:add_wear(1000)
8891
local pt = pointed_thing
89-
90-
if pt.type == "node" and minetest.get_node(pt.above).name == "air" then
91-
itemstack:add_wear(1000)
92+
if pt.type == "node" then
9293
local node_under = minetest.get_node(pt.under).name
93-
94-
if minetest.get_item_group(node_under, "flammable") >= 1 then
95-
if not minetest.is_protected(pt.above, player_name) then
96-
minetest.set_node(pt.above, {name = "fire:basic_flame"})
97-
else
98-
minetest.chat_send_player(player_name, "This area is protected")
94+
local is_coalblock = node_under == "default:coalblock"
95+
local is_tnt = node_under == "tnt:tnt"
96+
local is_gunpowder = node_under == "tnt:gunpowder"
97+
if minetest.get_item_group(node_under, "flammable") >= 1 or
98+
is_coalblock or is_tnt or is_gunpowder then
99+
local flame_pos = pt.above
100+
if is_coalblock then
101+
flame_pos = {x = pt.under.x, y = pt.under.y + 1, z = pt.under.z}
102+
elseif is_tnt or is_gunpowder then
103+
flame_pos = pt.under
104+
end
105+
if minetest.get_node(flame_pos).name == "air" or
106+
is_tnt or is_gunpowder then
107+
local player_name = user:get_player_name()
108+
if not minetest.is_protected(flame_pos, player_name) then
109+
if is_coalblock then
110+
minetest.set_node(flame_pos,
111+
{name = "fire:permanent_flame"})
112+
elseif is_tnt then
113+
minetest.set_node(flame_pos,
114+
{name = "tnt:tnt_burning"})
115+
elseif is_gunpowder then
116+
minetest.set_node(flame_pos,
117+
{name = "tnt:gunpowder_burning"})
118+
else
119+
minetest.set_node(flame_pos,
120+
{name = "fire:basic_flame"})
121+
end
122+
else
123+
minetest.chat_send_player(player_name, "This area is protected")
124+
end
99125
end
100126
end
101127
end
102-
103128
if not minetest.setting_getbool("creative_mode") then
104129
return itemstack
105130
end
@@ -113,6 +138,20 @@ minetest.register_craft({
113138
}
114139
})
115140

141+
142+
-- Override coalblock to enable permanent flame above
143+
-- Coalblock is non-flammable to avoid unwanted basic_flame nodes
144+
145+
minetest.override_item("default:coalblock", {
146+
after_destruct = function(pos, oldnode)
147+
pos.y = pos.y + 1
148+
if minetest.get_node(pos).name == "fire:permanent_flame" then
149+
minetest.remove_node(pos)
150+
end
151+
end,
152+
})
153+
154+
116155
-- Get sound area of position
117156

118157
fire.D = 6 -- size of sound areas

0 commit comments

Comments
 (0)