diff options
Diffstat (limited to 'mesecons_hydroturbine/init.lua')
-rw-r--r-- | mesecons_hydroturbine/init.lua | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/mesecons_hydroturbine/init.lua b/mesecons_hydroturbine/init.lua new file mode 100644 index 0000000..d1c08f7 --- /dev/null +++ b/mesecons_hydroturbine/init.lua @@ -0,0 +1,92 @@ +-- HYDRO_TURBINE +-- Water turbine: +-- Active if flowing >water< above it +-- (does not work with other liquids) + +minetest.register_node("mesecons_hydroturbine:hydro_turbine_off", { + drawtype = "mesh", + mesh = "jeija_hydro_turbine.obj", + tiles = { + "jeija_hydro_turbine_sides_off.png", + "jeija_hydro_turbine_top_bottom.png", + "jeija_hydro_turbine_turbine_top_bottom.png", + "jeija_hydro_turbine_turbine_misc.png" + }, + inventory_image = "jeija_hydro_turbine_inv.png", + wield_scale = {x=0.75, y=0.75, z=0.75}, + groups = {dig_immediate=2}, + description="Water Turbine", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }, + }, + sounds = default.node_sound_stone_defaults(), + mesecons = {receptor = { + state = mesecon.state.off + }} +}) + +minetest.register_node("mesecons_hydroturbine:hydro_turbine_on", { + drawtype = "mesh", + mesh = "jeija_hydro_turbine.obj", + wield_scale = {x=0.75, y=0.75, z=0.75}, + tiles = { + "jeija_hydro_turbine_sides_on.png", + "jeija_hydro_turbine_top_bottom.png", + "jeija_hydro_turbine_turbine_top_bottom.png", + "jeija_hydro_turbine_turbine_misc.png" + }, + inventory_image = "jeija_hydro_turbine_inv.png", + drop = "mesecons_hydroturbine:hydro_turbine_off 1", + groups = {dig_immediate=2,not_in_creative_inventory=1}, + description="Water Turbine", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }, + }, + sounds = default.node_sound_stone_defaults(), + mesecons = {receptor = { + state = mesecon.state.on + }} +}) + + +minetest.register_abm({ +nodenames = {"mesecons_hydroturbine:hydro_turbine_off"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local waterpos={x=pos.x, y=pos.y+1, z=pos.z} + if minetest.get_node(waterpos).name=="default:water_flowing" then + minetest.add_node(pos, {name="mesecons_hydroturbine:hydro_turbine_on"}) + nodeupdate(pos) + mesecon.receptor_on(pos) + end + end, +}) + +minetest.register_abm({ +nodenames = {"mesecons_hydroturbine:hydro_turbine_on"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local waterpos={x=pos.x, y=pos.y+1, z=pos.z} + if minetest.get_node(waterpos).name~="default:water_flowing" then + minetest.add_node(pos, {name="mesecons_hydroturbine:hydro_turbine_off"}) + nodeupdate(pos) + mesecon.receptor_off(pos) + end + end, +}) + +minetest.register_craft({ + output = "mesecons_hydroturbine:hydro_turbine_off 2", + recipe = { + {"","default:stick", ""}, + {"default:stick", "default:steel_ingot", "default:stick"}, + {"","default:stick", ""}, + } +}) + |