forked from minetest-mods/mesecons
Port a lot more (basically everything apart from gates, pistons and extrawire crossing) to the new nodedef system. There are some problems with wall button and wall lever (in the way they visually connect to wires)
This commit is contained in:
@ -1,4 +1,22 @@
|
||||
-- WALL LEVER
|
||||
local walllever_get_rules = function(node)
|
||||
local rules = {
|
||||
{x = 1, y = 0, z = 0},
|
||||
{x = 1, y = 1, z = 0},
|
||||
{x = 1, y =-1, z = 0},
|
||||
{x = 1, y =-1, z = 1},
|
||||
{x = 1, y =-1, z =-1},
|
||||
{x = 2, y = 0, z = 0}}
|
||||
if node.param2 == 2 then
|
||||
rules=mesecon:rotate_rules_left(rules)
|
||||
elseif node.param2 == 3 then
|
||||
rules=mesecon:rotate_rules_right(mesecon:rotate_rules_right(rules))
|
||||
elseif node.param2 == 0 then
|
||||
rules=mesecon:rotate_rules_right(rules)
|
||||
end
|
||||
return rules
|
||||
end
|
||||
|
||||
minetest.register_node("mesecons_walllever:wall_lever_off", {
|
||||
drawtype = "nodebox",
|
||||
tiles = {
|
||||
@ -27,8 +45,16 @@ minetest.register_node("mesecons_walllever:wall_lever_off", {
|
||||
{ -2/16, -1/16, 3/16, 2/16, 1/16, 4/16 }, -- the lever "hinge"
|
||||
{ -1/16, -8/16, 4/16, 1/16, 0, 6/16 }} -- the lever itself.
|
||||
},
|
||||
groups = {dig_immediate=2, mesecon = 3, mesecon_needs_receiver = 1},
|
||||
groups = {dig_immediate=2, mesecon_needs_receiver = 1},
|
||||
description="Lever",
|
||||
on_punch = function (pos, node)
|
||||
mesecon:swap_node(pos, "mesecons_walllever:wall_lever_on")
|
||||
mesecon:receptor_on(pos, walllever_get_rules(node))
|
||||
end,
|
||||
mesecon = {receptor = {
|
||||
rules = walllever_get_rules,
|
||||
state = mesecon.state.off
|
||||
}}
|
||||
})
|
||||
minetest.register_node("mesecons_walllever:wall_lever_on", {
|
||||
drawtype = "nodebox",
|
||||
@ -61,19 +87,16 @@ minetest.register_node("mesecons_walllever:wall_lever_on", {
|
||||
groups = {dig_immediate=2,not_in_creative_inventory=1, mesecon = 3, mesecon_needs_receiver = 1},
|
||||
drop = '"mesecons_walllever:wall_lever_off" 1',
|
||||
description="Lever",
|
||||
on_punch = function (pos, node)
|
||||
mesecon:swap_node(pos, "mesecons_walllever:wall_lever_off")
|
||||
mesecon:receptor_off(pos, walllever_get_rules(node))
|
||||
end,
|
||||
mesecon = {receptor = {
|
||||
rules = walllever_get_rules,
|
||||
state = mesecon.state.on
|
||||
}}
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(pos, node, puncher)
|
||||
if node.name == "mesecons_walllever:wall_lever_off" then
|
||||
minetest.env:add_node(pos, {name="mesecons_walllever:wall_lever_on",param2=node.param2})
|
||||
mesecon:receptor_on(pos, mesecon.walllever_get_rules(node.param2))
|
||||
end
|
||||
if node.name == "mesecons_walllever:wall_lever_on" then
|
||||
minetest.env:add_node(pos, {name="mesecons_walllever:wall_lever_off",param2=node.param2})
|
||||
mesecon:receptor_off(pos, mesecon.walllever_get_rules(node.param2))
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_craft({
|
||||
output = '"mesecons_walllever:wall_lever_off" 2',
|
||||
recipe = {
|
||||
@ -82,29 +105,3 @@ minetest.register_craft({
|
||||
{'"default:stick"'},
|
||||
}
|
||||
})
|
||||
|
||||
mesecon:add_rules("walllever", {
|
||||
{x = 1, y = 0, z = 0},
|
||||
{x = 1, y = 1, z = 0},
|
||||
{x = 1, y =-1, z = 0},
|
||||
{x = 1, y =-1, z = 1},
|
||||
{x = 1, y =-1, z =-1},
|
||||
{x = 2, y = 0, z = 0},})
|
||||
|
||||
|
||||
mesecon.walllever_get_rules = function(param2)
|
||||
local rules=mesecon:get_rules("walllever")
|
||||
if param2 == 2 then
|
||||
rules=mesecon:rotate_rules_left(rules)
|
||||
end
|
||||
if param2 == 3 then
|
||||
rules=mesecon:rotate_rules_right(mesecon:rotate_rules_right(rules))
|
||||
end
|
||||
if param2 == 0 then
|
||||
rules=mesecon:rotate_rules_right(rules)
|
||||
end
|
||||
return rules
|
||||
end
|
||||
|
||||
mesecon:add_receptor_node("mesecons_walllever:wall_lever_on", nil, mesecon.walllever_get_rules)
|
||||
mesecon:add_receptor_node_off("mesecons_walllever:wall_lever_off", nil, mesecon.walllever_get_rules)
|
||||
|
Reference in New Issue
Block a user