forked from minetest-mods/mesecons
		
	Fix .minetest folder.
This commit is contained in:
		| @@ -1,84 +0,0 @@ | ||||
| -- WALL BUTTON | ||||
| minetest.register_node("jeija:wall_button_off", { | ||||
|     drawtype = "signlike", | ||||
|     tile_images = {"jeija_wall_button_off.png"}, | ||||
|     inventory_image = "jeija_wall_button_off.png", | ||||
|     paramtype = "light", | ||||
|     wall_mounted = true, | ||||
|     walkable = false, | ||||
|     selection_box = { | ||||
|         type = "wallmounted", | ||||
|     }, | ||||
|     material = minetest.digprop_constanttime(0.3), | ||||
| }) | ||||
| minetest.register_node("jeija:wall_button_on", { | ||||
|     drawtype = "signlike", | ||||
|     tile_images = {"jeija_wall_button_on.png"}, | ||||
|     inventory_image = "jeija_wall_button_on.png", | ||||
|     paramtype = "light", | ||||
|     wall_mounted = true, | ||||
|     walkable = false, | ||||
|     selection_box = { | ||||
|         type = "wallmounted", | ||||
|     }, | ||||
|     material = minetest.digprop_constanttime(0.3), | ||||
|     drop = '"jeija:wall_button_off" 1', | ||||
| }) | ||||
|  | ||||
| minetest.register_on_dignode( | ||||
|     function(pos, oldnode, digger) | ||||
|         if oldnode.name == "jeija:wall_button_on" then | ||||
|             mesecon:receptor_off(pos) | ||||
|         end     | ||||
|     end | ||||
| ) | ||||
| minetest.register_on_punchnode(function(pos, node, puncher) | ||||
| 	if node.name == "jeija:wall_button_off" then | ||||
| 		minetest.env:add_node(pos, {name="jeija:wall_button_on",param2=node.param2}) | ||||
| 		local rules_string="" | ||||
| 		if node.param2 == 32 then | ||||
| 			rules_string="button_z+" | ||||
| 		end | ||||
| 		if node.param2 == 2 then | ||||
| 			rules_string="button_x+" | ||||
| 		end | ||||
| 		if node.param2 == 16 then | ||||
| 			rules_string="button_z-" | ||||
| 		end | ||||
| 		if node.param2 == 1 then | ||||
| 			rules_string="button_x-" | ||||
| 		end | ||||
| 		mesecon:receptor_on(pos, rules_string) | ||||
| 	end | ||||
| end) | ||||
| minetest.register_abm({ | ||||
| 	nodenames = {"jeija:wall_button_on"}, | ||||
| 	interval = 0.1, | ||||
| 	chance = 1, | ||||
| 	action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 		minetest.env:add_node(pos, {name="jeija:wall_button_off",param2=node.param2}) | ||||
|  | ||||
| 		local rules_string="" | ||||
| 		if node.param2 == 32 then | ||||
| 			rules_string="button_z+" | ||||
| 		end | ||||
| 		if node.param2 == 2 then | ||||
| 			rules_string="button_x+" | ||||
| 		end | ||||
| 		if node.param2 == 16 then | ||||
| 			rules_string="button_z-" | ||||
| 		end | ||||
| 		if node.param2 == 1 then | ||||
| 			rules_string="button_x-" | ||||
| 		end | ||||
|         	mesecon:receptor_off(pos, rules_string) | ||||
| 	end | ||||
| }) | ||||
| minetest.register_craft({ | ||||
| 	output = '"jeija:wall_button_off" 2', | ||||
| 	recipe = { | ||||
| 		{'"jeija:mesecon_off"','"default:stone"'}, | ||||
| 	} | ||||
| }) | ||||
| mesecon:add_receptor_node("jeija:wall_button") | ||||
| mesecon:add_receptor_node_off("jeija:wall_button_off") | ||||
| @@ -1,83 +0,0 @@ | ||||
| --SHORT RANGE DETECTORS | ||||
| minetest.register_node("jeija:object_detector_off", { | ||||
| 	tile_images = {"default_steel_block.png", "default_steel_block.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png"}, | ||||
| 	paramtype = "light", | ||||
| 	walkable = true, | ||||
| 	material = minetest.digprop_stonelike(4), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("jeija:object_detector_on", { | ||||
| 	tile_images = {"default_steel_block.png", "default_steel_block.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png"}, | ||||
| 	paramtype = "light", | ||||
| 	walkable = true, | ||||
| 	material = minetest.digprop_stonelike(4), | ||||
| 	drop = '"jeija:object_detector_off" 1' | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = '"jeija:object_detector_off" 1', | ||||
| 	recipe = { | ||||
| 		{'"default:steelblock"', '', '"default:steelblock"'}, | ||||
| 		{'"default:steelblock"', '"jeija:ic"', '"default:steelblock"'}, | ||||
| 		{'"default:steelblock"', '"jeija:mesecon_off', '"default:steelblock"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_abm( | ||||
| 	{nodenames = {"jeija:object_detector_off"}, | ||||
| 	interval = 1.0, | ||||
| 	chance = 1, | ||||
| 	action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 		local objs = minetest.env:get_objects_inside_radius(pos, 6) | ||||
| 		for k, obj in pairs(objs) do | ||||
| 			if obj:get_entity_name()~="jeija:piston_pusher_sticky" and obj:get_entity_name()~="jeija:piston_pusher_normal" and obj:get_player_name()~=nil then -- Detected object is not piston pusher - will be changed if every entity has a type (like entity_type=mob) | ||||
| 				if minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name=="default:sign_wall" then | ||||
| 					if obj:get_player_name()~=minetest.env:get_meta({x=pos.x, y=pos.y-1, z=pos.z}):get_text() then | ||||
| 						return | ||||
| 					end | ||||
| 				end | ||||
| 				local objpos=obj:getpos() | ||||
| 				minetest.env:add_node(pos, {name="jeija:object_detector_on"}) | ||||
| 				mesecon:receptor_on(pos, "pressureplate") | ||||
| 			end | ||||
| 		end	 | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| minetest.register_abm( | ||||
| 	{nodenames = {"jeija:object_detector_on"}, | ||||
| 	interval = 1.0, | ||||
| 	chance = 1, | ||||
| 	action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 		local objs = minetest.env:get_objects_inside_radius(pos, 6) | ||||
| 		local objectfound=0 | ||||
| 		for k, obj in pairs(objs) do | ||||
| 			if obj:get_entity_name()~="jeija:piston_pusher_sticky" and obj:get_entity_name()~="jeija:piston_pusher_normal" and obj~=nil  | ||||
| 			and obj:get_player_name()~=nil then | ||||
| 				if minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name=="default:sign_wall" then | ||||
| 					if minetest.env:get_meta({x=pos.x, y=pos.y-1, z=pos.z}):get_text() == obj:get_player_name() then | ||||
| 						objectfound=objectfound+1 | ||||
| 					end | ||||
| 				else | ||||
| -- Detected object is not piston pusher - will be changed if every entity has a type (like entity_type=mob) | ||||
| 					objectfound=objectfound + 1 | ||||
| 				end | ||||
| 			end | ||||
| 		end	 | ||||
| 		if objectfound==0 then | ||||
| 			minetest.env:add_node(pos, {name="jeija:object_detector_off"}) | ||||
| 			mesecon:receptor_off(pos, "pressureplate") | ||||
| 		end | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| minetest.register_on_dignode( | ||||
| 	function(pos, oldnode, digger) | ||||
| 		if oldnode.name == "jeija:object_detector_on" then | ||||
| 			mesecon:receptor_off(pos, "pressureplate") | ||||
| 		end	 | ||||
| 	end | ||||
| ) | ||||
|  | ||||
| mesecon:add_receptor_node("jeija:object_detector_on") | ||||
| mesecon:add_receptor_node_off("jeija:object_detector_off") | ||||
| @@ -1,294 +0,0 @@ | ||||
| -- MOVESTONE | ||||
|  | ||||
| function mesecon:is_mvps_stopper(nodename) | ||||
| 	local i=1 | ||||
| 	repeat | ||||
| 		i=i+1 | ||||
| 		if mesecon.mvps_stoppers[i]==nodename then return true end | ||||
| 	until mesecon.mvps_stoppers[i]==nil | ||||
| 	return false | ||||
| end | ||||
|  | ||||
| function mesecon:register_mvps_stopper(nodename) | ||||
| 	local i=1 | ||||
| 	repeat | ||||
| 		i=i+1 | ||||
| 		if mesecon.mvps_stoppers[i]==nil then break end | ||||
| 	until false | ||||
| 	mesecon.mvps_stoppers[i]=nodename | ||||
| end | ||||
|  | ||||
| function jeija_get_movestone_direction(pos) | ||||
| 	getactivated=0 | ||||
| 	local direction = {x=0, y=0, z=0} | ||||
| 	local lpos={x=pos.x, y=pos.y, z=pos.z} | ||||
|  | ||||
| 	local getactivated=0 | ||||
| 	local rules=mesecon:get_rules("movestone") | ||||
|  | ||||
| 	lpos.x=pos.x+0.499 | ||||
|  | ||||
| 	for k=1, 3 do | ||||
| 		getactivated=getactivated+mesecon:is_power_on(lpos, rules[k].x, rules[k].y, rules[k].z) | ||||
| 	end | ||||
| 	if getactivated>0 then direction.x=-1 return direction end | ||||
| 	lpos=pos | ||||
| 	lpos.x=pos.x-0.499 | ||||
|  | ||||
| 	for n=4, 6 do | ||||
| 		getactivated=getactivated+mesecon:is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) | ||||
| 	end | ||||
|  | ||||
| 	if getactivated>0 then direction.x=1 return direction end | ||||
| 	lpos=pos | ||||
| 	lpos.z=pos.z+0.499 | ||||
|  | ||||
| 	for j=7, 9 do | ||||
| 		getactivated=getactivated+mesecon:is_power_on(lpos, rules[j].x, rules[j].y, rules[j].z) | ||||
| 	end | ||||
|  | ||||
| 	if getactivated>0 then direction.z=-1 return direction end | ||||
| 	lpos=pos | ||||
| 	lpos.z=pos.z-0.499 | ||||
|  | ||||
| 	for l=10, 12 do | ||||
| 		getactivated=getactivated+mesecon:is_power_on(lpos, rules[l].x, rules[l].y, rules[l].z) | ||||
| 	end | ||||
| 	if getactivated>0 then direction.z=1 return direction end | ||||
| 	return direction | ||||
| end | ||||
|  | ||||
| minetest.register_node("jeija:movestone", { | ||||
| 	tile_images = {"jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_arrows.png", "jeija_movestone_arrows.png"}, | ||||
| 	paramtype = "facedir_simple", | ||||
| 	material = minetest.digprop_stonelike(0.8), | ||||
| }) | ||||
|  | ||||
| minetest.register_entity("jeija:movestone_entity", { | ||||
| 	physical = false, | ||||
| 	visual = "sprite", | ||||
| 	textures = {"jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_arrows.png", "jeija_movestone_arrows.png"}, | ||||
| 	collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, | ||||
| 	visual = "cube", | ||||
| 	--on_activate = function(self, staticdata) | ||||
| 		--self.object:setsprite({x=0,y=0}, 1, 0, true) | ||||
| 		--self.object:setvelocity({x=-3, y=0, z=0}) | ||||
| 	--end, | ||||
|  | ||||
| 	on_punch = function(self, hitter) | ||||
| 		self.object:remove() | ||||
| 		hitter:get_inventory():add_item("main", "jeija:movestone") | ||||
| 	end, | ||||
|  | ||||
| 	on_step = function(self, dtime) | ||||
| 		local pos = self.object:getpos() | ||||
| 		local colp = pos | ||||
| 		local velocity={} | ||||
| 		local direction=jeija_get_movestone_direction(colp) | ||||
|  | ||||
| 		--colp.x=colp.x-(direction.x/2.01) | ||||
| 		--colp.y=colp.y-direction.y | ||||
| 		--colp.z=colp.z-(direction.z/2.01) | ||||
|  | ||||
| 		if (direction.x==0 and direction.y==0 and direction.z==0) | ||||
| 		or (minetest.env:get_node_or_nil(pos).name ~="air"  | ||||
| 		and minetest.env:get_node_or_nil(pos).name ~= nil) then | ||||
| 			minetest.env:add_node(pos, {name="jeija:movestone"}) | ||||
| 			self.object:remove() | ||||
| 			return		 | ||||
| 		end  | ||||
| 		--if not mesecon:check_if_turnon(colp) then | ||||
| 		--	minetest.env:add_node(pos, {name="jeija:movestone"}) | ||||
| 		--	self.object:remove() | ||||
| 		--	return | ||||
| 		--end | ||||
|  | ||||
| 		velocity.x=direction.x*3 | ||||
| 		velocity.y=direction.y*3 | ||||
| 		velocity.z=direction.z*3 | ||||
|  | ||||
| 		self.object:setvelocity(velocity) | ||||
|  | ||||
| 		local np = {x=pos.x+direction.x, y=pos.y+direction.y, z=pos.z+direction.z}	 | ||||
| 		local coln = minetest.env:get_node(np) | ||||
| 		if coln.name ~= "air" and coln.name ~="water" then | ||||
| 			local thisp= {x=pos.x, y=pos.y, z=pos.z} | ||||
| 			local thisnode=minetest.env:get_node(thisp) | ||||
| 			local nextnode={} | ||||
| 			minetest.env:remove_node(thisp) | ||||
| 			repeat | ||||
| 				thisp.x=thisp.x+direction.x | ||||
| 				thisp.y=thisp.y+direction.y | ||||
| 				thisp.z=thisp.z+direction.z | ||||
| 				nextnode=minetest.env:get_node(thisp) | ||||
| 				minetest.env:add_node(thisp, {name=thisnode.name}) | ||||
| 				nodeupdate(thisp) | ||||
| 				thisnode=nextnode | ||||
| 			until thisnode.name=="air" or thisnode.name=="ignore" or thisnode.name=="default:water" or thisnode.name=="default:water_flowing" | ||||
| 		end | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = '"jeija:movestone" 2', | ||||
| 	recipe = { | ||||
| 		{'"default:stone"', '"default:stone"', '"default:stone"'}, | ||||
| 		{'"jeija:mesecon_off"', '"jeija:mesecon_off"', '"jeija:mesecon_off"'}, | ||||
| 		{'"default:stone"', '"default:stone"', '"default:stone"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
|  | ||||
| mesecon:register_on_signal_on(function (pos, node) | ||||
| 	if node.name=="jeija:movestone" then | ||||
| 		local direction=jeija_get_movestone_direction({x=pos.x, y=pos.y, z=pos.z}) | ||||
| 		local checknode={} | ||||
| 		local collpos={x=pos.x, y=pos.y, z=pos.z} | ||||
| 		repeat -- Check if it collides with a stopper | ||||
| 			collpos={x=collpos.x+direction.x, y=collpos.y+direction.y, z=collpos.z+direction.z} | ||||
| 			checknode=minetest.env:get_node(collpos) | ||||
| 			if mesecon:is_mvps_stopper(checknode.name) then  | ||||
| 				return  | ||||
| 			end | ||||
| 		until checknode.name=="air" | ||||
| 		or checknode.name=="ignore"  | ||||
| 		or checknode.name=="default:water"  | ||||
| 		or checknode.name=="default:water_flowing"  | ||||
| 		minetest.env:remove_node(pos) | ||||
| 		nodeupdate(pos) | ||||
| 		minetest.env:add_entity(pos, "jeija:movestone_entity") | ||||
| 	end | ||||
| end) | ||||
|  | ||||
|  | ||||
|  | ||||
| -- STICKY_MOVESTONE | ||||
|  | ||||
| minetest.register_node("jeija:sticky_movestone", { | ||||
| 	tile_images = {"jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_sticky_movestone.png", "jeija_sticky_movestone.png"}, | ||||
| 	inventory_image = minetest.inventorycube("jeija_sticky_movestone.png", "jeija_movestone_side.png", "jeija_movestone_side.png"), | ||||
| 	paramtype = "facedir_simple", | ||||
| 	material = minetest.digprop_stonelike(0.8), | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = '"jeija:sticky_movestone" 2', | ||||
| 	recipe = { | ||||
| 		{'"jeija:glue"', '"jeija:movestone"', '"jeija:glue"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_entity("jeija:sticky_movestone_entity", { | ||||
| 	physical = false, | ||||
| 	visual = "sprite", | ||||
| 	textures = {"jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_sticky_movestone.png", "jeija_sticky_movestone.png"}, | ||||
| 	collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, | ||||
| 	visual = "cube", | ||||
|  | ||||
| 	on_punch = function(self, hitter) | ||||
| 		self.object:remove() | ||||
| 		hitter:get_inventory():add_item("main", 'jeija:sticky_movestone') | ||||
| 	end, | ||||
|  | ||||
| 	on_step = function(self, dtime) | ||||
| 		local pos = self.object:getpos() | ||||
| 		local colp = pos | ||||
| 		local direction=jeija_get_movestone_direction(colp) | ||||
| 		local velocity={x=direction.x*3, y=direction.y*3, z=direction.z*3} | ||||
|  | ||||
| 		self.object:setvelocity(velocity) | ||||
|  | ||||
| 		local np = {x=pos.x+direction.x, y=pos.y+direction.y, z=pos.z+direction.z}	 | ||||
| 		local coln = minetest.env:get_node(np) | ||||
| 		if coln.name ~= "air" and coln.name ~="water" then | ||||
| 			local thisp= {x=pos.x, y=pos.y, z=pos.z} | ||||
| 			local thisnode=minetest.env:get_node(thisp) | ||||
| 			local nextnode={} | ||||
| 			minetest.env:remove_node(thisp) | ||||
| 			repeat | ||||
| 				thisp.x=thisp.x+direction.x | ||||
| 				thisp.y=thisp.y+direction.y | ||||
| 				thisp.z=thisp.z+direction.z | ||||
| 				nextnode=minetest.env:get_node(thisp) | ||||
| 				minetest.env:add_node(thisp, {name=thisnode.name}) | ||||
| 				nodeupdate(thisp) | ||||
| 				thisnode=nextnode | ||||
| 			until thisnode.name=="air" or thisnode.name=="ignore" or thisnode.name=="default:water" or thisnode.name=="default:water_flowing" | ||||
| 		end | ||||
|  | ||||
| 		--STICKY: | ||||
| 		local np1 = {x=pos.x-direction.x*0.5, y=pos.y-direction.y*0.5, z=pos.z-direction.z*0.5} -- 1 away | ||||
| 		local coln1 = minetest.env:get_node(np1) | ||||
| 		local np2 = {x=pos.x-direction.x*1.5, y=pos.y-direction.y*1.5, z=pos.z-direction.z*1.5} -- 2 away | ||||
| 		local coln2 = minetest.env:get_node(np2) | ||||
|  | ||||
| 		if (coln1.name == "air" or coln1.name =="water") and (coln2.name~="air" and coln2.name ~= water) then | ||||
| 			thisp= np2 | ||||
| 			local newpos={} | ||||
| 			local oldpos={} | ||||
| 			repeat | ||||
| 				newpos.x=thisp.x+direction.x | ||||
| 				newpos.y=thisp.y+direction.y | ||||
| 				newpos.z=thisp.z+direction.z | ||||
| 				minetest.env:add_node(newpos, {name=minetest.env:get_node(thisp).name}) | ||||
| 				nodeupdate(newpos) | ||||
| 				oldpos={x=thisp.x, y=thisp.y, z=thisp.z} | ||||
| 				thisp.x=thisp.x-direction.x | ||||
| 				thisp.y=thisp.y-direction.y | ||||
| 				thisp.z=thisp.z-direction.z | ||||
| 			until minetest.env:get_node(thisp).name=="air" or minetest.env:get_node(thisp).name=="ignore" or minetest.env:get_node(thisp).name=="default:water" or minetest.env:get_node(thisp).name=="default:water_flowing" | ||||
| 			minetest.env:remove_node(oldpos) | ||||
| 		end | ||||
|  | ||||
| 		if (direction.x==0 and direction.y==0 and direction.z==0) then | ||||
| 		--or (minetest.env:get_node_or_nil(pos).name ~="air"  | ||||
| 		--and minetest.env:get_node_or_nil(pos).name ~= nil) then | ||||
| 			minetest.env:add_node(pos, {name="jeija:sticky_movestone"}) | ||||
| 			self.object:remove() | ||||
| 			return		 | ||||
| 		end  | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = '"jeija:sticky_movestone" 2', | ||||
| 	recipe = { | ||||
| 		{'"default:stone"', '"default:stone"', '"default:stone"'}, | ||||
| 		{'"jeija:mesecon_off"', '"jeija:mesecon_off"', '"default:tree"'}, | ||||
| 		{'"default:stone"', '"default:stone"', '"default:stone"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
|  | ||||
| mesecon:register_on_signal_on(function (pos, node) | ||||
| 	if node.name=="jeija:sticky_movestone" then | ||||
| 		local direction=jeija_get_movestone_direction({x=pos.x, y=pos.y, z=pos.z}) | ||||
| 		local checknode={} | ||||
| 		local collpos={x=pos.x, y=pos.y, z=pos.z} | ||||
| 		repeat -- Check if it collides with a stopper | ||||
| 			collpos={x=collpos.x+direction.x, y=collpos.y+direction.y, z=collpos.z+direction.z} | ||||
| 			checknode=minetest.env:get_node(collpos) | ||||
| 			if mesecon:is_mvps_stopper(checknode.name) then  | ||||
| 				return  | ||||
| 			end | ||||
| 		until checknode.name=="air" | ||||
| 		or checknode.name=="ignore"  | ||||
| 		or checknode.name=="default:water"  | ||||
| 		or checknode.name=="default:water_flowing"  | ||||
| 		repeat -- Check if it collides with a stopper (pull direction) | ||||
| 			collpos={x=collpos.x-direction.x, y=collpos.y-direction.y, z=collpos.z-direction.z} | ||||
| 			checknode=minetest.env:get_node(collpos) | ||||
| 			if mesecon:is_mvps_stopper(checknode.name) then | ||||
| 				return  | ||||
| 			end | ||||
| 		until checknode.name=="air" | ||||
| 		or checknode.name=="ignore"  | ||||
| 		or checknode.name=="default:water"  | ||||
| 		or checknode.name=="default:water_flowing"  | ||||
|  | ||||
| 		minetest.env:remove_node(pos) | ||||
| 		nodeupdate(pos) | ||||
| 		minetest.env:add_entity(pos, "jeija:sticky_movestone_entity") | ||||
| 	end | ||||
| end) | ||||
|  | ||||
| @@ -1,151 +0,0 @@ | ||||
| -- PRESSURE PLATE WOOD | ||||
|  | ||||
| minetest.register_node("jeija:pressure_plate_wood_off", { | ||||
| 	drawtype = "raillike", | ||||
| 	tile_images = {"jeija_pressure_plate_wood_off.png"}, | ||||
| 	inventory_image = "jeija_pressure_plate_wood_off.png", | ||||
| 	paramtype = "light", | ||||
| 	is_ground_content = true, | ||||
| 	walkable = false, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 	}, | ||||
| 	material = minetest.digprop_constanttime(0.3), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("jeija:pressure_plate_wood_on", { | ||||
| 	drawtype = "raillike", | ||||
| 	tile_images = {"jeija_pressure_plate_wood_on.png"}, | ||||
| 	inventory_image = "jeija_pressure_plate_wood_on.png", | ||||
| 	paramtype = "light", | ||||
| 	is_ground_content = true, | ||||
| 	walkable = false, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 	}, | ||||
| 	material = minetest.digprop_constanttime(0.3), | ||||
| 	drop='"jeija:pressure_plate_wood_off" 1' | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = '"jeija:pressure_plate_wood_off" 1', | ||||
| 	recipe = { | ||||
| 		{'"default:wood"', '"default:wood"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_abm( | ||||
| 	{nodenames = {"jeija:pressure_plate_wood_off"}, | ||||
| 	interval = 1.0, | ||||
| 	chance = 1, | ||||
| 	action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 		local objs = minetest.env:get_objects_inside_radius(pos, 1) | ||||
| 		for k, obj in pairs(objs) do | ||||
| 			local objpos=obj:getpos() | ||||
| 			if objpos.y>pos.y-1 and objpos.y<pos.y then | ||||
| 				minetest.env:add_node(pos, {name="jeija:pressure_plate_wood_on"}) | ||||
| 				mesecon:receptor_on(pos, "pressureplate") | ||||
| 			end | ||||
| 		end	 | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| minetest.register_abm( | ||||
| 	{nodenames = {"jeija:pressure_plate_wood_on"}, | ||||
| 	interval = 1.0, | ||||
| 	chance = 1, | ||||
| 	action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 		local objs = minetest.env:get_objects_inside_radius(pos, 1) | ||||
| 		if objs[1]==nil then | ||||
| 			minetest.env:add_node(pos, {name="jeija:pressure_plate_wood_off"}) | ||||
| 			mesecon:receptor_off(pos, "pressureplate") | ||||
| 		end | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| minetest.register_on_dignode( | ||||
| 	function(pos, oldnode, digger) | ||||
| 		if oldnode.name == "jeija:pressure_plate_wood_on" then | ||||
| 			mesecon:receptor_off(pos, "pressureplate") | ||||
| 		end	 | ||||
| 	end | ||||
| ) | ||||
|  | ||||
| mesecon:add_receptor_node("jeija:pressure_plate_wood_on") | ||||
| mesecon:add_receptor_node_off("jeija:pressure_plate_wood_off") | ||||
|  | ||||
| -- PRESSURE PLATE STONE | ||||
|  | ||||
| minetest.register_node("jeija:pressure_plate_stone_off", { | ||||
| 	drawtype = "raillike", | ||||
| 	tile_images = {"jeija_pressure_plate_stone_off.png"}, | ||||
| 	inventory_image = "jeija_pressure_plate_stone_off.png", | ||||
| 	paramtype = "light", | ||||
| 	is_ground_content = true, | ||||
| 	walkable = false, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 	}, | ||||
| 	material = minetest.digprop_constanttime(0.3), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("jeija:pressure_plate_stone_on", { | ||||
| 	drawtype = "raillike", | ||||
| 	tile_images = {"jeija_pressure_plate_stone_on.png"}, | ||||
| 	inventory_image = "jeija_pressure_plate_stone_on.png", | ||||
| 	paramtype = "light", | ||||
| 	is_ground_content = true, | ||||
| 	walkable = false, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 	}, | ||||
| 	material = minetest.digprop_constanttime(0.3), | ||||
| 	drop='"jeija:pressure_plate_stone_off" 1' | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = '"jeija:pressure_plate_stone_off" 1', | ||||
| 	recipe = { | ||||
| 		{'"default:cobble"', '"default:cobble"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_abm( | ||||
| 	{nodenames = {"jeija:pressure_plate_stone_off"}, | ||||
| 	interval = 1.0, | ||||
| 	chance = 1, | ||||
| 	action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 		local objs = minetest.env:get_objects_inside_radius(pos, 1) | ||||
| 		for k, obj in pairs(objs) do | ||||
| 			local objpos=obj:getpos() | ||||
| 			if objpos.y>pos.y-1 and objpos.y<pos.y then | ||||
| 				minetest.env:add_node(pos, {name="jeija:pressure_plate_stone_on"}) | ||||
| 				mesecon:receptor_on(pos, "pressureplate") | ||||
| 			end | ||||
| 		end	 | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| minetest.register_abm( | ||||
| 	{nodenames = {"jeija:pressure_plate_stone_on"}, | ||||
| 	interval = 1.0, | ||||
| 	chance = 1, | ||||
| 	action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 		local objs = minetest.env:get_objects_inside_radius(pos, 1) | ||||
| 		if objs[1]==nil then | ||||
| 			minetest.env:add_node(pos, {name="jeija:pressure_plate_stone_off"}) | ||||
| 			mesecon:receptor_off(pos, "pressureplate") | ||||
| 		end | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| minetest.register_on_dignode( | ||||
| 	function(pos, oldnode, digger) | ||||
| 		if oldnode.name == "jeija:pressure_plate_stone_on" then | ||||
| 			mesecon:receptor_off(pos, "pressureplate") | ||||
| 		end	 | ||||
| 	end | ||||
| ) | ||||
|  | ||||
| mesecon:add_receptor_node("jeija:pressure_plate_stone_on") | ||||
| mesecon:add_receptor_node_off("jeija:pressure_plate_stone_off") | ||||
| @@ -1,138 +0,0 @@ | ||||
| --MESECON TORCHES | ||||
|  | ||||
| minetest.register_craft({ | ||||
|     output = '"jeija:mesecon_torch_on" 4', | ||||
|     recipe = { | ||||
|         {'"jeija:mesecon_off"'}, | ||||
|         {'craft "default:stick"'}, | ||||
|     } | ||||
| }) | ||||
|  | ||||
| minetest.register_node("jeija:mesecon_torch_off", { | ||||
|     drawtype = "torchlike", | ||||
|     tile_images = {"jeija_torches_off.png", "jeija_torches_off_ceiling.png", "jeija_torches_off_side.png"}, | ||||
|     inventory_image = "jeija_torches_off.png", | ||||
|     sunlight_propagates = true, | ||||
|     walkable = false, | ||||
|     wall_mounted = true, | ||||
|     material = minetest.digprop_constanttime(0.5), | ||||
|     drop = '"jeija:mesecon_torch_on" 1', | ||||
| }) | ||||
|  | ||||
| minetest.register_node("jeija:mesecon_torch_on", { | ||||
|     drawtype = "torchlike", | ||||
|     tile_images = {"jeija_torches_on.png", "jeija_torches_on_ceiling.png", "jeija_torches_on_side.png"}, | ||||
|     inventory_image = "jeija_torches_on.png", | ||||
|     paramtype = "light", | ||||
|     sunlight_propagates = true, | ||||
|     walkable = false, | ||||
|     wall_mounted = true, | ||||
|     material = minetest.digprop_constanttime(0.5), | ||||
|     light_source = LIGHT_MAX-5, | ||||
| }) | ||||
|  | ||||
| --[[minetest.register_on_placenode(function(pos, newnode, placer) | ||||
| 	if (newnode.name=="jeija:mesecon_torch_off" or newnode.name=="jeija:mesecon_torch_on") | ||||
| 	and (newnode.param2==8 or newnode.param2==4) then | ||||
| 		minetest.env:remove_node(pos) | ||||
| 		--minetest.env:add_item(pos, "craft 'jeija:mesecon_torch_on' 1") | ||||
| 	end | ||||
| end)]] | ||||
|  | ||||
| minetest.register_abm({ | ||||
|     nodenames = {"jeija:mesecon_torch_off","jeija:mesecon_torch_on"}, | ||||
|     interval = 0.2, | ||||
|     chance = 1, | ||||
|     action = function(pos, node, active_object_count, active_object_count_wider) | ||||
|         local pa = {x=0, y=0, z=0} | ||||
| 	pa.y = 1 | ||||
| 	local rules_string="" | ||||
|  | ||||
| 	if node.param2 == 32 then | ||||
| 		pa.z = -1 | ||||
| 		rules_string="mesecontorch_z+" | ||||
| 	end | ||||
| 	if node.param2 == 2 then | ||||
| 		pa.x = -1 | ||||
| 		rules_string="mesecontorch_x+" | ||||
| 	end | ||||
| 	if node.param2 == 16 then | ||||
| 		pa.z = 1 | ||||
| 		rules_string="mesecontorch_z-" | ||||
| 	end | ||||
| 	if node.param2 == 1 then | ||||
| 		pa.x = 1 | ||||
| 		rules_string="mesecontorch_x-" | ||||
| 	end | ||||
| 	if node.param2 == 4 then | ||||
| 		rules_string="mesecontorch_y-" | ||||
| 		pa.y = 1 | ||||
| 		pa.z=0 | ||||
| 		pa.x=0 | ||||
|         end | ||||
|         if node.param2 == 8 then | ||||
| 		rules_string="mesecontorch_y+" | ||||
| 		pa.y = -1 | ||||
| 		pa.z=0 | ||||
| 		pa.x=0 | ||||
|         end | ||||
|  | ||||
|         if mesecon:is_power_on({x=pos.x, y=pos.y, z=pos.z}, pa.x, pa.y, pa.z)==1 then | ||||
|             if node.name ~= "jeija:mesecon_torch_off" then | ||||
|                 minetest.env:add_node(pos, {name="jeija:mesecon_torch_off",param2=node.param2}) | ||||
|                 mesecon:receptor_off({x=pos.x-pa.x, y=pos.y-pa.y, z=pos.z-pa.z}, rules_string) | ||||
|             end | ||||
|         else | ||||
|             if node.name ~= "jeija:mesecon_torch_on" then | ||||
|                 minetest.env:add_node(pos, {name="jeija:mesecon_torch_on",param2=node.param2}) | ||||
|                 mesecon:receptor_on({x=pos.x-pa.x, y=pos.y-pa.y, z=pos.z-pa.z}, rules_string) | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| }) | ||||
|  | ||||
| minetest.register_on_dignode( | ||||
| 	function(pos, oldnode, digger) | ||||
| 		if oldnode.name == "jeija:mesecon_torch_on" then | ||||
| 			mesecon:receptor_off(pos) | ||||
| 		end	 | ||||
| 	end | ||||
| ) | ||||
|  | ||||
| minetest.register_on_placenode(function(pos, node, placer) | ||||
| 	if node.name == "jeija:mesecon_torch_on" then | ||||
| 		local rules_string="" | ||||
|  | ||||
| 		if node.param2 == 32 then | ||||
| 			rules_string="mesecontorch_z+" | ||||
| 		end | ||||
| 		if node.param2 == 2 then | ||||
| 			rules_string="mesecontorch_x+" | ||||
| 		end | ||||
| 		if node.param2 == 16 then | ||||
| 			rules_string="mesecontorch_z-" | ||||
| 		end | ||||
| 		if node.param2 == 1 then | ||||
| 			rules_string="mesecontorch_x-" | ||||
| 		end | ||||
| 		if node.param2 == 4 then | ||||
| 			rules_string="mesecontorch_y-" | ||||
| 	        end | ||||
| 	        if node.param2 == 8 then | ||||
| 			rules_string="mesecontorch_y+" | ||||
| 	        end | ||||
| 		 | ||||
| 		mesecon:receptor_on(pos, rules_string) | ||||
| 	end | ||||
| end) | ||||
|  | ||||
| mesecon:add_receptor_node("jeija:mesecon_torch_on") | ||||
| mesecon:add_receptor_node_off("jeija:mesecon_torch_off") | ||||
|  | ||||
| -- Param2 Table (Block Attached To) | ||||
| -- 32 = z-1 | ||||
| -- 2 = x-1 | ||||
| -- 16 = z+1 | ||||
| -- 1 = x+1 | ||||
| -- 4 = y+1 | ||||
| -- 8 = y-1 | ||||
| @@ -1,327 +0,0 @@ | ||||
| -- IC | ||||
| minetest.register_craftitem("jeija:ic", { | ||||
| 	image = "jeija_ic.png", | ||||
| 	on_place_on_ground = minetest.craftitem_place_item, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'craft "jeija:ic" 2', | ||||
| 	recipe = { | ||||
| 		{'craft "jeija:silicon"', 'craft "jeija:silicon"', 'node "jeija:mesecon_off"'}, | ||||
| 		{'craft "jeija:silicon"', 'craft "jeija:silicon"', 'node "jeija:mesecon_off"'}, | ||||
| 		{'node "jeija:mesecon_off"', 'node "jeija:mesecon_off"', ''}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| --COMMON WIRELESS FUNCTIONS | ||||
|  | ||||
| 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 == "jeija:wireless_receiver_off" or | ||||
| 	   minetest.env:get_node(pos).name == "jeija:wireless_receiver_on"  or | ||||
| 	   minetest.env:get_node(pos).name == "jeija:wireless_inverter_off" or | ||||
| 	   minetest.env:get_node(pos).name == "jeija: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 == "jeija:wireless_receiver_on" or | ||||
| 		   minetest.env:get_node(pos).name == "jeija:wireless_receiver_off" or | ||||
| 		   minetest.env:get_node(pos).name == "jeija:wireless_inverter_on" or | ||||
| 		   minetest.env:get_node(pos).name == "jeija:wireless_inverter_off" then | ||||
| 			mesecon:set_wlre_channel(pos, "air") | ||||
| 		end	 | ||||
| 	end | ||||
| ) | ||||
|  | ||||
| minetest.register_abm( | ||||
| 	{nodenames = {"jeija:wireless_receiver_on", "jeija:wireless_receiver_off", | ||||
| 		      "jeija:wireless_inverter_on", "jeija: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=="jeija:wireless_receiver_on" and wlre.requested_state==0  then | ||||
| 			minetest.env:add_node(pos, {name="jeija:wireless_receiver_off"}) | ||||
| 			mesecon:receptor_off(pos) | ||||
| 		end | ||||
| 		if node.name=="jeija:wireless_receiver_off" and wlre.requested_state==1  then | ||||
| 			minetest.env:add_node(pos, {name="jeija:wireless_receiver_on"}) | ||||
| 			mesecon:receptor_on(pos) | ||||
| 		end | ||||
| 		if node.name=="jeija:wireless_inverter_off" and wlre.requested_state==0 and wlre.inverting==1 then | ||||
| 			minetest.env:add_node(pos, {name="jeija:wireless_inverter_on"}) | ||||
| 			mesecon:receptor_on(pos) | ||||
| 		end | ||||
| 		if node.name=="jeija:wireless_inverter_on" and wlre.requested_state==1 and wlre.inverting==1 then | ||||
| 			minetest.env:add_node(pos, {name="jeija:wireless_inverter_off"}) | ||||
| 			mesecon:receptor_off(pos) | ||||
| 		end | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| --WIRELESS RECEIVER | ||||
|  | ||||
| minetest.register_node("jeija: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), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("jeija: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), | ||||
| 	dug_item = 'node "jeija:wireless_receiver_off" 1' | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'node "jeija:wireless_receiver_off" 2', | ||||
| 	recipe = { | ||||
| 		{'', 'node "jeija:mesecon_off"', ''}, | ||||
| 		{'', 'node "jeija:mesecon_off"', ''}, | ||||
| 		{'', 'craft "jeija:ic"', ''}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_on_placenode(function(pos, newnode, placer) | ||||
| 	if newnode.name == "jeija:wireless_receiver_off" then | ||||
| 		mesecon:register_wireless_receiver(pos, 0) | ||||
| 	end | ||||
| end) | ||||
|  | ||||
| minetest.register_on_dignode( | ||||
| 	function(pos, oldnode, digger) | ||||
| 		if oldnode.name == "jeija:wireless_receiver_on" then | ||||
| 			mesecon:remove_wireless_receiver(pos) | ||||
| 			mesecon:receptor_off(pos) | ||||
| 		end	 | ||||
| 		if oldnode.name == "jeija:wireless_receiver_off" then | ||||
| 			mesecon:remove_wireless_receiver(pos)		 | ||||
| 		end | ||||
| 	end | ||||
| ) | ||||
|  | ||||
| minetest.register_abm( -- SAVE WIRELESS RECEIVERS TO FILE | ||||
| 	{nodenames = {"jeija:wireless_receiver_off", "jeija:wireless_receiver_on", "jeija:wireless_inverter_on", "jeija: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("jeija:wireless_receiver_on") | ||||
| mesecon:add_receptor_node_off("jeija:wireless_receiver_off") | ||||
|  | ||||
| -- WIRELESS INVERTER OFF/ON BELONGS TO THE OUTPUT STATE (ON=INPUT OFF) | ||||
|  | ||||
| minetest.register_node("jeija: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), | ||||
| 	dug_item = 'node "jeija:wireless_inverter_on" 1' | ||||
| }) | ||||
|  | ||||
| minetest.register_node("jeija: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), | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'node "jeija:wireless_inverter_off" 2', | ||||
| 	recipe = { | ||||
| 		{'', 'craft "default:steel_ingot"', ''}, | ||||
| 		{'craft "jeija:ic"', 'node "jeija:mesecon_off"', 'craft "jeija:ic"'}, | ||||
| 		{'', 'node "jeija:mesecon_off"', ''}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_on_placenode(function(pos, newnode, placer) | ||||
| 	if newnode.name == "jeija: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 == "jeija:wireless_inverter_on" then | ||||
| 			mesecon:remove_wireless_receiver(pos) | ||||
| 			mesecon:receptor_off(pos) | ||||
| 		end	 | ||||
| 		if oldnode.name == "jeija:wireless_inverter_off" then | ||||
| 			mesecon:remove_wireless_receiver(pos)		 | ||||
| 		end | ||||
| 	end | ||||
| ) | ||||
|  | ||||
| mesecon:add_receptor_node("jeija:wireless_inverter_on") | ||||
| mesecon:add_receptor_node_off("jeija: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("jeija: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), | ||||
| 	dug_item = 'node "jeija:wireless_transmitter_off" 1', | ||||
| }) | ||||
|  | ||||
| minetest.register_node("jeija: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), | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'node "jeija:wireless_transmitter_off" 2', | ||||
| 	recipe = { | ||||
| 		{'craft "default:steel_ingot"', 'node "jeija:mesecon_off"', 'craft "default:steel_ingot"'}, | ||||
| 		{'', 'node "jeija:mesecon_off"', ''}, | ||||
| 		{'', 'craft "jeija:ic"', ''}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| mesecon:register_on_signal_on(function(pos, node) | ||||
| 	if node.name=="jeija:wireless_transmitter_off" then | ||||
| 		minetest.env:add_node(pos, {name="jeija: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=="jeija:wireless_transmitter_on" then | ||||
| 		minetest.env:add_node(pos, {name="jeija: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) | ||||
| @@ -22,7 +22,7 @@ minetest.register_node("jeija:wall_button_on", { | ||||
|         type = "wallmounted", | ||||
|     }, | ||||
|     material = minetest.digprop_constanttime(0.3), | ||||
|     dug_item = 'node jeija:wall_button_off 1', | ||||
|     drop = '"jeija:wall_button_off" 1', | ||||
| }) | ||||
|  | ||||
| minetest.register_on_dignode( | ||||
| @@ -32,14 +32,6 @@ minetest.register_on_dignode( | ||||
|         end     | ||||
|     end | ||||
| ) | ||||
| minetest.register_on_placenode(function(pos, node) | ||||
|     if node.name == "jeija:wall_button_off" or node.name == "jeija:wall_button_on" then | ||||
|         if node.param2 == 4 or node.param2 == 8 then | ||||
|             minetest.env:remove_node(pos) | ||||
|             minetest.env:add_item(pos, 'node jeija:wall_button_off 1') | ||||
|         end | ||||
|     end | ||||
| end) | ||||
| minetest.register_on_punchnode(function(pos, node, puncher) | ||||
| 	if node.name == "jeija:wall_button_off" then | ||||
| 		minetest.env:add_node(pos, {name="jeija:wall_button_on",param2=node.param2}) | ||||
| @@ -83,9 +75,9 @@ minetest.register_abm({ | ||||
| 	end | ||||
| }) | ||||
| minetest.register_craft({ | ||||
| 	output = 'node "jeija:wall_button_off" 2', | ||||
| 	output = '"jeija:wall_button_off" 2', | ||||
| 	recipe = { | ||||
| 		{'node "jeija:mesecon_off"','node "default:stone"'}, | ||||
| 		{'"jeija:mesecon_off"','"default:stone"'}, | ||||
| 	} | ||||
| }) | ||||
| mesecon:add_receptor_node("jeija:wall_button") | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| --SHORT RANGE DETECTORS | ||||
| minetest.register_node("jeija:object_detector_off", { | ||||
| 	tile_images = {"default_steel_block.png", "default_steel_block.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png"}, | ||||
| 	inventory_image = minetest.inventorycube("default_steel_block.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png"), | ||||
| 	paramtype = "light", | ||||
| 	walkable = true, | ||||
| 	material = minetest.digprop_stonelike(4), | ||||
| @@ -9,19 +8,18 @@ minetest.register_node("jeija:object_detector_off", { | ||||
|  | ||||
| minetest.register_node("jeija:object_detector_on", { | ||||
| 	tile_images = {"default_steel_block.png", "default_steel_block.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png"}, | ||||
| 	inventory_image = minetest.inventorycube("jeija_object_detector_on.png"), | ||||
| 	paramtype = "light", | ||||
| 	walkable = true, | ||||
| 	material = minetest.digprop_stonelike(4), | ||||
| 	dug_item = 'node "jeija:object_detector_off" 1' | ||||
| 	drop = '"jeija:object_detector_off" 1' | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'node "jeija:object_detector_off" 1', | ||||
| 	output = '"jeija:object_detector_off" 1', | ||||
| 	recipe = { | ||||
| 		{'node "default:steelblock"', '', 'node "default:steelblock"'}, | ||||
| 		{'node "default:steelblock"', 'craft "jeija:ic"', 'node "default:steelblock"'}, | ||||
| 		{'node "default:steelblock"', 'node "jeija:mesecon_off', 'node "default:steelblock"'}, | ||||
| 		{'"default:steelblock"', '', '"default:steelblock"'}, | ||||
| 		{'"default:steelblock"', '"jeija:ic"', '"default:steelblock"'}, | ||||
| 		{'"default:steelblock"', '"jeija:mesecon_off', '"default:steelblock"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
|   | ||||
| @@ -60,7 +60,6 @@ end | ||||
|  | ||||
| minetest.register_node("jeija:movestone", { | ||||
| 	tile_images = {"jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_arrows.png", "jeija_movestone_arrows.png"}, | ||||
| 	inventory_image = minetest.inventorycube("jeija_movestone_arrows.png", "jeija_movestone_side.png", "jeija_movestone_side.png"), | ||||
| 	paramtype = "facedir_simple", | ||||
| 	material = minetest.digprop_stonelike(0.8), | ||||
| }) | ||||
| @@ -78,7 +77,7 @@ minetest.register_entity("jeija:movestone_entity", { | ||||
|  | ||||
| 	on_punch = function(self, hitter) | ||||
| 		self.object:remove() | ||||
| 		hitter:add_to_inventory('node jeija:movestone 1') | ||||
| 		hitter:get_inventory():add_item("main", "jeija:movestone") | ||||
| 	end, | ||||
|  | ||||
| 	on_step = function(self, dtime) | ||||
| @@ -131,11 +130,11 @@ minetest.register_entity("jeija:movestone_entity", { | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'node "jeija:movestone" 2', | ||||
| 	output = '"jeija:movestone" 2', | ||||
| 	recipe = { | ||||
| 		{'node "default:stone"', 'node "default:stone"', 'node "default:stone"'}, | ||||
| 		{'node "jeija:mesecon_off"', 'node "jeija:mesecon_off"', 'node "jeija:mesecon_off"'}, | ||||
| 		{'node "default:stone"', 'node "default:stone"', 'node "default:stone"'}, | ||||
| 		{'"default:stone"', '"default:stone"', '"default:stone"'}, | ||||
| 		{'"jeija:mesecon_off"', '"jeija:mesecon_off"', '"jeija:mesecon_off"'}, | ||||
| 		{'"default:stone"', '"default:stone"', '"default:stone"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| @@ -173,9 +172,9 @@ minetest.register_node("jeija:sticky_movestone", { | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'node "jeija:sticky_movestone" 2', | ||||
| 	output = '"jeija:sticky_movestone" 2', | ||||
| 	recipe = { | ||||
| 		{'craft "jeija:glue"', 'node "jeija:movestone"', 'craft "jeija:glue"'}, | ||||
| 		{'"jeija:glue"', '"jeija:movestone"', '"jeija:glue"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| @@ -188,7 +187,7 @@ minetest.register_entity("jeija:sticky_movestone_entity", { | ||||
|  | ||||
| 	on_punch = function(self, hitter) | ||||
| 		self.object:remove() | ||||
| 		hitter:add_to_inventory('node jeija:sticky_movestone 1') | ||||
| 		hitter:get_inventory():add_item("main", 'jeija:sticky_movestone') | ||||
| 	end, | ||||
|  | ||||
| 	on_step = function(self, dtime) | ||||
| @@ -252,11 +251,11 @@ minetest.register_entity("jeija:sticky_movestone_entity", { | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'node "jeija:sticky_movestone" 2', | ||||
| 	output = '"jeija:sticky_movestone" 2', | ||||
| 	recipe = { | ||||
| 		{'node "default:stone"', 'node "default:stone"', 'node "default:stone"'}, | ||||
| 		{'node "jeija:mesecon_off"', 'node "jeija:mesecon_off"', 'node "default:tree"'}, | ||||
| 		{'node "default:stone"', 'node "default:stone"', 'node "default:stone"'}, | ||||
| 		{'"default:stone"', '"default:stone"', '"default:stone"'}, | ||||
| 		{'"jeija:mesecon_off"', '"jeija:mesecon_off"', '"default:tree"'}, | ||||
| 		{'"default:stone"', '"default:stone"', '"default:stone"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
|   | ||||
| @@ -24,13 +24,13 @@ minetest.register_node("jeija:pressure_plate_wood_on", { | ||||
| 		type = "fixed", | ||||
| 	}, | ||||
| 	material = minetest.digprop_constanttime(0.3), | ||||
| 	dug_item='node "jeija:pressure_plate_wood_off" 1' | ||||
| 	drop='"jeija:pressure_plate_wood_off" 1' | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'node "jeija:pressure_plate_wood_off" 1', | ||||
| 	output = '"jeija:pressure_plate_wood_off" 1', | ||||
| 	recipe = { | ||||
| 		{'node "default:wood"', 'node "default:wood"'}, | ||||
| 		{'"default:wood"', '"default:wood"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| @@ -100,13 +100,13 @@ minetest.register_node("jeija:pressure_plate_stone_on", { | ||||
| 		type = "fixed", | ||||
| 	}, | ||||
| 	material = minetest.digprop_constanttime(0.3), | ||||
| 	dug_item='node "jeija:pressure_plate_stone_off" 1' | ||||
| 	drop='"jeija:pressure_plate_stone_off" 1' | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'node "jeija:pressure_plate_stone_off" 1', | ||||
| 	output = '"jeija:pressure_plate_stone_off" 1', | ||||
| 	recipe = { | ||||
| 		{'node "default:cobble"', 'node "default:cobble"'}, | ||||
| 		{'"default:cobble"', '"default:cobble"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| --MESECON TORCHES | ||||
|  | ||||
| minetest.register_craft({ | ||||
|     output = 'node "jeija:mesecon_torch_on" 4', | ||||
|     output = '"jeija:mesecon_torch_on" 4', | ||||
|     recipe = { | ||||
|         {'node "jeija:mesecon_off"'}, | ||||
|         {'"jeija:mesecon_off"'}, | ||||
|         {'craft "default:stick"'}, | ||||
|     } | ||||
| }) | ||||
| @@ -16,7 +16,7 @@ minetest.register_node("jeija:mesecon_torch_off", { | ||||
|     walkable = false, | ||||
|     wall_mounted = true, | ||||
|     material = minetest.digprop_constanttime(0.5), | ||||
|     dug_item = 'node "jeija:mesecon_torch_on" 1', | ||||
|     drop = '"jeija:mesecon_torch_on" 1', | ||||
| }) | ||||
|  | ||||
| minetest.register_node("jeija:mesecon_torch_on", { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user