From 4f2940ff043293f3866c9c36e1d32f34a85de255 Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Mon, 19 Mar 2012 23:00:58 +0400 Subject: [PATCH] obsidian updated --- shit/obsidian_rtmmp/init.lua | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/shit/obsidian_rtmmp/init.lua b/shit/obsidian_rtmmp/init.lua index d935b5a..e874091 100644 --- a/shit/obsidian_rtmmp/init.lua +++ b/shit/obsidian_rtmmp/init.lua @@ -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 })