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