This commit is contained in:
FranchuFranchu 2023-09-24 15:52:23 +02:00 committed by GitHub
commit 5042b4d8c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 86 additions and 4 deletions

View File

@ -14,10 +14,11 @@ local bottom_box = {
type = "fixed",
fixed = {
{-8/16, -8/16, -8/16, 8/16, -7/16, 8/16},
{-1/16, -7/16, -1/16, 1/16, 8/16, 1/16},
{-1/16, -7/16, -1/16, 1/16, 8/16, 1/16}
}
}
local vertical_rules = {
{x=0, y=1, z=0},
{x=0, y=-1, z=0}
@ -40,10 +41,20 @@ local bottom_rules = {
{x=0, y=2, z=0} -- receive power from pressure plate / detector / ... 2 nodes above
}
local static_bottom_rules = { -- same as bottom rules, but also receives power from below
{x=1, y=0, z=0},
{x=-1, y=0, z=0},
{x=0, y=0, z=1},
{x=0, y=0, z=-1},
{x=0, y=1, z=0},
{x=0, y=-1, z=0},
{x=0, y=2, z=0} -- receive power from pressure plate / detector / ... 2 nodes above
}
local vertical_updatepos = function (pos)
local node = minetest.get_node(pos)
if minetest.registered_nodes[node.name]
and minetest.registered_nodes[node.name].is_vertical_conductor then
and (minetest.registered_nodes[node.name].is_vertical_conductor or minetest.registered_nodes[node.name].is_static_vertical_conductor) then
local node_above = minetest.get_node(vector.add(pos, vertical_rules[1]))
local node_below = minetest.get_node(vector.add(pos, vertical_rules[2]))
@ -65,8 +76,9 @@ local vertical_updatepos = function (pos)
else -- no vertical wire above, no vertical wire below: use bottom
newname = newname .. "bottom_off"
end
minetest.set_node(pos, {name = newname})
if not minetest.registered_nodes[node.name].is_static_vertical_conductor then
minetest.set_node(pos, {name = newname})
end
mesecon.on_placenode(pos, {name = newname})
end
end
@ -174,6 +186,76 @@ mesecon.register_node("mesecons_extrawires:vertical_bottom", {
}}
})
-- Static vertical wire bottom
mesecon.register_node("mesecons_extrawires:static_vertical_bottom", {
description = "Bottom-static vertical mesecon",
drawtype = "nodebox",
walkable = false,
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
groups = {dig_immediate = 3},
selection_box = bottom_box,
node_box = bottom_box,
is_static_vertical_conductor = true,
drop = "mesecons_extrawires:vertical_off",
after_place_node = vertical_update,
after_dig_node = vertical_update,
sounds = default.node_sound_defaults(),
},{
tiles = {"mesecons_wire_off.png"},
mesecons = {conductor = {
state = mesecon.state.off,
onstate = "mesecons_extrawires:static_vertical_bottom_on",
rules = static_bottom_rules,
}}
},{
tiles = {"mesecons_wire_on.png"},
groups = {dig_immediate = 3, not_in_creative_inventory = 1},
mesecons = {conductor = {
state = mesecon.state.on,
offstate = "mesecons_extrawires:static_vertical_bottom_off",
rules = static_bottom_rules,
}}
})
-- Static Vertical wire
mesecon.register_node("mesecons_extrawires:static_vertical", {
description = "Static Vertical Mesecon",
drawtype = "nodebox",
walkable = false,
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
selection_box = vertical_box,
node_box = vertical_box,
is_static_vertical_conductor = true,
drop = "mesecons_extrawires:static_vertical_off",
after_place_node = vertical_update,
after_dig_node = vertical_update,
sounds = default.node_sound_defaults(),
},{
tiles = {"mesecons_wire_off.png"},
groups = {dig_immediate=3},
mesecons = {conductor = {
state = mesecon.state.off,
onstate = "mesecons_extrawires:static_vertical_on",
rules = vertical_rules,
}}
},{
tiles = {"mesecons_wire_on.png"},
groups = {dig_immediate=3, not_in_creative_inventory=1},
mesecons = {conductor = {
state = mesecon.state.on,
offstate = "mesecons_extrawires:static_vertical_off",
rules = vertical_rules,
}}
})
-- Craftings
minetest.register_craft({
output = "mesecons_extrawires:vertical_off 3",
recipe = {