obsidian updated

master
Ilya Zhuravlev 2012-03-19 23:00:58 +04:00
parent c063e9909e
commit 4f2940ff04
1 changed files with 34 additions and 2 deletions

View File

@ -9,13 +9,42 @@ minetest.register_node("obsidian_rtmmp:obsidian_block", {
material = minetest.digprop_stonelike(15.0), -- obsidian is hard, like a stone, but harder
})
local function check_water(pos, dx, dy, dz)
local n = minetest.env:get_node({x = pos.x + dx, y = pos.y + dy, z = pos.z + dz})
return n.name == "default:water_flowing" or n.name == "default:water_source"
end
local function find_water(pos)
return check_water(pos, -1, 0, 0) or check_water(pos, 1, 0, 0)
or check_water(pos, 0, -1, 0) or check_water(pos, 0, 1, 0)
or check_water(pos, 0, 0, -1) or check_water(pos, 0, 0, 1)
end
local function replace(pos, dx, dy, dz)
if check_water(pos, dx, dy, dz) then
minetest.env:remove_node({pos.x + dx, pos.y + dy, pos.z + dz})
end
end
local function replace_water(pos)
replace(pos, -1, 0, 0)
replace(pos, 1, 0, 0)
replace(pos, 0, -1, 0)
replace(pos, 0, 1, 0)
replace(pos, 0, 0, -1)
replace(pos, 0, 0, 1)
end
minetest.register_abm({
nodenames = {"default:lava_flowing"},
neighbors = {"default:water_source", "default:water_flowing"},
interval = 1,
chance = 1,
action = function(pos, node)
minetest.env:add_node(pos, {name="default:cobble"})
if find_water(pos) then
replace_water(pos)
minetest.env:add_node(pos, {name="default:cobble"})
end
end
})
@ -25,6 +54,9 @@ minetest.register_abm({
interval = 1,
chance = 1,
action = function(pos, node)
minetest.env:add_node(pos, {name="obsidian_rtmmp:obsidian_block"})
if find_water(pos) then
replace_water(pos)
minetest.env:add_node(pos, {name="obsidian_rtmmp:obsidian_block"})
end
end
})