diff --git a/mesecons/internal.lua b/mesecons/internal.lua index 96e407ecedaf3fc5abfd277083ad286b672add67..3f2ceb31437713ef24890143cd9c6290d52419a5 100644 --- a/mesecons/internal.lua +++ b/mesecons/internal.lua @@ -134,6 +134,7 @@ function mesecon:receptor_get_rules(node) return rules end end + return mesecon.rules.default end diff --git a/mesecons/wires.lua b/mesecons/wires.lua index 6c5f6efa17841787e8f886980550b74f60e3b521..d75312056b8917b68163e7bf89d39d212fd571eb 100644 --- a/mesecons/wires.lua +++ b/mesecons/wires.lua @@ -243,3 +243,9 @@ minetest.register_craft({ {'"default:mese"'}, } }) + +minetest.register_craft({ + type = "cooking", + output = '"mesecons:wire_00000000_off" 16', + recipe = "default:mese_crystal", +}) diff --git a/mesecons_extrawires/vertical.lua b/mesecons_extrawires/vertical.lua index 652205d2a4c8de243681fa2c4108e8d98c378efb..b21ccb7592ef855a5558bf3a64c45136c9078e5c 100644 --- a/mesecons_extrawires/vertical.lua +++ b/mesecons_extrawires/vertical.lua @@ -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 diff --git a/mesecons_pistons/init.lua b/mesecons_pistons/init.lua index 028eb5490f9074d59c499724386ae5505e962596..e5228d41b568e848e734f5295278f2c9948cb1ca 100644 --- a/mesecons_pistons/init.lua +++ b/mesecons_pistons/init.lua @@ -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 - end - if not placer then - return minetest.item_place(itemstack, placer, pointed_thing) + after_place_node = function(pos, placer) + if not placer then --not placed by player + return 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 + 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 - 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 - end - if not placer then - return minetest.item_place(itemstack, placer, pointed_thing) + after_place_node = function(pos, placer) + if not placer then --not placed by player + return 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 + 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 - return minetest.item_place(itemstack, placer, pointed_thing) --place piston normally end, mesecons = {effector={ action_change = update,