diff options
| author | Jeija <norrepli@gmail.com> | 2012-12-13 18:42:45 +0100 | 
|---|---|---|
| committer | Jeija <norrepli@gmail.com> | 2012-12-13 18:42:45 +0100 | 
| commit | c0d3bd2abbeb8db0d640a604af1c9756f79f4881 (patch) | |
| tree | 2b615683ba9decce806fe9d5ed392a96da01227d /mesecons_extrawires | |
| parent | 659060ddcd8ae05dfb83b9696a158d4ab9725ab4 (diff) | |
Include experimental vertical wires (needs textures)
Diffstat (limited to 'mesecons_extrawires')
| -rw-r--r-- | mesecons_extrawires/init.lua | 1 | ||||
| -rw-r--r-- | mesecons_extrawires/tjunction.lua | 4 | ||||
| -rw-r--r-- | mesecons_extrawires/vertical.lua | 204 | 
3 files changed, 207 insertions, 2 deletions
| diff --git a/mesecons_extrawires/init.lua b/mesecons_extrawires/init.lua index c9e0773..31dfcd2 100644 --- a/mesecons_extrawires/init.lua +++ b/mesecons_extrawires/init.lua @@ -1,3 +1,4 @@  -- dofile(minetest.get_modpath("mesecons_extrawires").."/crossing.lua");  -- The crossing code is not active right now because it is hard to maintain  dofile(minetest.get_modpath("mesecons_extrawires").."/tjunction.lua"); +dofile(minetest.get_modpath("mesecons_extrawires").."/vertical.lua"); diff --git a/mesecons_extrawires/tjunction.lua b/mesecons_extrawires/tjunction.lua index 9f0c125..cb16cfb 100644 --- a/mesecons_extrawires/tjunction.lua +++ b/mesecons_extrawires/tjunction.lua @@ -41,7 +41,7 @@ minetest.register_node("mesecons_extrawires:tjunction_on", {  	sunlight_propagates = true,  	selection_box = tjunction_selectionbox,  	node_box = tjunction_nodebox, -	groups = {dig_immediate = 3, mesecon = 3, mesecon_conductor_craftable=1, not_in_creative_inventory = 1}, +	groups = {dig_immediate = 3, mesecon_conductor_craftable=1, not_in_creative_inventory = 1},  	drop = "mesecons_insulated:insulated_off",  	mesecons = {conductor =   	{ @@ -68,7 +68,7 @@ minetest.register_node("mesecons_extrawires:tjunction_off", {  	sunlight_propagates = true,  	selection_box = tjunction_selectionbox,  	node_box = tjunction_nodebox, -	groups = {dig_immediate = 3, mesecon = 3, mesecon_conductor_craftable=1}, +	groups = {dig_immediate = 3, mesecon_conductor_craftable=1},  	mesecons = {conductor =   	{  		state = mesecon.state.off, diff --git a/mesecons_extrawires/vertical.lua b/mesecons_extrawires/vertical.lua new file mode 100644 index 0000000..64e6e80 --- /dev/null +++ b/mesecons_extrawires/vertical.lua @@ -0,0 +1,204 @@ +local vbox = { +	type = "fixed", +	fixed = {-1/16, -.5, -1/16, 1/16, .5, 1/16} +} + +local tbox = { +	type = "fixed", +	fixed = {{-.5, -.5, -.5, .5, -.5 + 1/16, .5}} +} + +local bbox = { +	type = "fixed", +	fixed = {{  -.5, -.5,   -.5,   .5, -.5+1/16,   .5}, +		 {-1/16, -.5, -1/16, 1/16,  .5     , 1/16}} +} + +local vrules = +{{x = 0, y = 1, z = 0}, + {x = 0, y =-1, z = 0}} + +local trules =  +{{x = 1, y = 0, z = 0}, + {x =-1, y = 0, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z =-1}, + {x = 0, y =-1, z = 0}} + +local brules =  +{{x = 1, y = 0, z = 0}, + {x =-1, y = 0, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z =-1}, + {x = 0, y = 1, z = 0}} + +local vertical_updatepos = function (pos) +	local node = minetest.env:get_node(pos) +	if minetest.registered_nodes[node.name].is_vertical_conductor then +		local node_above = minetest.env:get_node(addPosRule(pos, vrules[1])) +		local node_below = minetest.env:get_node(addPosRule(pos, vrules[2])) +		local namestate = minetest.registered_nodes[node.name].vertical_conductor_state + +		-- above and below: vertical mesecon +		if 	minetest.registered_nodes[node_above.name].is_vertical_conductor +		and	minetest.registered_nodes[node_below.name].is_vertical_conductor then +			minetest.env:add_node (pos,  +			{name = "mesecons_extrawires:vertical_"..namestate}) + +		-- above only: bottom +		elseif 		minetest.registered_nodes[node_above.name].is_vertical_conductor +		and 	not 	minetest.registered_nodes[node_below.name].is_vertical_conductor then +			minetest.env:add_node (pos,  +			{name = "mesecons_extrawires:vertical_bottom_"..namestate}) + +		-- below only: top +		elseif 	not 	minetest.registered_nodes[node_above.name].is_vertical_conductor +		and		minetest.registered_nodes[node_below.name].is_vertical_conductor then +			minetest.env:add_node (pos,  +			{name = "mesecons_extrawires:vertical_top_"..namestate}) +		else -- no vertical wire above, no vertical wire below: use default wire +			minetest.env:add_node (pos,  +			{name = "mesecons_extrawires:vertical_"..namestate}) +		end +	end +end + +local vertical_update = function (pos, node) +	print("update") +	vertical_updatepos(pos) -- this one +	vertical_updatepos(addPosRule(pos, vrules[1])) -- above +	vertical_updatepos(addPosRule(pos, vrules[2])) -- below +end + +-- Vertical wire +minetest.register_node("mesecons_extrawires:vertical_on", { +	description = "Vertical mesecon", +	drawtype = "nodebox", +	tiles = {"wires_vertical_on.png"}, +	walkable = false, +	paramtype = "light", +	sunlight_propagates = true, +	groups = {dig_immediate = 3}, +	selection_box = vbox, +	node_box = vbox, +	is_vertical_conductor = true, +	vertical_conductor_state = "on", +	mesecons = {conductor = { +		state = mesecon.state.on, +		offstate = "mesecons_extrawires:vertical_off", +		rules = vrules +	}}, +	drop = {"mesecons_extrawires:vertical_off"}, +	after_place_node	= vertical_update, +	after_dig_node 		= vertical_update +}) + +minetest.register_node("mesecons_extrawires:vertical_off", { +	description = "Vertical mesecon", +	drawtype = "nodebox", +	tiles = {"wires_vertical_off.png"}, +	walkable = false, +	paramtype = "light", +	sunlight_propagates = true, +	groups = {dig_immediate = 3}, +	selection_box = vbox, +	node_box = vbox, +	is_vertical_conductor = true, +	vertical_conductor_state = "off", +	mesecons = {conductor = { +		state = mesecon.state.off, +		onstate = "mesecons_extrawires:vertical_on", +		rules = vrules +	}}, +	after_place_node	= vertical_update, +	after_dig_node 		= vertical_update +}) + +-- Vertical wire top +minetest.register_node("mesecons_extrawires:vertical_top_on", { +	description = "Vertical mesecon", +	drawtype = "nodebox", +	tiles = {"wires_vertical_on.png"}, +	walkable = false, +	paramtype = "light", +	sunlight_propagates = true, +	groups = {dig_immediate = 3}, +	selection_box = tbox, +	node_box = tbox, +	is_vertical_conductor = true, +	vertical_conductor_state = "on", +	mesecons = {conductor = { +		state = mesecon.state.on, +		offstate = "mesecons_extrawires:vertical_top_off", +		rules = trules +	}}, +	drop = {"mesecons_extrawires:vertical_off"}, +	after_place_node	= vertical_update, +	after_dig_node 		= vertical_update +}) + +minetest.register_node("mesecons_extrawires:vertical_top_off", { +	description = "Vertical mesecon", +	drawtype = "nodebox", +	tiles = {"wires_vertical_off.png"}, +	walkable = false, +	paramtype = "light", +	sunlight_propagates = true, +	groups = {dig_immediate = 3}, +	selection_box = tbox, +	node_box = tbox, +	is_vertical_conductor = true, +	vertical_conductor_state = "off", +	mesecons = {conductor = { +		state = mesecon.state.off, +		onstate = "mesecons_extrawires:vertical_top_on", +		rules = trules +	}}, +	drop = {"mesecons_extrawires:vertical_off"}, +	after_place_node	= vertical_update, +	after_dig_node 		= vertical_update +}) + +-- Vertical wire bottom +minetest.register_node("mesecons_extrawires:vertical_bottom_on", { +	description = "Vertical mesecon", +	drawtype = "nodebox", +	tiles = {"wires_vertical_on.png"}, +	walkable = false, +	paramtype = "light", +	sunlight_propagates = true, +	vertical_conductor_state = "on", +	groups = {dig_immediate = 3}, +	selection_box = bbox, +	node_box = bbox, +	mesecons = {conductor = { +		state = mesecon.state.on, +		offstate = "mesecons_extrawires:vertical_bottom_off", +		rules = brules +	}}, +	drop = {"mesecons_extrawires:vertical_off"}, +	after_place_node	= vertical_update, +	after_dig_node 		= vertical_update +}) + +minetest.register_node("mesecons_extrawires:vertical_bottom_off", { +	description = "Vertical mesecon", +	drawtype = "nodebox", +	tiles = {"wires_vertical_off.png"}, +	walkable = false, +	paramtype = "light", +	sunlight_propagates = true, +	groups = {dig_immediate = 3}, +	selection_box = bbox, +	node_box = bbox, +	is_vertical_conductor = true, +	vertical_conductor_state = "off", +	mesecons = {conductor = { +		state = mesecon.state.off, +		onstate = "mesecons_extrawires:vertical_bottom_on", +		rules = brules +	}}, +	drop = {"mesecons_extrawires:vertical_off"}, +	after_place_node	= vertical_update, +	after_dig_node 		= vertical_update +}) | 
