mirror of
https://github.com/minetest-mods/mesecons.git
synced 2024-12-25 01:40:18 +01:00
Merge branch 'master' into nextgen
Conflicts: mesecons/internal.lua mesecons/wires.lua mesecons_pistons/init.lua
This commit is contained in:
commit
23bebfc054
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user