forked from minetest-mods/mesecons
		
	Merge branch 'master' into nextgen
Conflicts: mesecons/internal.lua mesecons/wires.lua mesecons_pistons/init.lua
This commit is contained in:
		| @@ -134,6 +134,7 @@ function mesecon:receptor_get_rules(node) | ||||
| 			return rules | ||||
| 		end | ||||
| 	end | ||||
|  | ||||
| 	return mesecon.rules.default | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -243,3 +243,9 @@ minetest.register_craft({ | ||||
| 		{'"default:mese"'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "cooking", | ||||
| 	output = '"mesecons:wire_00000000_off" 16', | ||||
| 	recipe = "default:mese_crystal", | ||||
| }) | ||||
|   | ||||
| @@ -35,8 +35,8 @@ local brules = | ||||
| 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 node_above = minetest.env:get_node(mesecon:addPosRule(pos, vrules[1])) | ||||
| 		local node_below = minetest.env:get_node(mesecon:addPosRule(pos, vrules[2])) | ||||
| 		local namestate = minetest.registered_nodes[node.name].vertical_conductor_state | ||||
|  | ||||
| 		-- above and below: vertical mesecon | ||||
| @@ -64,10 +64,9 @@ local vertical_updatepos = function (pos) | ||||
| 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 | ||||
| 	vertical_updatepos(mesecon:addPosRule(pos, vrules[1])) -- above | ||||
| 	vertical_updatepos(mesecon:addPosRule(pos, vrules[2])) -- below | ||||
| end | ||||
|  | ||||
| -- Vertical wire | ||||
|   | ||||
| @@ -192,28 +192,16 @@ minetest.register_node("mesecons_pistons:piston_normal", { | ||||
| 	paramtype2 = "facedir", | ||||
| 	after_destruct = destruct, | ||||
| 	on_timer = timer, | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 		if pointed_thing.type ~= "node" then --can be placed only on nodes | ||||
| 			return itemstack | ||||
| 	after_place_node = function(pos, placer) | ||||
| 		if not placer then --not placed by player | ||||
| 			return | ||||
| 		end | ||||
| 		if not placer then | ||||
| 			return minetest.item_place(itemstack, placer, pointed_thing) | ||||
| 		local pitch = placer:get_look_pitch() * (180 / math.pi) --placer pitch in degrees | ||||
| 		if pitch > 45 then --looking upwards | ||||
| 			minetest.env:add_node(pos, {name="mesecons_pistons:piston_down_normal"}) | ||||
| 		elseif pitch < -45 then --looking downwards | ||||
| 			minetest.env:add_node(pos, {name="mesecons_pistons:piston_up_normal"}) | ||||
| 		end | ||||
| 		local dir = placer:get_look_dir() | ||||
| 		if math.abs(dir.y) > math.sqrt(dir.x ^ 2 + dir.z ^ 2) then --vertical look direction is most significant | ||||
| 			local fakestack | ||||
| 			if dir.y > 0 then | ||||
| 				fakestack = ItemStack("mesecons_pistons:piston_down_normal") | ||||
| 			else | ||||
| 				fakestack = ItemStack("mesecons_pistons:piston_up_normal") | ||||
| 			end | ||||
| 			local ret = minetest.item_place(fakestack, placer, pointed_thing) | ||||
| 			if ret:is_empty() then | ||||
| 				itemstack:take_item() | ||||
| 				return itemstack | ||||
| 			end | ||||
| 		end | ||||
| 		return minetest.item_place(itemstack, placer, pointed_thing) --place piston normally | ||||
| 	end, | ||||
| 	mesecons = {effector={ | ||||
| 		action_change = update, | ||||
| @@ -228,29 +216,16 @@ minetest.register_node("mesecons_pistons:piston_sticky", { | ||||
| 	paramtype2 = "facedir", | ||||
| 	after_destruct = destruct, | ||||
| 	on_timer = timer, | ||||
| 	is_sticky_piston = true, | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 		if pointed_thing.type ~= "node" then --can be placed only on nodes | ||||
| 			return itemstack | ||||
| 	after_place_node = function(pos, placer) | ||||
| 		if not placer then --not placed by player | ||||
| 			return | ||||
| 		end | ||||
| 		if not placer then | ||||
| 			return minetest.item_place(itemstack, placer, pointed_thing) | ||||
| 		local pitch = placer:get_look_pitch() * (180 / math.pi) --placer pitch in degrees | ||||
| 		if pitch > 45 then --looking upwards | ||||
| 			minetest.env:add_node(pos, {name="mesecons_pistons:piston_down_sticky"}) | ||||
| 		elseif pitch < -45 then --looking downwards | ||||
| 			minetest.env:add_node(pos, {name="mesecons_pistons:piston_up_sticky"}) | ||||
| 		end | ||||
| 		local dir = placer:get_look_dir() | ||||
| 		if math.abs(dir.y) > math.sqrt(dir.x ^ 2 + dir.z ^ 2) then --vertical look direction is most significant | ||||
| 			local fakestack | ||||
| 			if dir.y > 0 then | ||||
| 				fakestack = ItemStack("mesecons_pistons:piston_down_sticky") | ||||
| 			else | ||||
| 				fakestack = ItemStack("mesecons_pistons:piston_up_sticky") | ||||
| 			end | ||||
| 			local ret = minetest.item_place(fakestack, placer, pointed_thing) | ||||
| 			if ret:is_empty() then | ||||
| 				itemstack:take_item() | ||||
| 				return itemstack | ||||
| 			end | ||||
| 		end | ||||
| 		return minetest.item_place(itemstack, placer, pointed_thing) --place piston normally | ||||
| 	end, | ||||
| 	mesecons = {effector={ | ||||
| 		action_change = update, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user