Merge branch 'master' into nextgen

Conflicts:
	mesecons/internal.lua
	mesecons/wires.lua
	mesecons_pistons/init.lua
This commit is contained in:
Jeija 2012-12-21 16:22:25 +01:00
commit 23bebfc054
4 changed files with 27 additions and 46 deletions

@ -134,6 +134,7 @@ function mesecon:receptor_get_rules(node)
return rules return rules
end end
end end
return mesecon.rules.default return mesecon.rules.default
end end

@ -243,3 +243,9 @@ minetest.register_craft({
{'"default:mese"'}, {'"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 vertical_updatepos = function (pos)
local node = minetest.env:get_node(pos) local node = minetest.env:get_node(pos)
if minetest.registered_nodes[node.name].is_vertical_conductor then if minetest.registered_nodes[node.name].is_vertical_conductor then
local node_above = minetest.env:get_node(addPosRule(pos, vrules[1])) local node_above = minetest.env:get_node(mesecon:addPosRule(pos, vrules[1]))
local node_below = minetest.env:get_node(addPosRule(pos, vrules[2])) local node_below = minetest.env:get_node(mesecon:addPosRule(pos, vrules[2]))
local namestate = minetest.registered_nodes[node.name].vertical_conductor_state local namestate = minetest.registered_nodes[node.name].vertical_conductor_state
-- above and below: vertical mesecon -- above and below: vertical mesecon
@ -64,10 +64,9 @@ local vertical_updatepos = function (pos)
end end
local vertical_update = function (pos, node) local vertical_update = function (pos, node)
print("update")
vertical_updatepos(pos) -- this one vertical_updatepos(pos) -- this one
vertical_updatepos(addPosRule(pos, vrules[1])) -- above vertical_updatepos(mesecon:addPosRule(pos, vrules[1])) -- above
vertical_updatepos(addPosRule(pos, vrules[2])) -- below vertical_updatepos(mesecon:addPosRule(pos, vrules[2])) -- below
end end
-- Vertical wire -- Vertical wire

@ -192,28 +192,16 @@ minetest.register_node("mesecons_pistons:piston_normal", {
paramtype2 = "facedir", paramtype2 = "facedir",
after_destruct = destruct, after_destruct = destruct,
on_timer = timer, on_timer = timer,
on_place = function(itemstack, placer, pointed_thing) after_place_node = function(pos, placer)
if pointed_thing.type ~= "node" then --can be placed only on nodes if not placer then --not placed by player
return itemstack return
end end
if not placer then local pitch = placer:get_look_pitch() * (180 / math.pi) --placer pitch in degrees
return minetest.item_place(itemstack, placer, pointed_thing) 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 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, end,
mesecons = {effector={ mesecons = {effector={
action_change = update, action_change = update,
@ -228,29 +216,16 @@ minetest.register_node("mesecons_pistons:piston_sticky", {
paramtype2 = "facedir", paramtype2 = "facedir",
after_destruct = destruct, after_destruct = destruct,
on_timer = timer, on_timer = timer,
is_sticky_piston = true, after_place_node = function(pos, placer)
on_place = function(itemstack, placer, pointed_thing) if not placer then --not placed by player
if pointed_thing.type ~= "node" then --can be placed only on nodes return
return itemstack
end end
if not placer then local pitch = placer:get_look_pitch() * (180 / math.pi) --placer pitch in degrees
return minetest.item_place(itemstack, placer, pointed_thing) 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 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, end,
mesecons = {effector={ mesecons = {effector={
action_change = update, action_change = update,