forked from Mirrorlandia_minetest/mesecons
Re-enable button + Wall lever, bugfix that adds a 'receiver' node (not yet designed)
This commit is contained in:
parent
863ef26b63
commit
3c2d0ba325
@ -1 +1,2 @@
|
||||
mesecons
|
||||
mesecons_receiver
|
||||
|
@ -24,7 +24,7 @@ minetest.register_node("mesecons_button:button_off", {
|
||||
{ -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself
|
||||
}
|
||||
},
|
||||
groups = {dig_immediate=2, mesecon = 3},
|
||||
groups = {dig_immediate=2, mesecon = 3, mesecon_needs_receiver = 1},
|
||||
description = "Button",
|
||||
})
|
||||
minetest.register_node("mesecons_button:button_on", {
|
||||
@ -53,7 +53,7 @@ minetest.register_node("mesecons_button:button_on", {
|
||||
{ -4/16, -2/16, 11/32, 4/16, 2/16, 6/16 }
|
||||
}
|
||||
},
|
||||
groups = {dig_immediate=2, not_in_creative_inventory=1, mesecon = 3},
|
||||
groups = {dig_immediate=2, not_in_creative_inventory=1, mesecon = 3, mesecon_needs_receiver = 1},
|
||||
drop = 'mesecons_button:button_off',
|
||||
description = "Button",
|
||||
})
|
||||
|
1
mesecons_receiver/depends.txt
Normal file
1
mesecons_receiver/depends.txt
Normal file
@ -0,0 +1 @@
|
||||
mesecons
|
117
mesecons_receiver/init.lua
Normal file
117
mesecons_receiver/init.lua
Normal file
@ -0,0 +1,117 @@
|
||||
minetest.register_node("mesecons_receiver:receiver_on", {
|
||||
tiles = {"default_wood.png"},
|
||||
groups = {dig_immediate = 3, mesecon = 3, not_in_creative_inventory = 1},
|
||||
drop = "mesecons:wire_00000000_off",
|
||||
})
|
||||
|
||||
minetest.register_node("mesecons_receiver:receiver_off", {
|
||||
description = "You hacker you",
|
||||
tiles = {"default_stone.png"},
|
||||
groups = {dig_immediate = 3, mesecon = 3},
|
||||
drop = "mesecons:wire_00000000_off",
|
||||
})
|
||||
|
||||
mesecon:add_rules("receiver_pos", {{x = 2, y = 0, z = 0}})
|
||||
|
||||
mesecon:add_rules("receiver_pos_all", {
|
||||
{x = 2, y = 0, z = 0},
|
||||
{x =-2, y = 0, z = 0},
|
||||
{x = 0, y = 0, z = 2},
|
||||
{x = 0, y = 0, z =-2}})
|
||||
|
||||
mesecon:add_rules("mesecon_receiver", {
|
||||
{x = 1, y = 0, z = 0},
|
||||
{x = -2, y = 0, z = 0},})
|
||||
|
||||
mesecon:add_rules("mesecon_receiver_all", {
|
||||
{x = 1, y = 0, z = 0},
|
||||
{x =-2, y = 0, z = 0},
|
||||
{x =-1, y = 0, z = 0},
|
||||
{x = 2, y = 0, z = 0},
|
||||
{x = 0, y = 0, z = 1},
|
||||
{x = 0, y = 0, z =-2},
|
||||
{x = 1, y = 0, z =-1},
|
||||
{x =-2, y = 0, z = 2},})
|
||||
|
||||
function receiver_get_rules(param2)
|
||||
local rules = mesecon:get_rules("mesecon_receiver")
|
||||
if param2 == 2 then
|
||||
rules = mesecon:rotate_rules_left(rules)
|
||||
elseif param2 == 3 then
|
||||
rules = mesecon:rotate_rules_right(mesecon:rotate_rules_right(rules))
|
||||
elseif param2 == 0 then
|
||||
rules = mesecon:rotate_rules_right(rules)
|
||||
end
|
||||
return rules
|
||||
end
|
||||
|
||||
mesecon:register_conductor("mesecons_receiver:receiver_on", "mesecons_receiver:receiver_off", mesecon:get_rules("mesecon_receiver_all"), receiver_get_rules)
|
||||
|
||||
function mesecon:receiver_get_pos_from_rcpt(pos)
|
||||
node = minetest.env:get_node(pos)
|
||||
local rules = mesecon:get_rules("receiver_pos")
|
||||
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
|
||||
np = {
|
||||
x = pos.x + rules[1].x,
|
||||
y = pos.y + rules[1].y,
|
||||
z = pos.z + rules[1].z}
|
||||
return np
|
||||
end
|
||||
|
||||
function mesecon:receiver_place(rcpt_pos)
|
||||
local node = minetest.env:get_node(rcpt_pos)
|
||||
pos = mesecon:receiver_get_pos_from_rcpt(rcpt_pos, node.param2)
|
||||
nn = minetest.env:get_node(pos)
|
||||
|
||||
if string.find(nn.name, "mesecons:wire_") ~= nil then
|
||||
minetest.env:dig_node(pos)
|
||||
minetest.env:add_node(pos, {name = "mesecons_receiver:receiver_off", param2 = node.param2})
|
||||
mesecon:update_autoconnect(pos)
|
||||
end
|
||||
end
|
||||
|
||||
function mesecon:receiver_remove(rcpt_pos)
|
||||
pos = mesecon:receiver_get_pos_from_rcpt(rcpt_pos)
|
||||
node = minetest.env:get_node(pos)
|
||||
|
||||
if string.find(node.name, "mesecons_receiver:receiver_") ~=nil then
|
||||
minetest.env:dig_node(pos)
|
||||
minetest.env:place_node(pos, {name = "mesecons:wire_00000000_off"})
|
||||
mesecon:update_autoconnect(pos)
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_on_placenode(function (pos, node)
|
||||
if minetest.get_item_group(node.name, "mesecon_needs_receiver") == 1 then
|
||||
mesecon:receiver_place(pos)
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_on_dignode(function(pos, node)
|
||||
if minetest.get_item_group(node.name, "mesecon_needs_receiver") == 1 then
|
||||
mesecon:receiver_remove(pos)
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_on_placenode(function (pos, node)
|
||||
if string.find(node.name, "mesecons:wire_") ~=nil then
|
||||
rules = mesecon:get_rules("receiver_pos_all")
|
||||
local i = 1
|
||||
while rules[i] ~= nil do
|
||||
np = {
|
||||
x = pos.x + rules[i].x,
|
||||
y = pos.y + rules[i].y,
|
||||
z = pos.z + rules[i].z}
|
||||
if minetest.get_item_group(minetest.env:get_node(np).name, "mesecon_needs_receiver") == 1 then
|
||||
mesecon:receiver_place(np)
|
||||
end
|
||||
i = i + 1
|
||||
end
|
||||
end
|
||||
end)
|
@ -1,2 +1,2 @@
|
||||
mesecons
|
||||
mesecons_button
|
||||
mesecons_receiver
|
||||
|
@ -26,8 +26,11 @@ 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},
|
||||
groups = {dig_immediate=2, mesecon = 3, mesecon_needs_receiver = 1},
|
||||
description="Lever",
|
||||
after_place_node = function(pos, placer)
|
||||
|
||||
end,
|
||||
})
|
||||
minetest.register_node("mesecons_walllever:wall_lever_on", {
|
||||
drawtype = "nodebox",
|
||||
@ -56,7 +59,7 @@ minetest.register_node("mesecons_walllever:wall_lever_on", {
|
||||
{ -2/16, -1/16, 3/16, 2/16, 1/16, 4/16 }, -- the lever "hinge"
|
||||
{ -1/16, 0, 4/16, 1/16, 8/16, 6/16 }} -- the lever itself.
|
||||
},
|
||||
groups = {dig_immediate=2,not_in_creative_inventory=1, mesecon = 3},
|
||||
groups = {dig_immediate=2,not_in_creative_inventory=1, mesecon = 3, mesecon_needs_receiver = 1},
|
||||
drop = '"mesecons_walllever:wall_lever_off" 1',
|
||||
description="Lever",
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user