Fix various fire sound bugs

This commit is contained in:
PilzAdam 2014-12-03 16:59:36 +01:00
parent 128f0adb24
commit 5b7db48372
1 changed files with 8 additions and 14 deletions

View File

@ -1,5 +1,7 @@
-- minetest/fire/init.lua -- minetest/fire/init.lua
fire = {}
minetest.register_node("fire:basic_flame", { minetest.register_node("fire:basic_flame", {
description = "Fire", description = "Fire",
drawtype = "firelike", drawtype = "firelike",
@ -14,17 +16,16 @@ minetest.register_node("fire:basic_flame", {
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
damage_per_second = 4, damage_per_second = 4,
after_place_node = function(pos, placer) on_construct = function(pos)
fire.on_flame_add_at(pos) minetest.after(0, fire.on_flame_add_at, pos)
end, end,
after_dig_node = function(pos, oldnode, oldmetadata, digger) on_destruct = function(pos)
fire.on_flame_remove_at(pos) minetest.after(0, fire.on_flame_remove_at, pos)
end, end,
}) })
fire = {}
fire.D = 6 fire.D = 6
-- key: position hash of low corner of area -- key: position hash of low corner of area
-- value: {handle=sound handle, name=sound name} -- value: {handle=sound handle, name=sound name}
@ -81,12 +82,10 @@ function fire.update_sounds_around(pos)
end end
function fire.on_flame_add_at(pos) function fire.on_flame_add_at(pos)
--print("flame added at "..minetest.pos_to_string(pos))
fire.update_sounds_around(pos) fire.update_sounds_around(pos)
end end
function fire.on_flame_remove_at(pos) function fire.on_flame_remove_at(pos)
--print("flame removed at "..minetest.pos_to_string(pos))
fire.update_sounds_around(pos) fire.update_sounds_around(pos)
end end
@ -117,7 +116,6 @@ minetest.register_abm({
local p = fire.find_pos_for_flame_around(p0) local p = fire.find_pos_for_flame_around(p0)
if p then if p then
minetest.set_node(p, {name="fire:basic_flame"}) minetest.set_node(p, {name="fire:basic_flame"})
fire.on_flame_add_at(p)
end end
end, end,
}) })
@ -143,7 +141,6 @@ minetest.register_abm({
local p2 = fire.find_pos_for_flame_around(p) local p2 = fire.find_pos_for_flame_around(p)
if p2 then if p2 then
minetest.set_node(p2, {name="fire:basic_flame"}) minetest.set_node(p2, {name="fire:basic_flame"})
fire.on_flame_add_at(p2)
end end
end end
end, end,
@ -158,7 +155,6 @@ minetest.register_abm({
-- If there is water or stuff like that around flame, remove flame -- If there is water or stuff like that around flame, remove flame
if fire.flame_should_extinguish(p0) then if fire.flame_should_extinguish(p0) then
minetest.remove_node(p0) minetest.remove_node(p0)
fire.on_flame_remove_at(p0)
return return
end end
-- Make the following things rarer -- Make the following things rarer
@ -168,7 +164,6 @@ minetest.register_abm({
-- If there are no flammable nodes around flame, remove flame -- If there are no flammable nodes around flame, remove flame
if not minetest.find_node_near(p0, 1, {"group:flammable"}) then if not minetest.find_node_near(p0, 1, {"group:flammable"}) then
minetest.remove_node(p0) minetest.remove_node(p0)
fire.on_flame_remove_at(p0)
return return
end end
if math.random(1,4) == 1 then if math.random(1,4) == 1 then
@ -185,7 +180,6 @@ minetest.register_abm({
else else
-- remove flame -- remove flame
minetest.remove_node(p0) minetest.remove_node(p0)
fire.on_flame_remove_at(p0)
end end
end, end,
}) })