commit | author | age
|
ee0765
|
1 |
|
be2f30
|
2 |
local S = technic.getter |
ee0765
|
3 |
|
83c649
|
4 |
local cable_tier = {} |
S |
5 |
|
|
6 |
function technic.is_tier_cable(name, tier) |
|
7 |
return cable_tier[name] == tier |
|
8 |
end |
|
9 |
|
|
10 |
function technic.get_cable_tier(name) |
|
11 |
return cable_tier[name] |
|
12 |
end |
|
13 |
|
d3f40e
|
14 |
local function clear_networks(pos) |
CK |
15 |
local positions = { |
|
16 |
{x=pos.x+1, y=pos.y, z=pos.z}, |
|
17 |
{x=pos.x-1, y=pos.y, z=pos.z}, |
|
18 |
{x=pos.x, y=pos.y+1, z=pos.z}, |
|
19 |
{x=pos.x, y=pos.y-1, z=pos.z}, |
|
20 |
{x=pos.x, y=pos.y, z=pos.z+1}, |
|
21 |
{x=pos.x, y=pos.y, z=pos.z-1}} |
|
22 |
for _,connected_pos in pairs(positions) do |
088eea
|
23 |
local net = technic.cables[minetest.hash_node_position(connected_pos)] |
CK |
24 |
if net and technic.networks[net] then |
|
25 |
for _,v in pairs(technic.networks[net].all_nodes) do |
|
26 |
local pos1 = minetest.hash_node_position(v) |
|
27 |
technic.cables[pos1] = nil |
|
28 |
end |
|
29 |
technic.networks[net] = nil |
d3f40e
|
30 |
end |
CK |
31 |
end |
83c649
|
32 |
end |
ee0765
|
33 |
|
S |
34 |
function technic.register_cable(tier, size) |
|
35 |
local ltier = string.lower(tier) |
83c649
|
36 |
cable_tier["technic:"..ltier.."_cable"] = tier |
ee0765
|
37 |
|
83c649
|
38 |
local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2} |
ee0765
|
39 |
|
83c649
|
40 |
local node_box = { |
S |
41 |
type = "connected", |
|
42 |
fixed = {-size, -size, -size, size, size, size}, |
|
43 |
connect_top = {-size, -size, -size, size, 0.5, size}, -- y+ |
|
44 |
connect_bottom = {-size, -0.5, -size, size, size, size}, -- y- |
|
45 |
connect_front = {-size, -size, -0.5, size, size, size}, -- z- |
|
46 |
connect_back = {-size, -size, size, size, size, 0.5 }, -- z+ |
|
47 |
connect_left = {-0.5, -size, -size, size, size, size}, -- x- |
|
48 |
connect_right = {-size, -size, -size, 0.5, size, size}, -- x+ |
|
49 |
} |
ee0765
|
50 |
|
83c649
|
51 |
minetest.register_node("technic:"..ltier.."_cable", { |
S |
52 |
description = S("%s Cable"):format(tier), |
|
53 |
tiles = {"technic_"..ltier.."_cable.png"}, |
|
54 |
inventory_image = "technic_"..ltier.."_cable_wield.png", |
|
55 |
wield_image = "technic_"..ltier.."_cable_wield.png", |
|
56 |
groups = groups, |
|
57 |
sounds = default.node_sound_wood_defaults(), |
|
58 |
drop = "technic:"..ltier.."_cable", |
|
59 |
paramtype = "light", |
|
60 |
sunlight_propagates = true, |
|
61 |
drawtype = "nodebox", |
|
62 |
node_box = node_box, |
|
63 |
connects_to = {"technic:"..ltier.."_cable", |
|
64 |
"group:technic_"..ltier, "group:technic_all_tiers"}, |
|
65 |
on_construct = clear_networks, |
|
66 |
on_destruct = clear_networks, |
|
67 |
}) |
ee0765
|
68 |
end |
S |
69 |
|
83c649
|
70 |
|
S |
71 |
local function clear_nets_if_machine(pos, node) |
ee0765
|
72 |
for tier, machine_list in pairs(technic.machines) do |
18cae7
|
73 |
if machine_list[node.name] ~= nil then |
d3f40e
|
74 |
return clear_networks(pos) |
ee0765
|
75 |
end |
S |
76 |
end |
|
77 |
end |
|
78 |
|
83c649
|
79 |
minetest.register_on_placenode(clear_nets_if_machine) |
S |
80 |
minetest.register_on_dignode(clear_nets_if_machine) |
ee0765
|
81 |
|