mirror of
https://github.com/minetest-mods/mesecons.git
synced 2025-07-13 04:30:21 +02:00
Compare commits
13 Commits
detector_b
...
ec3218d6d9
Author | SHA1 | Date | |
---|---|---|---|
ec3218d6d9 | |||
4ecc694518 | |||
3dd0eb7e4f | |||
e4d7c07962 | |||
69a4b6b332 | |||
e38e4fe0c5 | |||
5ad1e6bc4d | |||
b91fe92d13 | |||
6a87290ead | |||
1963bfcc0d | |||
6936c8c2e4 | |||
2fc1682c04 | |||
9b835053c2 |
@ -51,18 +51,27 @@ mesecon.fifo_queue = dofile(minetest.get_modpath("mesecons").."/fifo_queue.lua")
|
||||
|
||||
-- General
|
||||
function mesecon.get_effector(nodename)
|
||||
local def = minetest.registered_nodes[nodename]
|
||||
return def and def.mesecons and def.mesecons.effector
|
||||
if minetest.registered_nodes[nodename]
|
||||
and minetest.registered_nodes[nodename].mesecons
|
||||
and minetest.registered_nodes[nodename].mesecons.effector then
|
||||
return minetest.registered_nodes[nodename].mesecons.effector
|
||||
end
|
||||
end
|
||||
|
||||
function mesecon.get_receptor(nodename)
|
||||
local def = minetest.registered_nodes[nodename]
|
||||
return def and def.mesecons and def.mesecons.receptor
|
||||
if minetest.registered_nodes[nodename]
|
||||
and minetest.registered_nodes[nodename].mesecons
|
||||
and minetest.registered_nodes[nodename].mesecons.receptor then
|
||||
return minetest.registered_nodes[nodename].mesecons.receptor
|
||||
end
|
||||
end
|
||||
|
||||
function mesecon.get_conductor(nodename)
|
||||
local def = minetest.registered_nodes[nodename]
|
||||
return def and def.mesecons and def.mesecons.conductor
|
||||
if minetest.registered_nodes[nodename]
|
||||
and minetest.registered_nodes[nodename].mesecons
|
||||
and minetest.registered_nodes[nodename].mesecons.conductor then
|
||||
return minetest.registered_nodes[nodename].mesecons.conductor
|
||||
end
|
||||
end
|
||||
|
||||
function mesecon.get_any_outputrules(node)
|
||||
|
@ -1,3 +0,0 @@
|
||||
# textdomain: mesecons
|
||||
|
||||
Mesecons=Mesecons
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_blinkyplant
|
||||
Blinky Plant=Blinkpflanze
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_button
|
||||
Button=Taster
|
@ -1,5 +0,0 @@
|
||||
# textdomain: mesecons_commandblock
|
||||
Say <text> as the server=<Text> als Server sagen
|
||||
Say <text> to <name> privately=<Text> an <Name> privat senden
|
||||
Set health of <name> to <value> hitpoints=Gesundheit von <Name> auf <Wert> Trefferpunkte setzen
|
||||
Command Block=Befehlsblock
|
@ -62,8 +62,6 @@ local def = {
|
||||
sounds = mesecon.node_sound.stone,
|
||||
on_blast = mesecon.on_blastnode,
|
||||
drop = "mesecons_delayer:delayer_off_1",
|
||||
delayer_onstate = "mesecons_delayer:delayer_on_"..tostring(i),
|
||||
delayer_offstate = "mesecons_delayer:delayer_off_"..tostring(i),
|
||||
}
|
||||
|
||||
-- Deactivated delayer definition defaults
|
||||
@ -95,6 +93,7 @@ local off_state = {
|
||||
param2 = node.param2
|
||||
})
|
||||
end,
|
||||
delayer_onstate = "mesecons_delayer:delayer_on_"..tostring(i),
|
||||
mesecons = {
|
||||
receptor =
|
||||
{
|
||||
@ -104,7 +103,6 @@ local off_state = {
|
||||
effector =
|
||||
{
|
||||
rules = delayer_get_input_rules,
|
||||
action_off = delayer_deactivate,
|
||||
action_on = delayer_activate
|
||||
}
|
||||
},
|
||||
@ -136,6 +134,7 @@ local on_state = {
|
||||
param2 = node.param2
|
||||
})
|
||||
end,
|
||||
delayer_offstate = "mesecons_delayer:delayer_off_"..tostring(i),
|
||||
mesecons = {
|
||||
receptor =
|
||||
{
|
||||
@ -145,8 +144,7 @@ local on_state = {
|
||||
effector =
|
||||
{
|
||||
rules = delayer_get_input_rules,
|
||||
action_off = delayer_deactivate,
|
||||
action_on = delayer_activate
|
||||
action_off = delayer_deactivate
|
||||
}
|
||||
},
|
||||
}
|
||||
|
@ -1,3 +0,0 @@
|
||||
# textdomain: mesecons_delayer
|
||||
Delayer=Verzögerer
|
||||
You hacker you=Du Hacker, Du
|
@ -4,16 +4,6 @@ local side_texture = mesecon.texture.steel_block or "mesecons_detector_side.png"
|
||||
|
||||
local GET_COMMAND = "GET"
|
||||
|
||||
|
||||
local function comma_list_to_table(comma_list)
|
||||
local tbl = {}
|
||||
for _, str in ipairs(string.split(comma_list:gsub("%s", ""), ",")) do
|
||||
tbl[str] = true
|
||||
end
|
||||
return tbl
|
||||
end
|
||||
|
||||
|
||||
-- Object detector
|
||||
-- Detects players in a certain radius
|
||||
-- The radius can be specified in mesecons/settings.lua
|
||||
@ -45,7 +35,10 @@ local function object_detector_scan(pos)
|
||||
if next(objs) == nil then return false end
|
||||
|
||||
local scanname = minetest.get_meta(pos):get_string("scanname")
|
||||
local scan_for = comma_list_to_table(scanname)
|
||||
local scan_for = {}
|
||||
for _, str in pairs(string.split(scanname:gsub(" ", ""), ",")) do
|
||||
scan_for[str] = true
|
||||
end
|
||||
|
||||
local every_player = scanname == ""
|
||||
for _, obj in pairs(objs) do
|
||||
@ -157,23 +150,6 @@ minetest.register_abm({
|
||||
-- Node detector
|
||||
-- Detects the node in front of it
|
||||
|
||||
local blacklist = {
|
||||
air = true,
|
||||
ignore = true,
|
||||
}
|
||||
|
||||
function mesecon.node_detector_blacklist_add(node)
|
||||
blacklist[node] = true
|
||||
end
|
||||
|
||||
function mesecon.node_detector_blacklist_remove(node)
|
||||
blacklist[node] = nil
|
||||
end
|
||||
|
||||
function mesecon.node_detector_on_blacklist(node)
|
||||
return blacklist[node] == true
|
||||
end
|
||||
|
||||
local function node_detector_make_formspec(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if meta:get_string("distance") == "" then meta:set_string("distance", "0") end
|
||||
@ -212,10 +188,9 @@ local function node_detector_scan(pos)
|
||||
vector.subtract(pos, vector.multiply(minetest.facedir_to_dir(node.param2), distance + 1))
|
||||
).name
|
||||
local scanname = meta:get_string("scanname")
|
||||
local scan_for = comma_list_to_table(scanname)
|
||||
|
||||
return (scan_for[frontname]) or
|
||||
(blacklist[frontname] ~= true and scanname == "")
|
||||
return (frontname == scanname) or
|
||||
(frontname ~= "air" and frontname ~= "ignore" and scanname == "")
|
||||
end
|
||||
|
||||
local function node_detector_send_node_name(pos, node, channel, meta)
|
||||
|
@ -1,3 +0,0 @@
|
||||
# textdomain: mesecons_detector
|
||||
Player Detector=Spielerdetektor
|
||||
Node Detector=Blockdetektor
|
@ -1,8 +0,0 @@
|
||||
# textdomain: mesecons_extrawires
|
||||
Insulated Mesecon Corner=Isolierte Meseconecke
|
||||
Insulated Mesecon Crossover=Isolierter Meseconübergang
|
||||
You hacker you!=Sie Hacker!
|
||||
Insulated Mesecon Double Corner=Isolierte Mesecondoppelecke
|
||||
Mese Wire=Mesedraht
|
||||
Insulated Mesecon T-junction=Isolierte Mesecongabelung
|
||||
Vertical Mesecon=Vertikaler Mesecon
|
@ -40,39 +40,35 @@ local bottom_rules = {
|
||||
{x=0, y=2, z=0} -- receive power from pressure plate / detector / ... 2 nodes above
|
||||
}
|
||||
|
||||
local function is_vertical_conductor(nodename)
|
||||
local def = minetest.registered_nodes[nodename]
|
||||
return def and def.is_vertical_conductor
|
||||
end
|
||||
|
||||
local vertical_updatepos = function (pos)
|
||||
local node = minetest.get_node(pos)
|
||||
if not is_vertical_conductor(node.name) then
|
||||
return
|
||||
if minetest.registered_nodes[node.name]
|
||||
and minetest.registered_nodes[node.name].is_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]))
|
||||
|
||||
local above = minetest.registered_nodes[node_above.name]
|
||||
and minetest.registered_nodes[node_above.name].is_vertical_conductor
|
||||
local below = minetest.registered_nodes[node_below.name]
|
||||
and minetest.registered_nodes[node_below.name].is_vertical_conductor
|
||||
|
||||
mesecon.on_dignode(pos, node)
|
||||
|
||||
-- Always place offstate conductor and let mesecon.on_placenode take care
|
||||
local newname = "mesecons_extrawires:vertical_"
|
||||
if above and below then -- above and below: vertical mesecon
|
||||
newname = newname .. "off"
|
||||
elseif above and not below then -- above only: bottom
|
||||
newname = newname .. "bottom_off"
|
||||
elseif not above and below then -- below only: top
|
||||
newname = newname .. "top_off"
|
||||
else -- no vertical wire above, no vertical wire below: use bottom
|
||||
newname = newname .. "bottom_off"
|
||||
end
|
||||
|
||||
minetest.set_node(pos, {name = newname})
|
||||
mesecon.on_placenode(pos, {name = newname})
|
||||
end
|
||||
|
||||
local node_above = minetest.get_node(vector.add(pos, vertical_rules[1]))
|
||||
local node_below = minetest.get_node(vector.add(pos, vertical_rules[2]))
|
||||
|
||||
local above = is_vertical_conductor(node_above.name)
|
||||
local below = is_vertical_conductor(node_below.name)
|
||||
|
||||
mesecon.on_dignode(pos, node)
|
||||
|
||||
-- Always place offstate conductor and let mesecon.on_placenode take care
|
||||
local newname = "mesecons_extrawires:vertical_"
|
||||
if above and below then -- above and below: vertical mesecon
|
||||
newname = newname .. "off"
|
||||
elseif above and not below then -- above only: bottom
|
||||
newname = newname .. "bottom_off"
|
||||
elseif not above and below then -- below only: top
|
||||
newname = newname .. "top_off"
|
||||
else -- no vertical wire above, no vertical wire below: use bottom
|
||||
newname = newname .. "bottom_off"
|
||||
end
|
||||
|
||||
minetest.set_node(pos, {name = newname})
|
||||
mesecon.on_placenode(pos, {name = newname})
|
||||
end
|
||||
|
||||
local vertical_update = function (pos)
|
||||
|
@ -1,3 +0,0 @@
|
||||
# textdomain: mesecons_fpga
|
||||
FPGA=FPGA
|
||||
FPGA Programmer=FPGA-Programmierer
|
@ -59,10 +59,6 @@ if minetest.get_modpath("mesecons_mvps") then
|
||||
"doors:hidden",
|
||||
"doors:trapdoor_steel",
|
||||
"doors:trapdoor_steel_open",
|
||||
"beds:bed_bottom",
|
||||
"beds:bed_top",
|
||||
"beds:fancy_bed_bottom",
|
||||
"beds:fancy_bed_top",
|
||||
"xpanes:door_steel_bar_a",
|
||||
"xpanes:door_steel_bar_b",
|
||||
"xpanes:door_steel_bar_c",
|
||||
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_hydroturbine
|
||||
Water Turbine=Wasserturbine
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_insulated
|
||||
Straight Insulated Mesecon=Isolierte Mesecongerade
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_lamp
|
||||
Mesecon Lamp=Meseconlampe
|
@ -1,13 +0,0 @@
|
||||
# textdomain: mesecons_lightstone
|
||||
Red Lightstone=Roter Leuchtstein
|
||||
Green Lightstone=Grüner Leuchtstein
|
||||
Blue Lightstone=Blauer Leuchtstein
|
||||
Grey Lightstone=Grauer Leuchtstein
|
||||
Dark Grey Lightstone=Dunkelgrauer Leuchtstein
|
||||
Yellow Lightstone=Gelber Leuchtstein
|
||||
Orange Lightstone=Orange Leuchtstein
|
||||
White Lightstone=Weißer Leuchtstein
|
||||
Pink Lightstone=Rosa Leuchtstein
|
||||
Magenta Lightstone=Magenta Leuchtstein
|
||||
Cyan Lightstone=Türkiser Leuchtstein
|
||||
Violet Lightstone=Violetter Leuchtstein
|
@ -238,16 +238,6 @@ local function safe_string_find(...)
|
||||
return string.find(...)
|
||||
end
|
||||
|
||||
-- do not allow pattern matching in string.split (see string.find for details)
|
||||
local function safe_string_split(...)
|
||||
if select(5, ...) then
|
||||
debug.sethook() -- Clear hook
|
||||
error("string.split: 'sep_is_pattern' (fifth parameter) may not be used in a Luacontroller")
|
||||
end
|
||||
|
||||
return string.split(...)
|
||||
end
|
||||
|
||||
local function remove_functions(x)
|
||||
local tp = type(x)
|
||||
if tp == "function" then
|
||||
@ -388,10 +378,7 @@ local function clean_and_weigh_digiline_message(msg, back_references)
|
||||
return msg, #msg + 25
|
||||
elseif t == "number" then
|
||||
-- Numbers are passed by value so need not be touched, and cost 8 bytes
|
||||
-- as all numbers in Lua are doubles. NaN values are removed.
|
||||
if msg ~= msg then
|
||||
return nil, 0
|
||||
end
|
||||
-- as all numbers in Lua are doubles.
|
||||
return msg, 8
|
||||
elseif t == "boolean" then
|
||||
-- Booleans are passed by value so need not be touched, and cost 1
|
||||
@ -520,7 +507,6 @@ local function create_environment(pos, mem, event, itbl, send_warning)
|
||||
reverse = string.reverse,
|
||||
sub = string.sub,
|
||||
find = safe_string_find,
|
||||
split = safe_string_split,
|
||||
},
|
||||
math = {
|
||||
abs = math.abs,
|
||||
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_luacontroller
|
||||
Luacontroller=Luacontroller
|
@ -1,4 +0,0 @@
|
||||
# textdomain: mesecons_materials
|
||||
Glue=Klebstoff
|
||||
Fiber=Faser
|
||||
Silicon=Silizium
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_microcontroller
|
||||
Microcontroller=Mikrocontroller
|
@ -1,5 +0,0 @@
|
||||
# textdomain: mesecons_movestones
|
||||
Movestone=Laufstein
|
||||
Sticky Movestone=Klebriger Laufstein
|
||||
Vertical Movestone=Vertikaler Laufstein
|
||||
Vertical Sticky Movestone=Vertikaler klebriger Laufstein
|
@ -53,16 +53,11 @@ end
|
||||
|
||||
-- tests if the node can be pushed into, e.g. air, water, grass
|
||||
local function node_replaceable(name)
|
||||
local nodedef = minetest.registered_nodes[name]
|
||||
|
||||
-- everything that can be an mvps stopper (unknown nodes and nodes in the
|
||||
-- mvps_stoppers table) must not be replacable
|
||||
-- Note: ignore (a stopper) is buildable_to, but we do not want to push into it
|
||||
if not nodedef or mesecon.mvps_stoppers[name] then
|
||||
return false
|
||||
if minetest.registered_nodes[name] then
|
||||
return minetest.registered_nodes[name].buildable_to or false
|
||||
end
|
||||
|
||||
return nodedef.buildable_to or false
|
||||
return false
|
||||
end
|
||||
|
||||
function mesecon.mvps_get_stack(pos, dir, maximum, all_pull_sticky)
|
||||
@ -81,9 +76,9 @@ function mesecon.mvps_get_stack(pos, dir, maximum, all_pull_sticky)
|
||||
if #nodes > maximum then return nil end
|
||||
|
||||
-- add connected nodes to frontiers
|
||||
local nndef = minetest.registered_nodes[nn.name]
|
||||
if nndef and nndef.mvps_sticky then
|
||||
local connected = nndef.mvps_sticky(np, nn)
|
||||
if minetest.registered_nodes[nn.name]
|
||||
and minetest.registered_nodes[nn.name].mvps_sticky then
|
||||
local connected = minetest.registered_nodes[nn.name].mvps_sticky(np, nn)
|
||||
for _, cp in ipairs(connected) do
|
||||
frontiers:add(cp)
|
||||
end
|
||||
@ -96,9 +91,10 @@ function mesecon.mvps_get_stack(pos, dir, maximum, all_pull_sticky)
|
||||
for _, r in ipairs(mesecon.rules.alldirs) do
|
||||
local adjpos = vector.add(np, r)
|
||||
local adjnode = minetest.get_node(adjpos)
|
||||
local adjdef = minetest.registered_nodes[adjnode.name]
|
||||
if adjdef and adjdef.mvps_sticky then
|
||||
local sticksto = adjdef.mvps_sticky(adjpos, adjnode)
|
||||
if minetest.registered_nodes[adjnode.name]
|
||||
and minetest.registered_nodes[adjnode.name].mvps_sticky then
|
||||
local sticksto = minetest.registered_nodes[adjnode.name]
|
||||
.mvps_sticky(adjpos, adjnode)
|
||||
|
||||
-- connects to this position?
|
||||
for _, link in ipairs(sticksto) do
|
||||
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_noteblock
|
||||
Noteblock=Notenblock
|
@ -1,7 +0,0 @@
|
||||
# textdomain: mesecons_pistons
|
||||
Piston=Kolben
|
||||
Activated Piston Base=Aktivierter Kolbenkörper
|
||||
Piston Pusher=Kolbenschieber
|
||||
Sticky Piston=Haftender Kolben
|
||||
Activated Sticky Piston Base=Aktivierter haftender Kolbenkörper
|
||||
Sticky Piston Pusher=Haftender Kolbenschieber
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_powerplant
|
||||
Power Plant=Energiepflanze
|
@ -10,49 +10,6 @@ local pp_box_on = {
|
||||
fixed = { -7/16, -8/16, -7/16, 7/16, -7.5/16, 7/16 },
|
||||
}
|
||||
|
||||
local function obj_touching_plate_pos(obj_ref, plate_pos)
|
||||
local obj_pos = obj_ref:get_pos()
|
||||
local props = obj_ref:get_properties()
|
||||
if not (props and obj_pos and not obj_ref:get_attach()) then
|
||||
return false
|
||||
end
|
||||
|
||||
local collisionbox = props.collisionbox
|
||||
local physical = props.physical
|
||||
local is_player = obj_ref:is_player()
|
||||
local luaentity = obj_ref:get_luaentity()
|
||||
local is_item = luaentity and luaentity.name == "__builtin:item"
|
||||
if not (collisionbox and physical or is_player or is_item) then
|
||||
return false
|
||||
end
|
||||
|
||||
local plate_x_min = plate_pos.x - 7 / 16
|
||||
local plate_x_max = plate_pos.x + 7 / 16
|
||||
local plate_z_min = plate_pos.z - 7 / 16
|
||||
local plate_z_max = plate_pos.z + 7 / 16
|
||||
local plate_y_min = plate_pos.y - 8 / 16
|
||||
local plate_y_max = plate_pos.y - 6.5 / 16
|
||||
|
||||
local obj_x_min = obj_pos.x + collisionbox[1]
|
||||
local obj_x_max = obj_pos.x + collisionbox[4]
|
||||
local obj_z_min = obj_pos.z + collisionbox[3]
|
||||
local obj_z_max = obj_pos.z + collisionbox[6]
|
||||
local obj_y_min = obj_pos.y + collisionbox[2]
|
||||
local obj_y_max = obj_pos.y + collisionbox[5]
|
||||
|
||||
if
|
||||
obj_y_min < plate_y_max and
|
||||
obj_y_max > plate_y_min and
|
||||
obj_x_min < plate_x_max and
|
||||
obj_x_max > plate_x_min and
|
||||
obj_z_min < plate_z_max and
|
||||
obj_z_max > plate_z_min
|
||||
then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function pp_on_timer(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
local basename = minetest.registered_nodes[node.name].pressureplate_basename
|
||||
@ -61,21 +18,19 @@ local function pp_on_timer(pos)
|
||||
-- For some reason the first time on_timer is called, the pos is wrong
|
||||
if not basename then return end
|
||||
|
||||
local objs = minetest.get_objects_inside_radius(pos, 1)
|
||||
local obj_touching = false
|
||||
for k, obj in pairs(objs) do
|
||||
if obj_touching_plate_pos(obj, pos) then
|
||||
obj_touching = true
|
||||
break
|
||||
end
|
||||
end
|
||||
local objs = minetest.get_objects_inside_radius(pos, 1)
|
||||
|
||||
if not obj_touching and node.name == basename .. "_on" then
|
||||
if objs[1] == nil and node.name == basename .. "_on" then
|
||||
minetest.set_node(pos, {name = basename .. "_off"})
|
||||
mesecon.receptor_off(pos, mesecon.rules.pplate)
|
||||
elseif obj_touching and node.name == basename .. "_off" then
|
||||
minetest.set_node(pos, {name = basename .. "_on"})
|
||||
mesecon.receptor_on(pos, mesecon.rules.pplate )
|
||||
elseif node.name == basename .. "_off" then
|
||||
for k, obj in pairs(objs) do
|
||||
local objpos = obj:get_pos()
|
||||
if objpos.y > pos.y-1 and objpos.y < pos.y then
|
||||
minetest.set_node(pos, {name = basename .. "_on"})
|
||||
mesecon.receptor_on(pos, mesecon.rules.pplate )
|
||||
end
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
@ -1,3 +0,0 @@
|
||||
# textdomain: mesecons_pressureplates
|
||||
Wooden Pressure Plate=Holzdruckplatte
|
||||
Stone Pressure Plate=Steindruckplatte
|
@ -1,3 +0,0 @@
|
||||
# textdomain: mesecons_random
|
||||
Removestone=Verschwindestein
|
||||
Ghoststone=Geisterstein
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_solarpanel
|
||||
Solar Panel=Solarmodul
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_stickyblocks
|
||||
Sticky Block=Klebeblock
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_switch
|
||||
Switch=Schalter
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_torch
|
||||
Mesecon Torch=Meseconfackel
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_walllever
|
||||
Lever=Wandschalter
|
@ -13,11 +13,11 @@ local S = minetest.get_translator(minetest.get_current_modname())
|
||||
-- self_pos = pos of any mesecon node, from_pos = pos of conductor to getconnect for
|
||||
local wire_getconnect = function (from_pos, self_pos)
|
||||
local node = minetest.get_node(self_pos)
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
if def and def.mesecons then
|
||||
if minetest.registered_nodes[node.name]
|
||||
and minetest.registered_nodes[node.name].mesecons then
|
||||
-- rules of node to possibly connect to
|
||||
local rules
|
||||
if def.mesecon_wire then
|
||||
if (minetest.registered_nodes[node.name].mesecon_wire) then
|
||||
rules = mesecon.rules.default
|
||||
else
|
||||
rules = mesecon.get_any_rules(node)
|
||||
@ -68,18 +68,16 @@ end
|
||||
|
||||
local update_on_place_dig = function (pos, node)
|
||||
-- Update placed node (get_node again as it may have been dug)
|
||||
do
|
||||
local nn = minetest.get_node(pos)
|
||||
local def = minetest.registered_nodes[nn.name]
|
||||
if def and def.mesecon_wire then
|
||||
wire_updateconnect(pos)
|
||||
end
|
||||
local nn = minetest.get_node(pos)
|
||||
if (minetest.registered_nodes[nn.name])
|
||||
and (minetest.registered_nodes[nn.name].mesecon_wire) then
|
||||
wire_updateconnect(pos)
|
||||
end
|
||||
|
||||
-- Update nodes around it
|
||||
local rules
|
||||
local ndef = minetest.registered_nodes[node.name]
|
||||
if ndef and ndef.mesecon_wire then
|
||||
if minetest.registered_nodes[node.name]
|
||||
and minetest.registered_nodes[node.name].mesecon_wire then
|
||||
rules = mesecon.rules.default
|
||||
else
|
||||
rules = mesecon.get_any_rules(node)
|
||||
@ -88,8 +86,8 @@ local update_on_place_dig = function (pos, node)
|
||||
|
||||
for _, r in ipairs(mesecon.flattenrules(rules)) do
|
||||
local np = vector.add(pos, r)
|
||||
local rdef = minetest.registered_nodes[minetest.get_node(np).name]
|
||||
if rdef and rdef.mesecon_wire then
|
||||
if minetest.registered_nodes[minetest.get_node(np).name]
|
||||
and minetest.registered_nodes[minetest.get_node(np).name].mesecon_wire then
|
||||
wire_updateconnect(np)
|
||||
end
|
||||
end
|
||||
|
@ -1,2 +0,0 @@
|
||||
# textdomain: mesecons_wires
|
||||
Mesecon=Mesecon
|
Reference in New Issue
Block a user