Compare commits

...

4 Commits

Author SHA1 Message Date
loosewheel
85e5a877c6 Add files via upload 2022-05-23 20:01:18 +10:00
loosewheel
e3a53dcb61 Add files via upload 2022-03-08 20:11:38 +10:00
loosewheel
78f9fe2ef0 Add files via upload 2022-03-08 20:07:00 +10:00
loosewheel
dcc13da758 Add files via upload 2022-03-08 20:03:58 +10:00
32 changed files with 445 additions and 342 deletions

27
.luacheckrc Normal file
View File

@@ -0,0 +1,27 @@
unused_args = false
allow_defined_top = true
max_comment_line_length = 999
read_globals = {
"DIR_DELIM",
"minetest", "core",
"unpack",
"dump",
table = { fields = { "copy", "getn" } },
"vector", "nodeupdate",
"VoxelManip", "VoxelArea",
"PseudoRandom", "ItemStack",
"default",
"lwcomponents",
"intllib",
"mesecon",
"digiline",
"digilines",
"hopper",
"pipeworks",
"unifieddyes",
"digistuff",
}
globals = {
}

View File

@@ -12,7 +12,7 @@ local break_interval = 1.0
local function get_breaker_side (pos, param2, side) local function get_breaker_side (pos, param2, side)
local base = nil local base
if side == "left" then if side == "left" then
base = { x = -1, y = pos.y, z = 0 } base = { x = -1, y = pos.y, z = 0 }
@@ -138,7 +138,7 @@ local function can_break_node (pos, breakpos)
if node_def then if node_def then
-- try tool first -- try tool first
local tool = get_tool (pos) local tool = get_tool (pos)
local dig_params = nil local dig_params
if tool then if tool then
local tool_def = minetest.registered_items[tool:get_name ()] local tool_def = minetest.registered_items[tool:get_name ()]
@@ -516,7 +516,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
minetest.remove_node (pos) minetest.remove_node (pos)
end end
@@ -713,7 +712,7 @@ end
local breaker_groups = { cracky = 3 } local breaker_groups = { cracky = 3, wires_connect = 1 }
if utils.pipeworks_supported then if utils.pipeworks_supported then
breaker_groups.tubedevice = 1 breaker_groups.tubedevice = 1
breaker_groups.tubedevice_receiver = 1 breaker_groups.tubedevice_receiver = 1
@@ -721,7 +720,7 @@ end
local breaker_on_groups = { cracky = 3, not_in_creative_inventory = 1 } local breaker_on_groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 }
if utils.pipeworks_supported then if utils.pipeworks_supported then
breaker_on_groups.tubedevice = 1 breaker_on_groups.tubedevice = 1
breaker_on_groups.tubedevice_receiver = 1 breaker_on_groups.tubedevice_receiver = 1

View File

@@ -121,7 +121,7 @@ local function camera_scan (pos, resolution, distance)
local horz = (x - (resolution / 2)) * scale * view local horz = (x - (resolution / 2)) * scale * view
local vert = (y - (resolution / 2)) * scale * view local vert = (y - (resolution / 2)) * scale * view
local tpos = nil local tpos
if dir.x ~= 0 then if dir.x ~= 0 then
tpos = vector.round ({ x = (dist * dir.x) + pos.x, y = pos.y - vert, z = horz + pos.z }) tpos = vector.round ({ x = (dist * dir.x) + pos.x, y = pos.y - vert, z = horz + pos.z })
else else
@@ -146,9 +146,9 @@ local function camera_scan (pos, resolution, distance)
last_color = string.format ("0000%02X", color) last_color = string.format ("0000%02X", color)
image[y][x] = last_color image[y][x] = last_color
else else
local node = utils.get_far_node (tpos) local tnode = utils.get_far_node (tpos)
if node and node.name ~= "air" then if tnode and tnode.name ~= "air" then
local color = (((distance - dist) / distance) * 98) + 30 local color = (((distance - dist) / distance) * 98) + 30
last_color = string.format ("%02X%02X%02X", color, color, color) last_color = string.format ("%02X%02X%02X", color, color, color)
@@ -293,7 +293,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
minetest.remove_node (pos) minetest.remove_node (pos)
end end

View File

@@ -29,18 +29,6 @@ end
local function get_barrel_pos (pos)
local barrel = get_cannon_barrel (pos)
if barrel then
return barrel:get_pos ()
end
return nil
end
local function get_barrel_angle (pos) local function get_barrel_angle (pos)
local node = minetest.get_node_or_nil (pos) local node = minetest.get_node_or_nil (pos)
local barrel = get_cannon_barrel (pos) local barrel = get_cannon_barrel (pos)
@@ -181,11 +169,7 @@ end
local function aim_barrel_delayed (pos, aimpos) local function aim_barrel_delayed (pos, aimpos)
local x = tonumber (aimpos.x) or 0 if (tonumber (aimpos.z) or 0) < 1 then
local y = tonumber (aimpos.y) or 0
local z = tonumber (aimpos.z) or 0
if z < 1 then
return return
end end
@@ -230,7 +214,8 @@ local function fire_cannon (pos)
if ammo_pos and ammo_angle then if ammo_pos and ammo_angle then
local dir = vector.rotate ({ x = 0, y = 0, z = -1 }, ammo_angle) local dir = vector.rotate ({ x = 0, y = 0, z = -1 }, ammo_angle)
local owner = meta:get_string ("owner") local owner = meta:get_string ("owner")
local obj, cancel = nil, false local obj = nil
local cancel
local spawn_pos = { x = ammo_pos.x + dir.x, local spawn_pos = { x = ammo_pos.x + dir.x,
y = ammo_pos.y + dir.y, y = ammo_pos.y + dir.y,
z = ammo_pos.z + dir.z } z = ammo_pos.z + dir.z }
@@ -464,7 +449,7 @@ local function on_place (itemstack, placer, pointed_thing)
minetest.set_node (pos, { name = "lwcomponents:cannon", param1 = 0, param2 = param2 }) minetest.set_node (pos, { name = "lwcomponents:cannon", param1 = 0, param2 = param2 })
after_place_node (pos, placer, itemstack, pointed_thing) after_place_node (pos, placer, itemstack, pointed_thing)
if not utils.is_creative (player) then if not utils.is_creative (placer) then
itemstack:set_count (itemstack:get_count () - 1) itemstack:set_count (itemstack:get_count () - 1)
end end
end end
@@ -499,7 +484,7 @@ local function on_place_locked (itemstack, placer, pointed_thing)
minetest.set_node (pos, { name = "lwcomponents:cannon_locked", param1 = 0, param2 = param2 }) minetest.set_node (pos, { name = "lwcomponents:cannon_locked", param1 = 0, param2 = param2 })
after_place_node_locked (pos, placer, itemstack, pointed_thing) after_place_node_locked (pos, placer, itemstack, pointed_thing)
if not utils.is_creative (player) then if not utils.is_creative (placer) then
itemstack:set_count (itemstack:get_count () - 1) itemstack:set_count (itemstack:get_count () - 1)
end end
end end
@@ -621,7 +606,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
on_destruct (pos) on_destruct (pos)
minetest.remove_node (pos) minetest.remove_node (pos)
@@ -939,7 +923,7 @@ end
local cannon_groups = { cracky = 3 } local cannon_groups = { cracky = 3, wires_connect = 1 }
if utils.pipeworks_supported then if utils.pipeworks_supported then
cannon_groups.tubedevice = 1 cannon_groups.tubedevice = 1
cannon_groups.tubedevice_receiver = 1 cannon_groups.tubedevice_receiver = 1

View File

@@ -161,3 +161,13 @@ v0.1.26
* Added destroyer. * Added destroyer.
* Cleaned up hopper code. * Cleaned up hopper code.
* Fixed recipe for solid conductor blocks. * Fixed recipe for solid conductor blocks.
v0.1.27
* Bug fixes and code cleanup.
* Fixed receptor state in detector.
* Improved receptor state in digiswitch.
v0.1.28
* Added support for lwwires. Wires will not connect to conduits.

View File

@@ -316,7 +316,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
on_destruct (pos) on_destruct (pos)
minetest.remove_node (pos) minetest.remove_node (pos)

View File

@@ -300,7 +300,6 @@ local function send_to_target (pos, target, slot)
local stack = inv:get_stack ("main", slot) local stack = inv:get_stack ("main", slot)
if stack and not stack:is_empty () then if stack and not stack:is_empty () then
local name = stack:get_name ()
local item = ItemStack (stack) local item = ItemStack (stack)
target = (target and tostring (target)) or target = (target and tostring (target)) or
@@ -447,7 +446,7 @@ local function send_inventory_message (pos)
if stack and not stack:is_empty () then if stack and not stack:is_empty () then
local name = stack:get_name () local name = stack:get_name ()
local description = nil local description
local custom = false local custom = false
local pallet_index = nil local pallet_index = nil
local tstack = stack:to_table () local tstack = stack:to_table ()
@@ -737,7 +736,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
on_destruct (pos) on_destruct (pos)
minetest.remove_node (pos) minetest.remove_node (pos)
@@ -1026,7 +1024,7 @@ end
local conduit_groups = { cracky = 3 } local conduit_groups = { cracky = 3, wires_connect = 1 }
if utils.pipeworks_supported then if utils.pipeworks_supported then
conduit_groups.tubedevice = 1 conduit_groups.tubedevice = 1
conduit_groups.tubedevice_receiver = 1 conduit_groups.tubedevice_receiver = 1
@@ -1036,13 +1034,14 @@ end
minetest.register_node("lwcomponents:conduit", { minetest.register_node("lwcomponents:conduit", {
description = S("Conduit"), description = S("Conduit"),
short_description = S("Conduit"),
tiles = { "lwconduit.png" }, tiles = { "lwconduit.png" },
drawtype = "nodebox", drawtype = "nodebox",
node_box = { node_box = {
type = "connected", type = "connected",
fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body
connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top
connect_bottom = {-0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125}, -- down connect_bottom = { -0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125 }, -- down
connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front
connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back
connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left
@@ -1058,7 +1057,7 @@ minetest.register_node("lwcomponents:conduit", {
type = "connected", type = "connected",
fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body
connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top
connect_bottom = {-0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125}, -- down connect_bottom = { -0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125 }, -- down
connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front
connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back
connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left
@@ -1068,7 +1067,7 @@ minetest.register_node("lwcomponents:conduit", {
type = "connected", type = "connected",
fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body
connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top
connect_bottom = {-0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125}, -- down connect_bottom = { -0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125 }, -- down
connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front
connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back
connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left
@@ -1106,13 +1105,14 @@ minetest.register_node("lwcomponents:conduit", {
minetest.register_node("lwcomponents:conduit_locked", { minetest.register_node("lwcomponents:conduit_locked", {
description = S("Conduit (locked)"), description = S("Conduit (locked)"),
short_description = S("Conduit (locked)"),
tiles = { "lwconduit.png" }, tiles = { "lwconduit.png" },
drawtype = "nodebox", drawtype = "nodebox",
node_box = { node_box = {
type = "connected", type = "connected",
fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body
connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top
connect_bottom = {-0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125}, -- down connect_bottom = { -0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125 }, -- down
connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front
connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back
connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left
@@ -1128,7 +1128,7 @@ minetest.register_node("lwcomponents:conduit_locked", {
type = "connected", type = "connected",
fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body
connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top
connect_bottom = {-0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125}, -- down connect_bottom = { -0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125 }, -- down
connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front
connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back
connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left
@@ -1138,7 +1138,7 @@ minetest.register_node("lwcomponents:conduit_locked", {
type = "connected", type = "connected",
fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body fixed = { -0.375, -0.375, -0.375, 0.375, 0.375, 0.375 }, -- body
connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top connect_top = { -0.3125, 0.3125, -0.3125, 0.3125, 0.5, 0.3125 }, -- top
connect_bottom = {-0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125}, -- down connect_bottom = { -0.3125, -0.5, -0.3125, 0.3125, -0.3125, 0.3125 }, -- down
connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front connect_front = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, -0.3125 }, -- front
connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back connect_back = { -0.3125, -0.3125, 0.5, 0.3125, 0.3125, 0.3125 }, -- back
connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left connect_left = { -0.5, -0.3125, -0.3125, -0.3125, 0.3125, 0.3125 }, -- left

View File

@@ -1,5 +1,4 @@
local utils = ... local utils = ...
local S = utils.S

View File

@@ -6,3 +6,4 @@ intllib?
hopper? hopper?
digistuff? digistuff?
pipeworks? pipeworks?
lwwires?

View File

@@ -145,7 +145,7 @@ local function place_node (item, pos)
if not result then if not result then
if utils.settings.alert_handler_errors then if utils.settings.alert_handler_errors then
minetest.log ("error", "after_place_node handler for "..nodename.." crashed - "..msg) minetest.log ("error", "after_place_node handler for "..stack:get_name ().." crashed - "..msg)
end end
end end
end end
@@ -262,7 +262,7 @@ end
local function deployer_on (pos, node, slot, range) local function deployer_on (pos, _node, slot, range)
local node = minetest.get_node (pos) local node = minetest.get_node (pos)
range = tonumber (range) or 1 range = tonumber (range) or 1
@@ -428,7 +428,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
minetest.remove_node (pos) minetest.remove_node (pos)
end end
@@ -631,7 +630,7 @@ end
local deployer_groups = { cracky = 3 } local deployer_groups = { cracky = 3, wires_connect = 1 }
if utils.pipeworks_supported then if utils.pipeworks_supported then
deployer_groups.tubedevice = 1 deployer_groups.tubedevice = 1
deployer_groups.tubedevice_receiver = 1 deployer_groups.tubedevice_receiver = 1
@@ -639,7 +638,7 @@ end
local deployer_on_groups = { cracky = 3, not_in_creative_inventory = 1 } local deployer_on_groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 }
if utils.pipeworks_supported then if utils.pipeworks_supported then
deployer_on_groups.tubedevice = 1 deployer_on_groups.tubedevice = 1
deployer_on_groups.tubedevice_receiver = 1 deployer_on_groups.tubedevice_receiver = 1

View File

@@ -21,7 +21,12 @@ local function mesecons_on (pos)
local node = utils.get_far_node (pos) local node = utils.get_far_node (pos)
if node then if node then
node.param1 = 1 if node.name == "lwcomponents:detector_locked_on" then
node.name = "lwcomponents:detector_locked_on_on"
elseif node.name == "lwcomponents:detector_on" then
node.name = "lwcomponents:detector_on_on"
end
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
end end
end end
@@ -40,7 +45,12 @@ local function mesecons_off (pos)
local node = utils.get_far_node (pos) local node = utils.get_far_node (pos)
if node then if node then
node.param1 = 0 if node.name == "lwcomponents:detector_locked_on_on" then
node.name = "lwcomponents:detector_locked_on"
elseif node.name == "lwcomponents:detector_on_on" then
node.name = "lwcomponents:detector_on"
end
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
end end
end end
@@ -145,7 +155,7 @@ local function get_entity_height (objref)
local entity = objref:get_luaentity () local entity = objref:get_luaentity ()
if entity and entity.name then if entity and entity.name then
def = minetest.registered_entities[entity.name] local def = minetest.registered_entities[entity.name]
if def and type (def.collisionbox) == "table" and if def and type (def.collisionbox) == "table" and
type (def.collisionbox[5]) == "number" then type (def.collisionbox[5]) == "number" then
@@ -343,30 +353,21 @@ end
local function start_detector (pos) local function start_detector (pos)
local node = minetest.get_node (pos) local node = minetest.get_node (pos)
local meta = minetest.get_meta (pos)
if node and meta then if node then
if node.name == "lwcomponents:detector" then if node.name == "lwcomponents:detector" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:detector_on" node.name = "lwcomponents:detector_on"
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
minetest.get_node_timer (pos):start (detect_interval) minetest.get_node_timer (pos):start (detect_interval)
update_form_spec (pos) update_form_spec (pos)
end
elseif node.name == "lwcomponents:detector_locked" then elseif node.name == "lwcomponents:detector_locked" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:detector_locked_on" node.name = "lwcomponents:detector_locked_on"
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
minetest.get_node_timer (pos):start (detect_interval) minetest.get_node_timer (pos):start (detect_interval)
update_form_spec (pos) update_form_spec (pos)
end
end end
end end
@@ -376,32 +377,25 @@ end
local function stop_detector (pos) local function stop_detector (pos)
local node = minetest.get_node (pos) local node = minetest.get_node (pos)
local meta = minetest.get_meta (pos)
if node and meta then if node then
if node.name == "lwcomponents:detector_on" then if node.name == "lwcomponents:detector_on" or
local meta = minetest.get_meta (pos) node.name == "lwcomponents:detector_on_on" then
if meta then
node.name = "lwcomponents:detector" node.name = "lwcomponents:detector"
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
minetest.get_node_timer (pos):stop () minetest.get_node_timer (pos):stop ()
mesecons_off (pos) mesecons_off (pos)
update_form_spec (pos) update_form_spec (pos)
end
elseif node.name == "lwcomponents:detector_locked_on" then elseif node.name == "lwcomponents:detector_locked_on" or
local meta = minetest.get_meta (pos) node.name == "lwcomponents:detector_locked_on_on" then
if meta then
node.name = "lwcomponents:detector_locked" node.name = "lwcomponents:detector_locked"
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
minetest.get_node_timer (pos):stop () minetest.get_node_timer (pos):stop ()
mesecons_off (pos) mesecons_off (pos)
update_form_spec (pos) update_form_spec (pos)
end
end end
end end
@@ -565,7 +559,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
on_destruct (pos) on_destruct (pos)
minetest.remove_node (pos) minetest.remove_node (pos)
@@ -698,16 +691,31 @@ end
local function mesecon_support () local function mesecon_support_on ()
if utils.mesecon_supported then if utils.mesecon_supported then
return return
{ {
receptor = receptor =
{ {
state = utils.mesecon_state_on, state = utils.mesecon_state_on,
rules = function (node) rules = utils.mesecon_default_rules
return (node.param1 == 0 and { }) or utils.mesecon_default_rules }
}
end end
return nil
end
local function mesecon_support_off ()
if utils.mesecon_supported then
return
{
receptor =
{
state = utils.mesecon_state_off,
rules = utils.mesecon_default_rules
} }
} }
end end
@@ -722,7 +730,7 @@ minetest.register_node("lwcomponents:detector", {
tiles = { "lwdetector_face.png", "lwdetector_face.png", "lwdetector.png", tiles = { "lwdetector_face.png", "lwdetector_face.png", "lwdetector.png",
"lwdetector.png", "lwdetector.png", "lwdetector_face.png"}, "lwdetector.png", "lwdetector.png", "lwdetector_face.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 }, groups = { cracky = 3, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -732,7 +740,7 @@ minetest.register_node("lwcomponents:detector", {
drop = "lwcomponents:detector", drop = "lwcomponents:detector",
_digistuff_channelcopier_fieldname = "channel", _digistuff_channelcopier_fieldname = "channel",
mesecons = mesecon_support (), mesecons = mesecon_support_off (),
digiline = digilines_support (), digiline = digilines_support (),
on_destruct = on_destruct, on_destruct = on_destruct,
@@ -751,7 +759,7 @@ minetest.register_node("lwcomponents:detector_locked", {
tiles = { "lwdetector_face.png", "lwdetector_face.png", "lwdetector.png", tiles = { "lwdetector_face.png", "lwdetector_face.png", "lwdetector.png",
"lwdetector.png", "lwdetector.png", "lwdetector_face.png"}, "lwdetector.png", "lwdetector.png", "lwdetector_face.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 }, groups = { cracky = 3, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -761,7 +769,7 @@ minetest.register_node("lwcomponents:detector_locked", {
drop = "lwcomponents:detector_locked", drop = "lwcomponents:detector_locked",
_digistuff_channelcopier_fieldname = "channel", _digistuff_channelcopier_fieldname = "channel",
mesecons = mesecon_support (), mesecons = mesecon_support_off (),
digiline = digilines_support (), digiline = digilines_support (),
on_destruct = on_destruct, on_destruct = on_destruct,
@@ -780,7 +788,7 @@ minetest.register_node("lwcomponents:detector_on", {
tiles = { "lwdetector_face_on.png", "lwdetector_face_on.png", "lwdetector.png", tiles = { "lwdetector_face_on.png", "lwdetector_face_on.png", "lwdetector.png",
"lwdetector.png", "lwdetector.png", "lwdetector_face_on.png"}, "lwdetector.png", "lwdetector.png", "lwdetector_face_on.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1 }, groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -790,7 +798,7 @@ minetest.register_node("lwcomponents:detector_on", {
drop = "lwcomponents:detector", drop = "lwcomponents:detector",
_digistuff_channelcopier_fieldname = "channel", _digistuff_channelcopier_fieldname = "channel",
mesecons = mesecon_support (), mesecons = mesecon_support_off (),
digiline = digilines_support (), digiline = digilines_support (),
on_destruct = on_destruct, on_destruct = on_destruct,
@@ -809,7 +817,7 @@ minetest.register_node("lwcomponents:detector_locked_on", {
tiles = { "lwdetector_face_on.png", "lwdetector_face_on.png", "lwdetector.png", tiles = { "lwdetector_face_on.png", "lwdetector_face_on.png", "lwdetector.png",
"lwdetector.png", "lwdetector.png", "lwdetector_face_on.png"}, "lwdetector.png", "lwdetector.png", "lwdetector_face_on.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1 }, groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -819,7 +827,65 @@ minetest.register_node("lwcomponents:detector_locked_on", {
drop = "lwcomponents:detector_locked", drop = "lwcomponents:detector_locked",
_digistuff_channelcopier_fieldname = "channel", _digistuff_channelcopier_fieldname = "channel",
mesecons = mesecon_support (), mesecons = mesecon_support_off (),
digiline = digilines_support (),
on_destruct = on_destruct,
on_receive_fields = on_receive_fields,
can_dig = can_dig,
after_place_node = after_place_node_locked,
on_blast = on_blast,
on_timer = on_timer,
on_rightclick = on_rightclick
})
minetest.register_node("lwcomponents:detector_on_on", {
description = S("Detector"),
tiles = { "lwdetector_face_on.png", "lwdetector_face_on.png", "lwdetector.png",
"lwdetector.png", "lwdetector.png", "lwdetector_face_on.png"},
is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (),
paramtype = "none",
param1 = 0,
paramtype2 = "facedir",
param2 = 1,
floodable = false,
drop = "lwcomponents:detector",
_digistuff_channelcopier_fieldname = "channel",
mesecons = mesecon_support_on (),
digiline = digilines_support (),
on_destruct = on_destruct,
on_receive_fields = on_receive_fields,
can_dig = can_dig,
after_place_node = after_place_node,
on_blast = on_blast,
on_timer = on_timer,
on_rightclick = on_rightclick
})
minetest.register_node("lwcomponents:detector_locked_on_on", {
description = S("Detector (locked)"),
tiles = { "lwdetector_face_on.png", "lwdetector_face_on.png", "lwdetector.png",
"lwdetector.png", "lwdetector.png", "lwdetector_face_on.png"},
is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (),
paramtype = "none",
param1 = 0,
paramtype2 = "facedir",
param2 = 1,
floodable = false,
drop = "lwcomponents:detector_locked",
_digistuff_channelcopier_fieldname = "channel",
mesecons = mesecon_support_on (),
digiline = digilines_support (), digiline = digilines_support (),
on_destruct = on_destruct, on_destruct = on_destruct,

View File

@@ -8,8 +8,6 @@ if utils.digilines_supported and utils.mesecon_supported then
local function get_mesecon_rule_for_side (side) local function get_mesecon_rule_for_side (side)
local base = nil
if side == "white" then if side == "white" then
return { { x = 0, y = 1, z = 0 } } return { { x = 0, y = 1, z = 0 } }
elseif side == "black" then elseif side == "black" then
@@ -108,12 +106,59 @@ end
local function get_powered_rules (node)
local rules = { }
if is_side_on (node.param1, "switch") then
rules = table.copy (utils.mesecon_default_rules)
if is_side_on (node.param1, "white") then
rules[#rules + 1] = get_mesecon_rule_for_side ("white")[1]
end
if is_side_on (node.param1, "black") then
rules[#rules + 1] = get_mesecon_rule_for_side ("black")[1]
end
else
local sides =
{
"white",
"black",
"red",
"green",
"blue",
"yellow",
}
for _, side in ipairs (sides) do
if is_side_on (node.param1, side) then
rules[#rules + 1] = get_mesecon_rule_for_side (side)[1]
end
end
end
return rules
end
local function get_node_name (node)
if node.param1 ~= 0 then
return "lwcomponents:digiswitch_on"
end
return "lwcomponents:digiswitch"
end
local function switch_on (pos, side) local function switch_on (pos, side)
utils.mesecon_receptor_on (pos, get_mesecon_rule_for_side (side)) utils.mesecon_receptor_on (pos, get_mesecon_rule_for_side (side))
local node = utils.get_far_node (pos) local node = utils.get_far_node (pos)
if node then if node then
node.param1 = set_side_bit (node.param1, side, true) node.param1 = set_side_bit (node.param1, side, true)
node.name = get_node_name (node)
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
end end
end end
@@ -126,6 +171,7 @@ local function switch_off (pos, side)
local node = utils.get_far_node (pos) local node = utils.get_far_node (pos)
if node then if node then
node.param1 = set_side_bit (node.param1, side, false) node.param1 = set_side_bit (node.param1, side, false)
node.name = get_node_name (node)
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
end end
end end
@@ -192,32 +238,37 @@ local function mesecon_support ()
{ {
receptor = receptor =
{ {
state = mesecon.state.on, state = mesecon.state.off,
rules =
rules = function (node)
if is_side_on (node.param1, "switch") then
return utils.mesecon_default_rules
end
local r = { }
local sides =
{ {
"white", { x = 0, y = 0, z = -1 },
"black", { x = 1, y = 0, z = 0 },
"red", { x = -1, y = 0, z = 0 },
"green", { x = 0, y = 0, z = 1 },
"blue", { x = 1, y = 1, z = 0 },
"yellow", { x = 1, y = -1, z = 0 },
{ x = -1, y = 1, z = 0 },
{ x = -1, y = -1, z = 0 },
{ x = 0, y = 1, z = 1 },
{ x = 0, y = -1, z = 1 },
{ x = 0, y = 1, z = -1 },
{ x = 0, y = -1, z = -1 },
{ x = 0, y = 1, z = 0 },
{ x = 0, y = -1, z = 0 }
} }
},
}
end
for _, side in ipairs (sides) do
if is_side_on (node.param1, side) then
r[#r + 1] = get_mesecon_rule_for_side (side)[1]
end
end
return r
end local function mesecon_support_on ()
return
{
receptor =
{
state = mesecon.state.on,
rules = get_powered_rules
}, },
} }
end end
@@ -243,7 +294,15 @@ end
local function on_destruct (pos) local function on_destruct (pos)
utils.mesecon_receptor_off (pos, get_mesecon_rule_for_side ()) local node = utils.get_far_node (pos)
if node then
local rules = get_powered_rules (node)
if #rules > 0 then
utils.mesecon_receptor_off (pos, rules)
end
end
end end
@@ -275,7 +334,7 @@ minetest.register_node ("lwcomponents:digiswitch", {
}, },
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
groups = { cracky = 2, oddly_breakable_by_hand = 2 }, groups = { cracky = 2, oddly_breakable_by_hand = 2, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
mesecons = mesecon_support (), mesecons = mesecon_support (),
digiline = digilines_support (), digiline = digilines_support (),
@@ -288,4 +347,32 @@ minetest.register_node ("lwcomponents:digiswitch", {
minetest.register_node ("lwcomponents:digiswitch_on", {
description = S("Digilines Switch"),
tiles = { "lwdigiswitch_white.png", "lwdigiswitch_black.png",
"lwdigiswitch_green.png", "lwdigiswitch_red.png",
"lwdigiswitch_yellow.png", "lwdigiswitch_blue.png" },
sunlight_propagates = false,
drawtype = "normal",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
}
},
paramtype = "none",
param1 = 0,
groups = { cracky = 2, oddly_breakable_by_hand = 2, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (),
mesecons = mesecon_support_on (),
digiline = digilines_support (),
_digistuff_channelcopier_fieldname = "channel",
on_construct = on_construct,
on_destruct = on_destruct,
on_receive_fields = on_receive_fields,
})
end -- utils.digilines_supported and utils.mesecon_supported end -- utils.digilines_supported and utils.mesecon_supported

View File

@@ -139,7 +139,8 @@ local function dispense_item (pos, node, slot)
item:set_count (1) item:set_count (1)
local spawn_pos = dispense_pos (pos, node) local spawn_pos = dispense_pos (pos, node)
local owner = meta:get_string ("owner") local owner = meta:get_string ("owner")
local obj, cancel = nil, false local obj = nil
local cancel
if utils.settings.spawn_mobs then if utils.settings.spawn_mobs then
obj, cancel = utils.spawn_registered (name, obj, cancel = utils.spawn_registered (name,
@@ -318,7 +319,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
minetest.remove_node (pos) minetest.remove_node (pos)
end end
@@ -513,7 +513,7 @@ end
local dispenser_groups = { cracky = 3 } local dispenser_groups = { cracky = 3, wires_connect = 1 }
if utils.pipeworks_supported then if utils.pipeworks_supported then
dispenser_groups.tubedevice = 1 dispenser_groups.tubedevice = 1
dispenser_groups.tubedevice_receiver = 1 dispenser_groups.tubedevice_receiver = 1

View File

@@ -1,21 +1,31 @@
DigiSwitch Digilines Switch
---------- ----------------
* This block is only available if both digilines and mesecons are loaded. * This block is only available if both digilines and mesecons are loaded.
Digiswitches act as both a digilines message target and a digilines cable, Digilines switches act as both a digilines message target and a digilines
as well as a mesecons power source. They can be placed beside each other cable, as well as a mesecons power source. They can be placed beside each
to form a bank, horizontally or vertically. other to form a bank, horizontally or vertically.
Right click the digiswitch to give it a channel. Right click the digilines switch to give it a channel.
Mesecon power can be delivered at 6 sides of the digiswitch, the adjacent Mesecon power can be delivered at 6 sides of the digilines switch, the
4 in the (x, z), above and below. Around the connector on these sides are a adjacent 4 in the (x, z), above and below. Around the connector on these
colored border indicating the side. The sides are named "red", "green", sides are a colored border indicating the side. The sides are named "red",
"blue", "yellow", "white" and "black". "green", "blue", "yellow", "white" and "black".
The digilines message sent to the digiswitch dictates the action, "on" or The digilines message sent to the digilines switch dictates the action,
"off". The action can be followed with the side to act upon, separated by "on" or "off". The action can be followed with the side to act upon,
a space. eg. "on white". If a side is stated only that side is acted upon. separated by a space. eg. "on white". If a side is stated only that side
If the side is omitted (or is invalid) all 6 sides are acted upon. If the is acted upon. If the side is omitted (or is invalid) all 6 sides are
side name "switch" is give the power is supplied the same as a mesecons acted upon. If the side name "switch" is given the power is supplied the
switch (all horizontal sides, one below, this height and one above). same as a mesecons switch (all horizontal sides, one below, this height
and one above).
A note on connecting mesecons wires. Mesecons does not appear to allow
for some sides to be on and some off on receptors (power sources). When
any side is on the state of the digilines switch is on, but only rules for
the powered sides are defined. This means if wires are placed while in
this state only the sides that are powered will connect. When no side is
powered the state of the digilines switch is off with rules defined for
all potentially connected sides. In this state (as when first placed)
mesecons wires will connect correctly.

View File

@@ -254,7 +254,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
minetest.remove_node (pos) minetest.remove_node (pos)
end end
@@ -449,7 +448,7 @@ end
local dropper_groups = { cracky = 3 } local dropper_groups = { cracky = 3, wires_connect = 1 }
if utils.pipeworks_supported then if utils.pipeworks_supported then
dropper_groups.tubedevice = 1 dropper_groups.tubedevice = 1
dropper_groups.tubedevice_receiver = 1 dropper_groups.tubedevice_receiver = 1

View File

@@ -22,8 +22,8 @@ local function get_dummy_player (as_player, name, pos, look_dir, controls, veloc
end end
object.set_pos = function (self, pos) object.set_pos = function (self, _pos)
obj_pos = vector.new (pos) obj_pos = vector.new (_pos)
end end
@@ -37,8 +37,8 @@ local function get_dummy_player (as_player, name, pos, look_dir, controls, veloc
end end
object.move_to = function (self, pos, continuous) object.move_to = function (self, _pos, continuous)
obj_pos = vector.new (pos) obj_pos = vector.new (_pos)
end end
@@ -55,8 +55,8 @@ local function get_dummy_player (as_player, name, pos, look_dir, controls, veloc
end end
object.set_hp = function (self, hp, reason) object.set_hp = function (self, _hp, reason)
obj_hp = hp obj_hp = _hp
end end
@@ -134,8 +134,8 @@ local function get_dummy_player (as_player, name, pos, look_dir, controls, veloc
end end
object.set_properties = function (self, properties) object.set_properties = function (self, _properties)
obj_properties = table.copy (properties or { }) obj_properties = table.copy (_properties or { })
end end
@@ -237,7 +237,6 @@ local function get_dummy_player (as_player, name, pos, look_dir, controls, veloc
object.set_fov = function (self, fov, is_multiplier, transition_time) object.set_fov = function (self, fov, is_multiplier, transition_time)
obj_breath = value
end end

View File

@@ -249,9 +249,6 @@ local function explode_entities (pos, radius, damage, drops)
if def and def.on_rightclick then if def and def.on_rightclick then
def.on_rightclick (obj:get_pos (), ItemStack (), child) def.on_rightclick (obj:get_pos (), ItemStack (), child)
local ent_damage = ((radius - dist) / radius * damage / 2) + (damage / 2)
local reason = { type = "set_hp", from = "lwcomponents" }
child:add_velocity (vel) child:add_velocity (vel)
child:set_hp (child:get_hp () - ent_damage, reason) child:set_hp (child:get_hp () - ent_damage, reason)
end end

10
fan.lua
View File

@@ -45,7 +45,6 @@ end
local function blow (pos) local function blow (pos)
local meta = minetest.get_meta (pos)
local node = minetest.get_node (pos) local node = minetest.get_node (pos)
local dir = direction_vector (node) local dir = direction_vector (node)
local reach = 5 local reach = 5
@@ -211,7 +210,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
minetest.remove_node (pos) minetest.remove_node (pos)
end end
@@ -343,7 +341,7 @@ minetest.register_node("lwcomponents:fan", {
tiles = { "lwfan.png", "lwfan.png", "lwfan.png", tiles = { "lwfan.png", "lwfan.png", "lwfan.png",
"lwfan.png", "lwfan.png", "lwfan_face.png"}, "lwfan.png", "lwfan.png", "lwfan_face.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 }, groups = { cracky = 3, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -371,7 +369,7 @@ minetest.register_node("lwcomponents:fan_locked", {
tiles = { "lwfan.png", "lwfan.png", "lwfan.png", tiles = { "lwfan.png", "lwfan.png", "lwfan.png",
"lwfan.png", "lwfan.png", "lwfan_face.png"}, "lwfan.png", "lwfan.png", "lwfan_face.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 }, groups = { cracky = 3, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -399,7 +397,7 @@ minetest.register_node("lwcomponents:fan_on", {
tiles = { "lwfan.png", "lwfan.png", "lwfan.png", tiles = { "lwfan.png", "lwfan.png", "lwfan.png",
"lwfan.png", "lwfan.png", "lwfan_face_on.png"}, "lwfan.png", "lwfan.png", "lwfan_face_on.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1 }, groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -428,7 +426,7 @@ minetest.register_node("lwcomponents:fan_locked_on", {
tiles = { "lwfan.png", "lwfan.png", "lwfan.png", tiles = { "lwfan.png", "lwfan.png", "lwfan.png",
"lwfan.png", "lwfan.png", "lwfan_face_on.png"}, "lwfan.png", "lwfan.png", "lwfan_face_on.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1 }, groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,

View File

@@ -136,7 +136,6 @@ local function check_fuel (pos, used)
end end
if used > power then if used > power then
power = 0
meta:set_float ("power", 0) meta:set_float ("power", 0)
return false return false
@@ -598,7 +597,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
on_destruct (pos) on_destruct (pos)
minetest.remove_node (pos) minetest.remove_node (pos)
@@ -822,7 +820,7 @@ end
local force_field_groups = { cracky = 3 } local force_field_groups = { cracky = 3, wires_connect = 1 }
if utils.pipeworks_supported then if utils.pipeworks_supported then
force_field_groups.tubedevice = 1 force_field_groups.tubedevice = 1
force_field_groups.tubedevice_receiver = 1 force_field_groups.tubedevice_receiver = 1
@@ -830,7 +828,7 @@ end
local force_field_on_groups = { cracky = 3, not_in_creative_inventory = 1 } local force_field_on_groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 }
if utils.pipeworks_supported then if utils.pipeworks_supported then
force_field_on_groups.tubedevice = 1 force_field_on_groups.tubedevice = 1
force_field_on_groups.tubedevice_receiver = 1 force_field_on_groups.tubedevice_receiver = 1

View File

@@ -126,14 +126,14 @@ local function draw_map (pos, map)
end end
if draw then if draw then
local holonode = hologram_block[line[z]] local colornode = hologram_block[line[z]]
if node then if node then
utils.destroy_node (holopos) utils.destroy_node (holopos)
end end
if holonode then if colornode then
minetest.set_node (holopos, { name = holonode.node }) minetest.set_node (holopos, { name = colornode.node })
local nodemeta = minetest.get_meta (holopos) local nodemeta = minetest.get_meta (holopos)
@@ -231,7 +231,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
minetest.remove_node (pos) minetest.remove_node (pos)
end end

View File

@@ -260,8 +260,8 @@ local function run_hopper_action (pos)
if registered_dest_invs then if registered_dest_invs then
local placer = get_player_object (pos) local placer = get_player_object (pos)
local src_pos = vector.add (pos, get_input_dir (node)) local src_pos = vector.add (pos, get_input_dir (node))
local drop = nil local drop
local stack = nil local stack
local slot = nil local slot = nil
local src_inv_name = nil local src_inv_name = nil

View File

@@ -1,4 +1,4 @@
local version = "0.1.26" local version = "0.1.28"
local mod_storage = minetest.get_mod_storage () local mod_storage = minetest.get_mod_storage ()
@@ -17,7 +17,7 @@ local modpath = minetest.get_modpath ("lwcomponents")
loadfile (modpath.."/settings.lua") (utils) loadfile (modpath.."/settings.lua") (utils)
utils.get_dummy_player = loadfile (modpath.."/dummy_player.lua") () utils.get_dummy_player = loadfile (modpath.."/dummy_player.lua") ()
loadfile (modpath.."/utils.lua") (utils, mod_storage) loadfile (modpath.."/utils.lua") (utils)
loadfile (modpath.."/explode.lua") (utils) loadfile (modpath.."/explode.lua") (utils)
loadfile (modpath.."/api.lua") (utils) loadfile (modpath.."/api.lua") (utils)
utils.connections = loadfile (modpath.."/connections.lua") () utils.connections = loadfile (modpath.."/connections.lua") ()

View File

@@ -3,4 +3,4 @@ description = Various components for mesecons and digilines.
title = LWComponents title = LWComponents
name = lwcomponents name = lwcomponents
depends = default depends = default
optional_depends = mesecons, digilines, unifieddyes, intllib, hopper, digistuff, pipeworks optional_depends = mesecons, digilines, unifieddyes, intllib, hopper, digistuff, pipeworks, lwwires

View File

@@ -237,7 +237,7 @@ local function move_entities (list, move, players)
for _, entry in ipairs (list) do for _, entry in ipairs (list) do
if entry.obj then if entry.obj then
if players or not entry.obj:is_player () then if players or not entry.obj:is_player () then
local pos = nil local pos
if entry.obj:is_player () then if entry.obj:is_player () then
pos = vector.add (entry.pos, { x = move.x, y = move.y + 0.1, z = move.z }) pos = vector.add (entry.pos, { x = move.x, y = move.y + 0.1, z = move.z })
@@ -311,7 +311,7 @@ local function move_nodes (list, move)
end end
if list[i].timeout > 0 then if list[i].timeout > 0 then
timer = minetest.get_node_timer (pos) local timer = minetest.get_node_timer (pos)
if timer then if timer then
timer:set (list[i].timeout, list[i].elapsed) timer:set (list[i].timeout, list[i].elapsed)
@@ -334,7 +334,7 @@ local function move_nodes (list, move)
end end
if list[i].timeout > 0 then if list[i].timeout > 0 then
timer = minetest.get_node_timer (pos) local timer = minetest.get_node_timer (pos)
if timer then if timer then
timer:set (list[i].timeout, list[i].elapsed) timer:set (list[i].timeout, list[i].elapsed)

View File

@@ -884,7 +884,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
minetest.remove_node (pos) minetest.remove_node (pos)
end end
@@ -1070,7 +1069,7 @@ minetest.register_node("lwcomponents:piston_blank_1", {
minetest.register_node("lwcomponents:piston_blank_2", { minetest.register_node("lwcomponents:piston_blank_2", {
description = S("Piston blank"), description = S("Piston blank"),
drawtype = "airlike", drawtype = "airlike",
paramtype = "none", paramtype = "light",
param1 = 0, param1 = 0,
paramtype2 = "facedir", paramtype2 = "facedir",
param2 = 0, param2 = 0,
@@ -1092,7 +1091,6 @@ minetest.register_node("lwcomponents:piston_blank_2", {
is_ground_content = false, is_ground_content = false,
drop = "", drop = "",
groups = { not_in_creative_inventory = 1 }, groups = { not_in_creative_inventory = 1 },
paramtype = "light",
-- unaffected by explosions -- unaffected by explosions
on_blast = function() end, on_blast = function() end,
}) })
@@ -1105,7 +1103,7 @@ minetest.register_node("lwcomponents:piston", {
"lwcomponents_piston_right.png", "lwcomponents_piston_left.png", "lwcomponents_piston_right.png", "lwcomponents_piston_left.png",
"lwcomponents_piston_base.png", "lwcomponents_piston_pusher.png" }, "lwcomponents_piston_base.png", "lwcomponents_piston_pusher.png" },
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 }, groups = { cracky = 3, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "light", paramtype = "light",
param1 = 0, param1 = 0,
@@ -1152,7 +1150,7 @@ minetest.register_node("lwcomponents:piston_1", {
}, },
}, },
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 , not_in_creative_inventory = 1 }, groups = { cracky = 3 , not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "light", paramtype = "light",
param1 = 0, param1 = 0,
@@ -1199,7 +1197,7 @@ minetest.register_node("lwcomponents:piston_2", {
}, },
}, },
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 , not_in_creative_inventory = 1 }, groups = { cracky = 3 , not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "light", paramtype = "light",
param1 = 0, param1 = 0,
@@ -1229,7 +1227,7 @@ minetest.register_node("lwcomponents:piston_sticky", {
"lwcomponents_piston_right.png", "lwcomponents_piston_left.png", "lwcomponents_piston_right.png", "lwcomponents_piston_left.png",
"lwcomponents_piston_base.png", "lwcomponents_piston_pusher_sticky.png" }, "lwcomponents_piston_base.png", "lwcomponents_piston_pusher_sticky.png" },
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 }, groups = { cracky = 3, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "light", paramtype = "light",
param1 = 0, param1 = 0,
@@ -1276,7 +1274,7 @@ minetest.register_node("lwcomponents:piston_sticky_1", {
}, },
}, },
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 , not_in_creative_inventory = 1 }, groups = { cracky = 3 , not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "light", paramtype = "light",
param1 = 0, param1 = 0,
@@ -1323,7 +1321,7 @@ minetest.register_node("lwcomponents:piston_sticky_2", {
}, },
}, },
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 , not_in_creative_inventory = 1 }, groups = { cracky = 3 , not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "light", paramtype = "light",
param1 = 0, param1 = 0,

View File

@@ -69,7 +69,6 @@ end
local function player_button_turnoff (pos) local function player_button_turnoff (pos)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
if node.name == "lwcomponents:player_button_on" then if node.name == "lwcomponents:player_button_on" then
node.name = "lwcomponents:player_button_off" node.name = "lwcomponents:player_button_off"
@@ -85,7 +84,7 @@ end
minetest.register_node ("lwcomponents:player_button", { minetest.register_node ("lwcomponents:player_button", {
description = "Player Button", description = S("Player Button"),
drawtype = "nodebox", drawtype = "nodebox",
tiles = { tiles = {
"lwplayer_button_side.png", "lwplayer_button_side.png",
@@ -134,7 +133,7 @@ minetest.register_node ("lwcomponents:player_button", {
minetest.register_node ("lwcomponents:player_button_off", { minetest.register_node ("lwcomponents:player_button_off", {
description = "Player Button", description = S("Player Button"),
drawtype = "nodebox", drawtype = "nodebox",
tiles = { tiles = {
"lwplayer_button_side.png", "lwplayer_button_side.png",
@@ -184,7 +183,7 @@ minetest.register_node ("lwcomponents:player_button_off", {
minetest.register_node ("lwcomponents:player_button_on", { minetest.register_node ("lwcomponents:player_button_on", {
description = "Player Button", description = S("Player Button"),
drawtype = "nodebox", drawtype = "nodebox",
tiles = { tiles = {
"lwplayer_button_side.png", "lwplayer_button_side.png",

View File

@@ -97,13 +97,8 @@ local function punch (pos)
punched = true punched = true
end end
elseif object[i].get_luaentity and object[i]:get_luaentity () and elseif not utils.is_drop (object[i]) and object[i].get_pos
object[i]:get_luaentity ().name and and object[i]:get_pos () then
object[i]:get_luaentity ().name == "__builtin:item" then
-- don't punch drops
elseif object[i].get_pos and object[i]:get_pos () then
-- entity -- entity
if meta:get_string ("entities") == "true" then if meta:get_string ("entities") == "true" then
@@ -180,28 +175,19 @@ end
local function start_puncher (pos) local function start_puncher (pos)
local node = minetest.get_node (pos) local node = minetest.get_node (pos)
local meta = minetest.get_meta (pos)
if node and meta then if node then
if node.name == "lwcomponents:puncher" then if node.name == "lwcomponents:puncher" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:puncher_on" node.name = "lwcomponents:puncher_on"
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
update_form_spec (pos) update_form_spec (pos)
end
elseif node.name == "lwcomponents:puncher_locked" then elseif node.name == "lwcomponents:puncher_locked" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:puncher_locked_on" node.name = "lwcomponents:puncher_locked_on"
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
update_form_spec (pos) update_form_spec (pos)
end
end end
end end
@@ -211,28 +197,19 @@ end
local function stop_puncher (pos) local function stop_puncher (pos)
local node = minetest.get_node (pos) local node = minetest.get_node (pos)
local meta = minetest.get_meta (pos)
if node and meta then if node then
if node.name == "lwcomponents:puncher_on" then if node.name == "lwcomponents:puncher_on" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:puncher" node.name = "lwcomponents:puncher"
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
update_form_spec (pos) update_form_spec (pos)
end
elseif node.name == "lwcomponents:puncher_locked_on" then elseif node.name == "lwcomponents:puncher_locked_on" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:puncher_locked" node.name = "lwcomponents:puncher_locked"
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
update_form_spec (pos) update_form_spec (pos)
end
end end
end end
@@ -365,7 +342,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
minetest.remove_node (pos) minetest.remove_node (pos)
end end
@@ -506,7 +482,7 @@ minetest.register_node("lwcomponents:puncher", {
tiles = { "lwpuncher_face.png", "lwpuncher_face.png", "lwpuncher.png", tiles = { "lwpuncher_face.png", "lwpuncher_face.png", "lwpuncher.png",
"lwpuncher.png", "lwpuncher.png", "lwpuncher_face.png"}, "lwpuncher.png", "lwpuncher.png", "lwpuncher_face.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 }, groups = { cracky = 3, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -533,7 +509,7 @@ minetest.register_node("lwcomponents:puncher_locked", {
tiles = { "lwpuncher_face.png", "lwpuncher_face.png", "lwpuncher.png", tiles = { "lwpuncher_face.png", "lwpuncher_face.png", "lwpuncher.png",
"lwpuncher.png", "lwpuncher.png", "lwpuncher_face.png"}, "lwpuncher.png", "lwpuncher.png", "lwpuncher_face.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 }, groups = { cracky = 3, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -560,7 +536,7 @@ minetest.register_node("lwcomponents:puncher_on", {
tiles = { "lwpuncher_face_on.png", "lwpuncher_face_on.png", "lwpuncher.png", tiles = { "lwpuncher_face_on.png", "lwpuncher_face_on.png", "lwpuncher.png",
"lwpuncher.png", "lwpuncher.png", "lwpuncher_face_on.png"}, "lwpuncher.png", "lwpuncher.png", "lwpuncher_face_on.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1 }, groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -587,7 +563,7 @@ minetest.register_node("lwcomponents:puncher_locked_on", {
tiles = { "lwpuncher_face_on.png", "lwpuncher_face_on.png", "lwpuncher.png", tiles = { "lwpuncher_face_on.png", "lwpuncher_face_on.png", "lwpuncher.png",
"lwpuncher.png", "lwpuncher.png", "lwpuncher_face_on.png"}, "lwpuncher.png", "lwpuncher.png", "lwpuncher_face_on.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1 }, groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,

View File

@@ -13,7 +13,7 @@ CC BY-SA 3.0
Version Version
======= =======
0.1.26 0.1.28
Minetest Version Minetest Version
@@ -35,6 +35,7 @@ intllib
hopper hopper
digistuff digistuff
pipeworks pipeworks
lwwires
Installation Installation
@@ -66,7 +67,7 @@ Various components for mesecons and digilines.
* Conduit, connected in a circuit to move items. * Conduit, connected in a circuit to move items.
* Cannon, shoots an item on command with directional aiming (plus 3 shells). * Cannon, shoots an item on command with directional aiming (plus 3 shells).
* Double (optionally single) reach pistons and sticky pistons. * Double (optionally single) reach pistons and sticky pistons.
* Digiswitch, digilines controlled mesecons power. * Digilines Switch, digilines controlled mesecons power.
* Movefloor, similar to vertical mesecons movestone. * Movefloor, similar to vertical mesecons movestone.
* Camera, takes a representative image. * Camera, takes a representative image.
* Storage, indexed storage units. * Storage, indexed storage units.

View File

@@ -103,30 +103,21 @@ end
local function start_siren (pos) local function start_siren (pos)
local node = minetest.get_node (pos) local node = minetest.get_node (pos)
local meta = minetest.get_meta (pos)
if node and meta then if node then
if node.name == "lwcomponents:siren" then if node.name == "lwcomponents:siren" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:siren_on" node.name = "lwcomponents:siren_on"
stop_sound (pos) stop_sound (pos)
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
update_form_spec (pos) update_form_spec (pos)
end
elseif node.name == "lwcomponents:siren_locked" then elseif node.name == "lwcomponents:siren_locked" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:siren_locked_on" node.name = "lwcomponents:siren_locked_on"
stop_sound (pos) stop_sound (pos)
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
update_form_spec (pos) update_form_spec (pos)
end
end end
end end
@@ -136,34 +127,25 @@ end
local function stop_siren (pos) local function stop_siren (pos)
local node = minetest.get_node (pos) local node = minetest.get_node (pos)
local meta = minetest.get_meta (pos)
if node and meta then if node then
if node.name == "lwcomponents:siren_on" or if node.name == "lwcomponents:siren_on" or
node.name == "lwcomponents:siren_alarm" then node.name == "lwcomponents:siren_alarm" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:siren" node.name = "lwcomponents:siren"
minetest.get_node_timer (pos):stop () minetest.get_node_timer (pos):stop ()
stop_sound (pos) stop_sound (pos)
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
update_form_spec (pos) update_form_spec (pos)
end
elseif node.name == "lwcomponents:siren_locked_on" or elseif node.name == "lwcomponents:siren_locked_on" or
node.name == "lwcomponents:siren_locked_alarm" then node.name == "lwcomponents:siren_locked_alarm" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:siren_locked" node.name = "lwcomponents:siren_locked"
minetest.get_node_timer (pos):stop () minetest.get_node_timer (pos):stop ()
stop_sound (pos) stop_sound (pos)
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
update_form_spec (pos) update_form_spec (pos)
end
end end
end end
@@ -173,30 +155,21 @@ end
local function start_alarm (pos) local function start_alarm (pos)
local node = minetest.get_node (pos) local node = minetest.get_node (pos)
local meta = minetest.get_meta (pos)
if node and meta then if node then
if node.name == "lwcomponents:siren_on" then if node.name == "lwcomponents:siren_on" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:siren_alarm" node.name = "lwcomponents:siren_alarm"
minetest.get_node_timer (pos):start (sound_interval) minetest.get_node_timer (pos):start (sound_interval)
start_sound (pos) start_sound (pos)
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
end
elseif node.name == "lwcomponents:siren_locked_on" then elseif node.name == "lwcomponents:siren_locked_on" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:siren_locked_alarm" node.name = "lwcomponents:siren_locked_alarm"
minetest.get_node_timer (pos):start (sound_interval) minetest.get_node_timer (pos):start (sound_interval)
start_sound (pos) start_sound (pos)
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
end
end end
end end
@@ -206,30 +179,21 @@ end
local function stop_alarm (pos) local function stop_alarm (pos)
local node = minetest.get_node (pos) local node = minetest.get_node (pos)
local meta = minetest.get_meta (pos)
if node and meta then if node then
if node.name == "lwcomponents:siren_alarm" then if node.name == "lwcomponents:siren_alarm" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:siren_on" node.name = "lwcomponents:siren_on"
minetest.get_node_timer (pos):stop () minetest.get_node_timer (pos):stop ()
stop_sound (pos) stop_sound (pos)
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
end
elseif node.name == "lwcomponents:siren_locked_alarm" then elseif node.name == "lwcomponents:siren_locked_alarm" then
local meta = minetest.get_meta (pos)
if meta then
node.name = "lwcomponents:siren_locked_on" node.name = "lwcomponents:siren_locked_on"
minetest.get_node_timer (pos):stop () minetest.get_node_timer (pos):stop ()
stop_sound (pos) stop_sound (pos)
minetest.swap_node (pos, node) minetest.swap_node (pos, node)
end
end end
end end
@@ -365,7 +329,6 @@ local function on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
on_destruct (pos) on_destruct (pos)
minetest.remove_node (pos) minetest.remove_node (pos)
@@ -528,7 +491,7 @@ minetest.register_node("lwcomponents:siren", {
tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren.png", tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren.png",
"lwsiren.png", "lwsiren.png", "lwsiren.png"}, "lwsiren.png", "lwsiren.png", "lwsiren.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 }, groups = { cracky = 3, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -555,7 +518,7 @@ minetest.register_node("lwcomponents:siren_locked", {
tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren.png", tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren.png",
"lwsiren.png", "lwsiren.png", "lwsiren.png"}, "lwsiren.png", "lwsiren.png", "lwsiren.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3 }, groups = { cracky = 3, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -582,7 +545,7 @@ minetest.register_node("lwcomponents:siren_on", {
tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren_on.png", tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren_on.png",
"lwsiren_on.png", "lwsiren_on.png", "lwsiren_on.png"}, "lwsiren_on.png", "lwsiren_on.png", "lwsiren_on.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1 }, groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -609,7 +572,7 @@ minetest.register_node("lwcomponents:siren_locked_on", {
tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren_on.png", tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren_on.png",
"lwsiren_on.png", "lwsiren_on.png", "lwsiren_on.png"}, "lwsiren_on.png", "lwsiren_on.png", "lwsiren_on.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1 }, groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -636,7 +599,7 @@ minetest.register_node("lwcomponents:siren_alarm", {
tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren_alarm.png", tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren_alarm.png",
"lwsiren_alarm.png", "lwsiren_alarm.png", "lwsiren_alarm.png"}, "lwsiren_alarm.png", "lwsiren_alarm.png", "lwsiren_alarm.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1 }, groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,
@@ -664,7 +627,7 @@ minetest.register_node("lwcomponents:siren_locked_alarm", {
tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren_alarm.png", tiles = { "lwsiren_base.png", "lwsiren_base.png", "lwsiren_alarm.png",
"lwsiren_alarm.png", "lwsiren_alarm.png", "lwsiren_alarm.png"}, "lwsiren_alarm.png", "lwsiren_alarm.png", "lwsiren_alarm.png"},
is_ground_content = false, is_ground_content = false,
groups = { cracky = 3, not_in_creative_inventory = 1 }, groups = { cracky = 3, not_in_creative_inventory = 1, wires_connect = 1 },
sounds = default.node_sound_stone_defaults (), sounds = default.node_sound_stone_defaults (),
paramtype = "none", paramtype = "none",
param1 = 0, param1 = 0,

View File

@@ -35,6 +35,7 @@ mesecon.register_node (":lwcomponents:solid_conductor",
groups = { groups = {
dig_immediate = 2, dig_immediate = 2,
ud_param2_colorable = 1, ud_param2_colorable = 1,
wires_connect = 1
}, },
}, },
{ {
@@ -51,7 +52,8 @@ mesecon.register_node (":lwcomponents:solid_conductor",
groups = { groups = {
dig_immediate = 2, dig_immediate = 2,
ud_param2_colorable = 1, ud_param2_colorable = 1,
not_in_creative_inventory = 1 not_in_creative_inventory = 1,
wires_connect = 1
}, },
} }
) )
@@ -101,6 +103,7 @@ mesecon.register_node (":lwcomponents:solid_horizontal_conductor",
groups = { groups = {
dig_immediate = 2, dig_immediate = 2,
ud_param2_colorable = 1, ud_param2_colorable = 1,
wires_connect = 1
}, },
}, },
{ {
@@ -117,7 +120,8 @@ mesecon.register_node (":lwcomponents:solid_horizontal_conductor",
groups = { groups = {
dig_immediate = 2, dig_immediate = 2,
ud_param2_colorable = 1, ud_param2_colorable = 1,
not_in_creative_inventory = 1 not_in_creative_inventory = 1,
wires_connect = 1
}, },
} }
) )

View File

@@ -87,7 +87,6 @@ local function unit_on_blast (pos, intensity)
end end
end end
on_destruct (pos)
minetest.remove_node (pos) minetest.remove_node (pos)
else -- intensity < 1.0 else -- intensity < 1.0
@@ -113,9 +112,7 @@ local function unit_on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
on_destruct (pos)
minetest.remove_node (pos) minetest.remove_node (pos)
end end
end end
@@ -312,7 +309,7 @@ local function get_stock_list (pos)
for k, v in pairs (inv_list) do for k, v in pairs (inv_list) do
local stack = ItemStack (k) local stack = ItemStack (k)
local name = stack:get_name () local name = stack:get_name ()
local description = nil local description
local custom = false local custom = false
local pallet_index = nil local pallet_index = nil
local tstack = stack:to_table () local tstack = stack:to_table ()
@@ -704,8 +701,6 @@ local function get_formspec_list (pos)
for k, v in pairs (inv_list) do for k, v in pairs (inv_list) do
local description = k local description = k
local stack = ItemStack (k) local stack = ItemStack (k)
local smeta = stack:get_meta ()
if stack:get_short_description () ~= "" then if stack:get_short_description () ~= "" then
description = stack:get_short_description () description = stack:get_short_description ()
@@ -942,7 +937,6 @@ local function indexer_on_blast (pos, intensity)
end end
end end
on_destruct (pos)
minetest.remove_node (pos) minetest.remove_node (pos)
else -- intensity < 1.0 else -- intensity < 1.0
@@ -978,9 +972,7 @@ local function indexer_on_blast (pos, intensity)
local stack = ItemStack (items[1]) local stack = ItemStack (items[1])
if stack then if stack then
preserve_metadata (pos, node, meta, { stack })
utils.item_drop (stack, nil, pos) utils.item_drop (stack, nil, pos)
on_destruct (pos)
minetest.remove_node (pos) minetest.remove_node (pos)
end end
end end

View File

@@ -1,4 +1,4 @@
local utils, mod_storage = ... local utils = ...