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