diff options
Diffstat (limited to 'mesecons_dev')
| -rw-r--r-- | mesecons_dev/README | 4 | ||||
| -rw-r--r-- | mesecons_dev/init.lua | 1 | ||||
| -rw-r--r-- | mesecons_dev/mesecons_walllever/depends.txt | 0 | ||||
| -rw-r--r-- | mesecons_dev/mesecons_walllever/init.lua | 86 | ||||
| -rw-r--r-- | mesecons_dev/mesecons_wireless/depends.txt | 2 | ||||
| -rw-r--r-- | mesecons_dev/mesecons_wireless/init.lua | 322 | 
6 files changed, 415 insertions, 0 deletions
diff --git a/mesecons_dev/README b/mesecons_dev/README new file mode 100644 index 0000000..c54c51a --- /dev/null +++ b/mesecons_dev/README @@ -0,0 +1,4 @@ +Please note: +The mesecons modules in here have been disabled for various reasons: +They are old and deprecated, are not needed anymore or are buggy atm. +You can create a model out of them, but it is not recommended to use any of them. diff --git a/mesecons_dev/init.lua b/mesecons_dev/init.lua new file mode 100644 index 0000000..0613ab3 --- /dev/null +++ b/mesecons_dev/init.lua @@ -0,0 +1 @@ +--read README diff --git a/mesecons_dev/mesecons_walllever/depends.txt b/mesecons_dev/mesecons_walllever/depends.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/mesecons_dev/mesecons_walllever/depends.txt diff --git a/mesecons_dev/mesecons_walllever/init.lua b/mesecons_dev/mesecons_walllever/init.lua new file mode 100644 index 0000000..557bb1b --- /dev/null +++ b/mesecons_dev/mesecons_walllever/init.lua @@ -0,0 +1,86 @@ +-- WALL LEVER +minetest.register_node("mesecons_walllever:wall_lever_off", { +    drawtype = "signlike", +    tile_images = {"jeija_wall_lever_off.png"}, +    inventory_image = "jeija_wall_lever_off.png", +    wield_image = "jeija_wall_lever_off.png", +    paramtype = "light", +    paramtype2 = "wallmounted", +    legacy_wallmounted = true, +    walkable = false, +    selection_box = { +        type = "wallmounted", +    }, +    material = minetest.digprop_constanttime(0.3), +    description="Lever", +}) +minetest.register_node("mesecons_walllever:wall_lever_on", { +    drawtype = "signlike", +    tile_images = {"jeija_wall_lever_on.png"}, +    inventory_image = "jeija_wall_lever_on.png", +    paramtype = "light", +    paramtype2 = "wallmounted", +    legacy_wallmounted = true, +    walkable = false, +    selection_box = { +        type = "wallmounted", +    }, +    material = minetest.digprop_constanttime(0.3), +    drop = '"mesecons_walllever:wall_lever_off" 1', +    description="Lever", +}) + +minetest.register_on_dignode( +    function(pos, oldnode, digger) +        if oldnode.name == "mesecons_walllever:wall_lever_on" then +            mesecon:receptor_off(pos) +        end     +    end +) +minetest.register_on_punchnode(function(pos, node, puncher) +	if node.name == "mesecons_walllever:wall_lever_off" then +		minetest.env:add_node(pos, {name="mesecons_walllever:wall_lever_on",param2=node.param2}) +		local rules_string=nil +		if node.param2 == 5 then +			rules_string="button_z+" +		end +		if node.param2 == 3 then +			rules_string="button_x+" +		end +		if node.param2 == 4 then +			rules_string="button_z-" +		end +		if node.param2 == 2 then +			rules_string="button_x-" +		end +		mesecon:receptor_on(pos, rules_string) +	end +	if node.name == "mesecons_walllever:wall_lever_on" then +		minetest.env:add_node(pos, {name="mesecons_walllever:wall_lever_off",param2=node.param2}) +		local rules_string=nil +		if node.param2 == 5 then +			rules_string="button_z+" +		end +		if node.param2 == 3 then +			rules_string="button_x+" +		end +		if node.param2 == 4 then +			rules_string="button_z-" +		end +		if node.param2 == 2 then +			rules_string="button_x-" +		end +		mesecon:receptor_off(pos, rules_string) +	end +end) + +minetest.register_craft({ +	output = '"mesecons_walllever:wall_lever_off" 2', +	recipe = { +	    {'"mesecons:mesecon_off"'}, +		{'"default:stone"'}, +		{'"default:stick"'}, +	} +}) +mesecon:add_receptor_node("mesecons_walllever:wall_lever") +mesecon:add_receptor_node_off("mesecons_walllever:wall_lever_off") diff --git a/mesecons_dev/mesecons_wireless/depends.txt b/mesecons_dev/mesecons_wireless/depends.txt new file mode 100644 index 0000000..bc7b062 --- /dev/null +++ b/mesecons_dev/mesecons_wireless/depends.txt @@ -0,0 +1,2 @@ +mesecons +mesecons_materials diff --git a/mesecons_dev/mesecons_wireless/init.lua b/mesecons_dev/mesecons_wireless/init.lua new file mode 100644 index 0000000..bffac58 --- /dev/null +++ b/mesecons_dev/mesecons_wireless/init.lua @@ -0,0 +1,322 @@ +--COMMON WIRELESS FUNCTIONS + +mesecon.wireless_receivers={} + +function mesecon:read_wlre_from_file() +	print "[MESEcons] Reading Mesecon Data..." +	mesecon_file=io.open(minetest.get_modpath("jeija").."/mesecon_data", "r") +	if mesecon_file==nil then return end +	local row=mesecon_file:read() +	local i=1 +	while row~=nil do +		mesecon.wireless_receivers[i]={} +		mesecon.wireless_receivers[i].pos={} +		mesecon.wireless_receivers[i].pos.x=tonumber(mesecon_file:read()) +		mesecon.wireless_receivers[i].pos.y=tonumber(mesecon_file:read()) +		mesecon.wireless_receivers[i].pos.z=tonumber(mesecon_file:read()) +		mesecon.wireless_receivers[i].channel=mesecon_file:read() +		mesecon.wireless_receivers[i].requested_state=tonumber(mesecon_file:read()) +		mesecon.wireless_receivers[i].inverting=tonumber(mesecon_file:read()) +		i=i+1 +		row=mesecon_file:read() +	end +	mesecon_file:close()	 +	print "[MESEcons] Finished Reading Mesecon Data..." +end + + +function mesecon:register_wireless_receiver(pos, inverting) +	local i	= 1	 +	repeat +		if mesecon.wireless_receivers[i]==nil then break end +		i=i+1 +	until false + + +	local node_under_pos={} +	node_under_pos.x=pos.x +	node_under_pos.y=pos.y +	node_under_pos.z=pos.z + +	node_under_pos.y=node_under_pos.y-1 +	local node_under=minetest.env:get_node(node_under_pos) +	mesecon.wireless_receivers[i]={} +	mesecon.wireless_receivers[i].pos={} +	mesecon.wireless_receivers[i].pos.x=pos.x +	mesecon.wireless_receivers[i].pos.y=pos.y +	mesecon.wireless_receivers[i].pos.z=pos.z +	mesecon.wireless_receivers[i].channel=node_under.name +	mesecon.wireless_receivers[i].requested_state=0 +	mesecon.wireless_receivers[i].inverting=inverting +end + +function mesecon:remove_wireless_receiver(pos) +	local i = 1 +	while mesecon.wireless_receivers[i]~=nil do +		if mesecon.wireless_receivers[i].pos.x==pos.x and +		   mesecon.wireless_receivers[i].pos.y==pos.y and +		   mesecon.wireless_receivers[i].pos.z==pos.z then +			mesecon.wireless_receivers[i]=nil +			break +		end +		i=i+1 +	end +end + +function mesecon:set_wlre_channel(pos, channel) +	--local i = 1 +	--while mesecon.wireless_receivers[i]~=nil do +	--	if tonumber(mesecon.wireless_receivers[i].pos.x)==tonumber(pos.x) and +	--	   tonumber(mesecon.wireless_receivers[i].pos.y)==tonumber(pos.y) and +	--	   tonumber(mesecon.wireless_receivers[i].pos.z)==tonumber(pos.z) then +	--		mesecon.wireless_receivers[i].channel=channel +	--		break +	--	end +	--	i=i+1 +	--end +	local wlre=mesecon:get_wlre(pos) +	if wlre~=nil then  +		wlre.channel=channel +	end +end + +function mesecon:get_wlre(pos) +	local i=1 +	while mesecon.wireless_receivers[i]~=nil do +		if mesecon.wireless_receivers[i].pos.x==pos.x and +		   mesecon.wireless_receivers[i].pos.y==pos.y and +		   mesecon.wireless_receivers[i].pos.z==pos.z then +			return mesecon.wireless_receivers[i] +		end +		i=i+1 +	end +end + +minetest.register_on_placenode(function(pos, newnode, placer) +	pos.y=pos.y+1 +	if minetest.env:get_node(pos).name == "mesecons_wireless:wireless_receiver_off" or +	   minetest.env:get_node(pos).name == "mesecons_wireless:wireless_receiver_on"  or +	   minetest.env:get_node(pos).name == "mesecons_wireless:wireless_inverter_off" or +	   minetest.env:get_node(pos).name == "mesecons_wireless:wireless_inverter_on" then +		mesecon:set_wlre_channel(pos, newnode.name) +	end +end) + +minetest.register_on_dignode( +	function(pos, oldnode, digger) +		local channel +		pos.y=pos.y+1 +		if minetest.env:get_node(pos).name == "mesecons_wireless:wireless_receiver_on" or +		   minetest.env:get_node(pos).name == "mesecons_wireless:wireless_receiver_off" or +		   minetest.env:get_node(pos).name == "mesecons_wireless:wireless_inverter_on" or +		   minetest.env:get_node(pos).name == "mesecons_wireless:wireless_inverter_off" then +			mesecon:set_wlre_channel(pos, "air") +		end	 +	end +) + +minetest.register_abm( +	{nodenames = {"mesecons_wireless:wireless_receiver_on", "mesecons_wireless:wireless_receiver_off", +		      "mesecons_wireless:wireless_inverter_on", "mesecons_wireless:wireless_inverter_off"}, +	interval = 1.0, +	chance = 1, +	action = function(pos, node, active_object_count, active_object_count_wider) +		local wlre=mesecon:get_wlre(pos) +		if (wlre==nil) then return end +		 +		if node.name=="mesecons_wireless:wireless_receiver_on" and wlre.requested_state==0  then +			minetest.env:add_node(pos, {name="mesecons_wireless:wireless_receiver_off"}) +			mesecon:receptor_off(pos) +		end +		if node.name=="mesecons_wireless:wireless_receiver_off" and wlre.requested_state==1  then +			minetest.env:add_node(pos, {name="mesecons_wireless:wireless_receiver_on"}) +			mesecon:receptor_on(pos) +		end +		if node.name=="mesecons_wireless:wireless_inverter_off" and wlre.requested_state==0 and wlre.inverting==1 then +			minetest.env:add_node(pos, {name="mesecons_wireless:wireless_inverter_on"}) +			mesecon:receptor_on(pos) +		end +		if node.name=="mesecons_wireless:wireless_inverter_on" and wlre.requested_state==1 and wlre.inverting==1 then +			minetest.env:add_node(pos, {name="mesecons_wireless:wireless_inverter_off"}) +			mesecon:receptor_off(pos) +		end +	end, +}) + +--WIRELESS RECEIVER + +minetest.register_node("mesecons_wireless:wireless_receiver_off", { +	tile_images = {"jeija_wireless_receiver_tb_off.png", "jeija_wireless_receiver_tb_off.png", "jeija_wireless_receiver_off.png", "jeija_wireless_receiver_off.png", "jeija_wireless_receiver_off.png", "jeija_wireless_receiver_off.png"}, +	inventory_image = minetest.inventorycube("jeija_wireless_receiver_off.png"), +	material = minetest.digprop_constanttime(0.8), +    	description="Wireless Receiver", +}) + +minetest.register_node("mesecons_wireless:wireless_receiver_on", { +	tile_images = {"jeija_wireless_receiver_tb_on.png", "jeija_wireless_receiver_tb_on.png", "jeija_wireless_receiver_on.png", "jeija_wireless_receiver_on.png", "jeija_wireless_receiver_on.png", "jeija_wireless_receiver_on.png"}, +	inventory_image = minetest.inventorycube("jeija_wireless_receiver_on.png"), +	material = minetest.digprop_constanttime(0.8), +	drop = 'mesecons_wireless:wireless_receiver_off', +    	description="Wireless Receiver", +}) + +minetest.register_craft({ +	output = '"mesecons_wireless:wireless_receiver_off" 2', +	recipe = { +		{'', "mesecons:mesecon_off", ''}, +		{'', "mesecons:mesecon_off", ''}, +		{'', "mesecons_materials:ic", ''}, +	} +}) + +minetest.register_on_placenode(function(pos, newnode, placer) +	if newnode.name == "mesecons_wireless:wireless_receiver_off" then +		mesecon:register_wireless_receiver(pos, 0) +	end +end) + +minetest.register_on_dignode( +	function(pos, oldnode, digger) +		if oldnode.name == "mesecons_wireless:wireless_receiver_on" then +			mesecon:remove_wireless_receiver(pos) +			mesecon:receptor_off(pos) +		end	 +		if oldnode.name == "mesecons_wireless:wireless_receiver_off" then +			mesecon:remove_wireless_receiver(pos)		 +		end +	end +) + +minetest.register_abm( -- SAVE WIRELESS RECEIVERS TO FILE +	{nodenames = {"mesecons_wireless:wireless_receiver_off", "mesecons_wireless:wireless_receiver_on", "mesecons_wireless:wireless_inverter_on", "mesecons_wireless:wireless_inverter_off"}, +	interval = 10, +	chance = 1, +	action = function(pos, node, active_object_count, active_object_count_wider) +		local mesecon_file = io.open(minetest.get_modpath("jeija").."/mesecon_data", "w") +		local i=1 +		while mesecon.wireless_receivers[i]~=nil do +			mesecon_file:write("NEXT\n") +			mesecon_file:write(mesecon.wireless_receivers[i].pos.x.."\n") +			mesecon_file:write(mesecon.wireless_receivers[i].pos.y.."\n") +			mesecon_file:write(mesecon.wireless_receivers[i].pos.z.."\n") +			mesecon_file:write(mesecon.wireless_receivers[i].channel.."\n") +			mesecon_file:write(mesecon.wireless_receivers[i].requested_state.."\n") +			mesecon_file:write(mesecon.wireless_receivers[i].inverting.."\n") +			i=i+1 +		end +		mesecon_file:close() +	end,  +}) + +mesecon:add_receptor_node("mesecons_wireless:wireless_receiver_on") +mesecon:add_receptor_node_off("mesecons_wireless:wireless_receiver_off") + +-- WIRELESS INVERTER OFF/ON BELONGS TO THE OUTPUT STATE (ON=INPUT OFF) + +minetest.register_node("mesecons_wireless:wireless_inverter_off", { +	tile_images = {"jeija_wireless_inverter_tb.png", "jeija_wireless_inverter_tb.png", "jeija_wireless_inverter_off.png", "jeija_wireless_inverter_off.png", "jeija_wireless_inverter_off.png", "jeija_wireless_inverter_off.png"}, +	inventory_image = minetest.inventorycube("jeija_wireless_inverter_off.png"), +	material = minetest.digprop_constanttime(0.8), +	drop = 'mesecons_wireless:wireless_inverter_on', +    	description="Wireless Inverter", +}) + +minetest.register_node("mesecons_wireless:wireless_inverter_on", { +	tile_images = {"jeija_wireless_inverter_tb.png", "jeija_wireless_inverter_tb.png", "jeija_wireless_inverter_on.png", "jeija_wireless_inverter_on.png", "jeija_wireless_inverter_on.png", "jeija_wireless_inverter_on.png"}, +	inventory_image = minetest.inventorycube("jeija_wireless_inverter_on.png"), +	material = minetest.digprop_constanttime(0.8), +    	description="Wireless Inverter", +}) + +minetest.register_craft({ +	output = '"mesecons_wireless:wireless_inverter_off" 2', +	recipe = { +		{'', 'default:steel_ingot', ''}, +		{'mesecons_materials:ic', 'mesecons:mesecon_off', 'mesecons_materials:ic'}, +		{'', 'mesecons:mesecon_off', ''}, +	} +}) + +minetest.register_on_placenode(function(pos, newnode, placer) +	if newnode.name == "mesecons_wireless:wireless_inverter_on" then +		mesecon:register_wireless_receiver(pos, 1) +		mesecon:receptor_on(pos) +	end +end) + +minetest.register_on_dignode( +	function(pos, oldnode, digger) +		if oldnode.name == "mesecons_wireless:wireless_inverter_on" then +			mesecon:remove_wireless_receiver(pos) +			mesecon:receptor_off(pos) +		end	 +		if oldnode.name == "mesecons_wireless:wireless_inverter_off" then +			mesecon:remove_wireless_receiver(pos)		 +		end +	end +) + +mesecon:add_receptor_node("mesecons_wireless:wireless_inverter_on") +mesecon:add_receptor_node_off("mesecons_wireless:wireless_inverter_off") + +-- WIRELESS TRANSMITTER + +function mesecon:wireless_transmit(channel, senderstate) +	local i = 1 +	while mesecon.wireless_receivers[i]~=nil do +		if mesecon.wireless_receivers[i].channel==channel then +			if senderstate==1 then +				mesecon.wireless_receivers[i].requested_state=1 +			elseif senderstate==0 then +				mesecon.wireless_receivers[i].requested_state=0 +			end +		end +		i=i+1 +	end +end + +minetest.register_node("mesecons_wireless:wireless_transmitter_on", { +	tile_images = {"jeija_wireless_transmitter_tb.png", "jeija_wireless_transmitter_tb.png", "jeija_wireless_transmitter_on.png", "jeija_wireless_transmitter_on.png", "jeija_wireless_transmitter_on.png", "jeija_wireless_transmitter_on.png"}, +	inventory_image = minetest.inventorycube("jeija_wireless_transmitter_on.png"), +	material = minetest.digprop_constanttime(0.8), +	drop = {'"mesecons_wireless:wireless_transmitter_off" 1'}, +    	description="Wireless Transmitter", +}) + +minetest.register_node("mesecons_wireless:wireless_transmitter_off", { +	tile_images = {"jeija_wireless_transmitter_tb.png", "jeija_wireless_transmitter_tb.png", "jeija_wireless_transmitter_off.png", "jeija_wireless_transmitter_off.png", "jeija_wireless_transmitter_off.png", "jeija_wireless_transmitter_off.png"}, +	inventory_image = minetest.inventorycube("jeija_wireless_transmitter_off.png"), +	material = minetest.digprop_constanttime(0.8), +    	description="Wireless Transmitter", +}) + +minetest.register_craft({ +	output = '"mesecons_wireless:wireless_transmitter_off" 2', +	recipe = { +		{'default:steel_ingot', 'mesecons:mesecon_off', 'default:steel_ingot'}, +		{'', 'mesecons:mesecon_off', ''}, +		{'', 'mesecons_materials:ic', ''}, +	} +}) + +mesecon:register_on_signal_on(function(pos, node) +	if node.name=="mesecons_wireless:wireless_transmitter_off" then +		minetest.env:add_node(pos, {name="mesecons_wireless:wireless_transmitter_on"}) +		local node_under_pos=pos +		node_under_pos.y=node_under_pos.y-1 +		local node_under=minetest.env:get_node(node_under_pos) +		mesecon:wireless_transmit(node_under.name, 1) +	end +end) + +mesecon:register_on_signal_off(function(pos, node) +	if node.name=="mesecons_wireless:wireless_transmitter_on" then +		minetest.env:add_node(pos, {name="mesecons_wireless:wireless_transmitter_off"}) +		local node_under_pos=pos +		node_under_pos.y=node_under_pos.y-1 +		local node_under=minetest.env:get_node(node_under_pos) +		mesecon:wireless_transmit(node_under.name, 0) +	end +end) + +mesecon:read_wlre_from_file()  | 
