forked from minetest-mods/mesecons
Compare commits
11 Commits
ec3218d6d9
...
detector_b
Author | SHA1 | Date | |
---|---|---|---|
32e1cc63f2 | |||
cffbc33e6d | |||
59780437f2 | |||
50a4bd6170 | |||
7418d5cb61 | |||
6b42419828 | |||
8e30ee4113 | |||
b318aadd0a | |||
fef402e88a | |||
f98ea14023 | |||
7f8758f17b |
@ -51,27 +51,18 @@ mesecon.fifo_queue = dofile(minetest.get_modpath("mesecons").."/fifo_queue.lua")
|
||||
|
||||
-- General
|
||||
function mesecon.get_effector(nodename)
|
||||
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
|
||||
local def = minetest.registered_nodes[nodename]
|
||||
return def and def.mesecons and def.mesecons.effector
|
||||
end
|
||||
|
||||
function mesecon.get_receptor(nodename)
|
||||
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
|
||||
local def = minetest.registered_nodes[nodename]
|
||||
return def and def.mesecons and def.mesecons.receptor
|
||||
end
|
||||
|
||||
function mesecon.get_conductor(nodename)
|
||||
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
|
||||
local def = minetest.registered_nodes[nodename]
|
||||
return def and def.mesecons and def.mesecons.conductor
|
||||
end
|
||||
|
||||
function mesecon.get_any_outputrules(node)
|
||||
|
3
mesecons/locale/mesecons.de.tr
Normal file
3
mesecons/locale/mesecons.de.tr
Normal file
@ -0,0 +1,3 @@
|
||||
# textdomain: mesecons
|
||||
|
||||
Mesecons=Mesecons
|
2
mesecons_blinkyplant/locale/mesecons_blinkyplant.de.tr
Normal file
2
mesecons_blinkyplant/locale/mesecons_blinkyplant.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_blinkyplant
|
||||
Blinky Plant=Blinkpflanze
|
2
mesecons_button/locale/mesecons_button.de.tr
Normal file
2
mesecons_button/locale/mesecons_button.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_button
|
||||
Button=Taster
|
5
mesecons_commandblock/locale/mesecons_commandblock.de.tr
Normal file
5
mesecons_commandblock/locale/mesecons_commandblock.de.tr
Normal file
@ -0,0 +1,5 @@
|
||||
# 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,6 +62,8 @@ 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
|
||||
@ -93,7 +95,6 @@ local off_state = {
|
||||
param2 = node.param2
|
||||
})
|
||||
end,
|
||||
delayer_onstate = "mesecons_delayer:delayer_on_"..tostring(i),
|
||||
mesecons = {
|
||||
receptor =
|
||||
{
|
||||
@ -103,6 +104,7 @@ local off_state = {
|
||||
effector =
|
||||
{
|
||||
rules = delayer_get_input_rules,
|
||||
action_off = delayer_deactivate,
|
||||
action_on = delayer_activate
|
||||
}
|
||||
},
|
||||
@ -134,7 +136,6 @@ local on_state = {
|
||||
param2 = node.param2
|
||||
})
|
||||
end,
|
||||
delayer_offstate = "mesecons_delayer:delayer_off_"..tostring(i),
|
||||
mesecons = {
|
||||
receptor =
|
||||
{
|
||||
@ -144,7 +145,8 @@ local on_state = {
|
||||
effector =
|
||||
{
|
||||
rules = delayer_get_input_rules,
|
||||
action_off = delayer_deactivate
|
||||
action_off = delayer_deactivate,
|
||||
action_on = delayer_activate
|
||||
}
|
||||
},
|
||||
}
|
||||
|
3
mesecons_delayer/locale/mesecons_delayer.de.tr
Normal file
3
mesecons_delayer/locale/mesecons_delayer.de.tr
Normal file
@ -0,0 +1,3 @@
|
||||
# textdomain: mesecons_delayer
|
||||
Delayer=Verzögerer
|
||||
You hacker you=Du Hacker, Du
|
@ -4,6 +4,16 @@ 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
|
||||
@ -35,10 +45,7 @@ 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 = {}
|
||||
for _, str in pairs(string.split(scanname:gsub(" ", ""), ",")) do
|
||||
scan_for[str] = true
|
||||
end
|
||||
local scan_for = comma_list_to_table(scanname)
|
||||
|
||||
local every_player = scanname == ""
|
||||
for _, obj in pairs(objs) do
|
||||
@ -150,6 +157,23 @@ 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
|
||||
@ -188,9 +212,10 @@ 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 (frontname == scanname) or
|
||||
(frontname ~= "air" and frontname ~= "ignore" and scanname == "")
|
||||
return (scan_for[frontname]) or
|
||||
(blacklist[frontname] ~= true and scanname == "")
|
||||
end
|
||||
|
||||
local function node_detector_send_node_name(pos, node, channel, meta)
|
||||
|
3
mesecons_detector/locale/mesecons_detector.de.tr
Normal file
3
mesecons_detector/locale/mesecons_detector.de.tr
Normal file
@ -0,0 +1,3 @@
|
||||
# textdomain: mesecons_detector
|
||||
Player Detector=Spielerdetektor
|
||||
Node Detector=Blockdetektor
|
8
mesecons_extrawires/locale/mesecons_extrawires.de.tr
Normal file
8
mesecons_extrawires/locale/mesecons_extrawires.de.tr
Normal file
@ -0,0 +1,8 @@
|
||||
# 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,35 +40,39 @@ 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 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})
|
||||
if not is_vertical_conductor(node.name) then
|
||||
return
|
||||
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)
|
||||
|
3
mesecons_fpga/locale/mesecons_fpga.de.tr
Normal file
3
mesecons_fpga/locale/mesecons_fpga.de.tr
Normal file
@ -0,0 +1,3 @@
|
||||
# textdomain: mesecons_fpga
|
||||
FPGA=FPGA
|
||||
FPGA Programmer=FPGA-Programmierer
|
@ -59,6 +59,10 @@ 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",
|
||||
|
2
mesecons_hydroturbine/locale/mesecons_hydroturbine.de.tr
Normal file
2
mesecons_hydroturbine/locale/mesecons_hydroturbine.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_hydroturbine
|
||||
Water Turbine=Wasserturbine
|
2
mesecons_insulated/locale/mesecons_insulated.de.tr
Normal file
2
mesecons_insulated/locale/mesecons_insulated.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_insulated
|
||||
Straight Insulated Mesecon=Isolierte Mesecongerade
|
2
mesecons_lamp/locale/mesecons_lamp.de.tr
Normal file
2
mesecons_lamp/locale/mesecons_lamp.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_lamp
|
||||
Mesecon Lamp=Meseconlampe
|
13
mesecons_lightstone/locale/mesecons_lightstone.de.tr
Normal file
13
mesecons_lightstone/locale/mesecons_lightstone.de.tr
Normal file
@ -0,0 +1,13 @@
|
||||
# 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,6 +238,16 @@ 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
|
||||
@ -378,7 +388,10 @@ 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.
|
||||
-- as all numbers in Lua are doubles. NaN values are removed.
|
||||
if msg ~= msg then
|
||||
return nil, 0
|
||||
end
|
||||
return msg, 8
|
||||
elseif t == "boolean" then
|
||||
-- Booleans are passed by value so need not be touched, and cost 1
|
||||
@ -507,6 +520,7 @@ 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,
|
||||
|
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_luacontroller
|
||||
Luacontroller=Luacontroller
|
4
mesecons_materials/locale/mesecons_materials.de.tr
Normal file
4
mesecons_materials/locale/mesecons_materials.de.tr
Normal file
@ -0,0 +1,4 @@
|
||||
# textdomain: mesecons_materials
|
||||
Glue=Klebstoff
|
||||
Fiber=Faser
|
||||
Silicon=Silizium
|
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_microcontroller
|
||||
Microcontroller=Mikrocontroller
|
5
mesecons_movestones/locale/mesecons_movestones.de.tr
Normal file
5
mesecons_movestones/locale/mesecons_movestones.de.tr
Normal file
@ -0,0 +1,5 @@
|
||||
# textdomain: mesecons_movestones
|
||||
Movestone=Laufstein
|
||||
Sticky Movestone=Klebriger Laufstein
|
||||
Vertical Movestone=Vertikaler Laufstein
|
||||
Vertical Sticky Movestone=Vertikaler klebriger Laufstein
|
@ -53,11 +53,16 @@ end
|
||||
|
||||
-- tests if the node can be pushed into, e.g. air, water, grass
|
||||
local function node_replaceable(name)
|
||||
if minetest.registered_nodes[name] then
|
||||
return minetest.registered_nodes[name].buildable_to or false
|
||||
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
|
||||
end
|
||||
|
||||
return false
|
||||
return nodedef.buildable_to or false
|
||||
end
|
||||
|
||||
function mesecon.mvps_get_stack(pos, dir, maximum, all_pull_sticky)
|
||||
@ -76,9 +81,9 @@ function mesecon.mvps_get_stack(pos, dir, maximum, all_pull_sticky)
|
||||
if #nodes > maximum then return nil end
|
||||
|
||||
-- add connected nodes to frontiers
|
||||
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)
|
||||
local nndef = minetest.registered_nodes[nn.name]
|
||||
if nndef and nndef.mvps_sticky then
|
||||
local connected = nndef.mvps_sticky(np, nn)
|
||||
for _, cp in ipairs(connected) do
|
||||
frontiers:add(cp)
|
||||
end
|
||||
@ -91,10 +96,9 @@ 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)
|
||||
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)
|
||||
local adjdef = minetest.registered_nodes[adjnode.name]
|
||||
if adjdef and adjdef.mvps_sticky then
|
||||
local sticksto = adjdef.mvps_sticky(adjpos, adjnode)
|
||||
|
||||
-- connects to this position?
|
||||
for _, link in ipairs(sticksto) do
|
||||
|
2
mesecons_noteblock/locale/mesecons_noteblock.de.tr
Normal file
2
mesecons_noteblock/locale/mesecons_noteblock.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_noteblock
|
||||
Noteblock=Notenblock
|
7
mesecons_pistons/locale/mesecons_pistons.de.tr
Normal file
7
mesecons_pistons/locale/mesecons_pistons.de.tr
Normal file
@ -0,0 +1,7 @@
|
||||
# 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
|
2
mesecons_powerplant/locale/mesecons_powerplant.de.tr
Normal file
2
mesecons_powerplant/locale/mesecons_powerplant.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_powerplant
|
||||
Power Plant=Energiepflanze
|
@ -10,6 +10,49 @@ 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
|
||||
@ -18,19 +61,21 @@ 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 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
|
||||
|
||||
if objs[1] == nil and node.name == basename .. "_on" then
|
||||
if not obj_touching and node.name == basename .. "_on" then
|
||||
minetest.set_node(pos, {name = basename .. "_off"})
|
||||
mesecon.receptor_off(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
|
||||
elseif obj_touching and node.name == basename .. "_off" then
|
||||
minetest.set_node(pos, {name = basename .. "_on"})
|
||||
mesecon.receptor_on(pos, mesecon.rules.pplate )
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
@ -0,0 +1,3 @@
|
||||
# textdomain: mesecons_pressureplates
|
||||
Wooden Pressure Plate=Holzdruckplatte
|
||||
Stone Pressure Plate=Steindruckplatte
|
3
mesecons_random/locale/mesecons_random.de.tr
Normal file
3
mesecons_random/locale/mesecons_random.de.tr
Normal file
@ -0,0 +1,3 @@
|
||||
# textdomain: mesecons_random
|
||||
Removestone=Verschwindestein
|
||||
Ghoststone=Geisterstein
|
2
mesecons_solarpanel/locale/mesecons_solarpanel.de.tr
Normal file
2
mesecons_solarpanel/locale/mesecons_solarpanel.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_solarpanel
|
||||
Solar Panel=Solarmodul
|
2
mesecons_stickyblocks/locale/mesecons_stickyblocks.de.tr
Normal file
2
mesecons_stickyblocks/locale/mesecons_stickyblocks.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_stickyblocks
|
||||
Sticky Block=Klebeblock
|
2
mesecons_switch/locale/mesecons_switch.de.tr
Normal file
2
mesecons_switch/locale/mesecons_switch.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_switch
|
||||
Switch=Schalter
|
2
mesecons_torch/locale/mesecons_torch.de.tr
Normal file
2
mesecons_torch/locale/mesecons_torch.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_torch
|
||||
Mesecon Torch=Meseconfackel
|
2
mesecons_walllever/locale/mesecons_walllever.de.tr
Normal file
2
mesecons_walllever/locale/mesecons_walllever.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# 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)
|
||||
if minetest.registered_nodes[node.name]
|
||||
and minetest.registered_nodes[node.name].mesecons then
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
if def and def.mesecons then
|
||||
-- rules of node to possibly connect to
|
||||
local rules
|
||||
if (minetest.registered_nodes[node.name].mesecon_wire) then
|
||||
if def.mesecon_wire then
|
||||
rules = mesecon.rules.default
|
||||
else
|
||||
rules = mesecon.get_any_rules(node)
|
||||
@ -68,16 +68,18 @@ end
|
||||
|
||||
local update_on_place_dig = function (pos, node)
|
||||
-- Update placed node (get_node again as it may have been dug)
|
||||
local nn = minetest.get_node(pos)
|
||||
if (minetest.registered_nodes[nn.name])
|
||||
and (minetest.registered_nodes[nn.name].mesecon_wire) then
|
||||
wire_updateconnect(pos)
|
||||
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
|
||||
end
|
||||
|
||||
-- Update nodes around it
|
||||
local rules
|
||||
if minetest.registered_nodes[node.name]
|
||||
and minetest.registered_nodes[node.name].mesecon_wire then
|
||||
local ndef = minetest.registered_nodes[node.name]
|
||||
if ndef and ndef.mesecon_wire then
|
||||
rules = mesecon.rules.default
|
||||
else
|
||||
rules = mesecon.get_any_rules(node)
|
||||
@ -86,8 +88,8 @@ local update_on_place_dig = function (pos, node)
|
||||
|
||||
for _, r in ipairs(mesecon.flattenrules(rules)) do
|
||||
local np = vector.add(pos, r)
|
||||
if minetest.registered_nodes[minetest.get_node(np).name]
|
||||
and minetest.registered_nodes[minetest.get_node(np).name].mesecon_wire then
|
||||
local rdef = minetest.registered_nodes[minetest.get_node(np).name]
|
||||
if rdef and rdef.mesecon_wire then
|
||||
wire_updateconnect(np)
|
||||
end
|
||||
end
|
||||
|
2
mesecons_wires/locale/mesecons_wires.de.tr
Normal file
2
mesecons_wires/locale/mesecons_wires.de.tr
Normal file
@ -0,0 +1,2 @@
|
||||
# textdomain: mesecons_wires
|
||||
Mesecon=Mesecon
|
Reference in New Issue
Block a user