New everything

master
Aurailus 2018-02-12 23:29:23 -08:00
parent e67022c63a
commit eb2a57eb35
37 changed files with 592 additions and 911 deletions

View File

@ -1 +0,0 @@
Machinery! The future of automation mods!

139
energy/energy-transfer.lua Normal file
View File

@ -0,0 +1,139 @@
function tech_reborn.getNodeCapacity(pos)
if minetest.get_item_group(minetest.get_node(pos).name, "wire") > 0 then
local system = minetest.get_meta(pos):get_string("sys_id")
if not system or system == "" or not tech_reborn.wire.systems[system] then return false end
local capacity = tech_reborn.wire.systems[system].capacity - tech_reborn.wire.systems[system].power
return capacity
end
end
function tech_reborn.getNodeEnergy(pos)
if minetest.get_item_group(minetest.get_node(pos).name, "wire") > 0 then
local system = minetest.get_meta(pos):get_string("sys_id")
if not system or system == "" or not tech_reborn.wire.systems[system] then return false end
return tech_reborn.wire.systems[system].power
end
end
--Get Node Stored in adjacent Wire Nodes
function tech_reborn.getAdjacentEnergy(pos)
local adj_nodes = tech_reborn.getAdjacent(pos)
local total_power = 0
local systems = {}
for i = 1, #adj_nodes do
if minetest.get_item_group(minetest.get_node(adj_nodes[i]).name, "wire") > 0 then
local system = minetest.get_meta(adj_nodes[i]):get_string("sys_id")
if not system or system == "" or not tech_reborn.wire.systems[system] then return false end
local found = false
for i = 1, #systems do
if system == systems[i] then found = true; break end
end
if not found then
table.insert(systems, system)
local power = tech_reborn.getNodeEnergy(adj_nodes[i])
if power then total_power = total_power + power end
end
end
end
return total_power
end
function tech_reborn.pushNodeEnergy(pos, amount)
if minetest.get_item_group(minetest.get_node(pos).name, "wire") > 0 and
minetest.get_item_group(minetest.get_node(pos).name, "import") > 0 then
local system = minetest.get_meta(pos):get_string("sys_id")
if not system or system == "" or not tech_reborn.wire.systems[system] then return false end
local capacity = tech_reborn.getNodeCapacity(pos)
if (capacity > amount) then
tech_reborn.wire.systems[system].power = tech_reborn.wire.systems[system].power + amount
return 0
else
tech_reborn.wire.systems[system].power = tech_reborn.wire.systems[system].capacity
return amount - capacity
end
end
return amount
end
function tech_reborn.pushAdjacentEnergy(pos, amount)
local adj_nodes = tech_reborn.getAdjacent(pos)
local systems = {}
local count = 0
local leftover = 0
for i = 1, #adj_nodes do
if not tech_reborn.getNodeCapacity(adj_nodes[i]) then
adj_nodes[i] = false
else
count = count + 1
end
end
for i = 1, #adj_nodes do
if adj_nodes[i] then
leftover = leftover + tech_reborn.pushNodeEnergy(adj_nodes[i], math.floor(amount/count))
end
end
if leftover > 0 then
for i = 1, #adj_nodes do
if adj_nodes[i] then
leftover = tech_reborn.pushNodeEnergy(adj_nodes[i], leftover)
end
end
end
return leftover
end
function tech_reborn.pullNodeEnergy(pos, amount)
if minetest.get_item_group(minetest.get_node(pos).name, "wire") > 0 and
minetest.get_item_group(minetest.get_node(pos).name, "export") > 0 then
local system = minetest.get_meta(pos):get_string("sys_id")
if not system or system == "" or not tech_reborn.wire.systems[system] then return false end
local available = tech_reborn.getNodeEnergy(pos)
if (available > amount) then
tech_reborn.wire.systems[system].power = tech_reborn.wire.systems[system].power - amount
return amount
else
tech_reborn.wire.systems[system].power = 0
return available
end
end
return 0
end
function tech_reborn.pullAdjacentEnergy(pos, amount)
local adj_nodes = tech_reborn.getAdjacent(pos)
local systems = {}
local count = 0
local got = 0
for i = 1, #adj_nodes do
if not tech_reborn.getNodeCapacity(adj_nodes[i]) then
adj_nodes[i] = false
else
count = count + 1
end
end
for i = 1, #adj_nodes do
if adj_nodes[i] then
got = got + tech_reborn.pullNodeEnergy(adj_nodes[i], math.floor(amount/count))
end
end
if got < amount then
for i = 1, #adj_nodes do
if adj_nodes[i] then
got = got + tech_reborn.pullNodeEnergy(adj_nodes[i], amount - got)
end
end
end
return got
end

28
energy/file.lua Normal file
View File

@ -0,0 +1,28 @@
tech_reborn.wire.systems = {}
tech_reborn.wire.systemfile = minetest.get_worldpath() .. "/tech_reborn_systems.mt"
local input = io.open(tech_reborn.wire.systemfile, "r")
local filedata = nil
if input then
filedata = input:read('*all')
end
if filedata and filedata ~= "" then
tech_reborn.wire.systems = minetest.deserialize(filedata)
io.close(input)
end
function tech_reborn.wire.save_systems()
local output = io.open(tech_reborn.wire.systemfile, "w")
output:write(minetest.serialize(tech_reborn.wire.systems))
io.close(output)
end
local function save_loop()
tech_reborn.wire.save_systems()
minetest.after(2, save_loop)
end
minetest.after(0, save_loop)
minetest.register_on_shutdown(function()
tech_reborn.wire.save_systems()
end)

128
energy/functions.lua Normal file
View File

@ -0,0 +1,128 @@
function tech_reborn.wire.changeState(pos, node, clicker, itemstack, pointed_thing)
if clicker:get_wielded_item():get_name() == "tech_reborn:wrench" then
local def = minetest.registered_nodes[minetest.get_node(pos).name]
if not def then return false end
local estate = def._export_state
if estate == "none" then mstring = "_import"
elseif estate == "import" then mstring = "_export"
elseif estate == "export" then mstring = "" end
minetest.swap_node(pos, {name = def._base_node .. mstring})
tech_reborn.wire.recalcModels(pos)
else
minetest.item_place_node(itemstack, clicker, pointed_thing)
end
end
function tech_reborn.wire.constructWire(pos)
tech_reborn.wire.recalcModels(pos)
tech_reborn.wire.createWire(pos)
end
function tech_reborn.wire.consumeSystem(newSys, oldSys)
if newSys and newSys ~= "" and oldSys and oldSys ~= "" and
tech_reborn.wire.systems[newSys] ~= nil and tech_reborn.wire.systems[oldSys] ~= nil then
local children = tech_reborn.wire.systems[oldSys].children
local altPower = tech_reborn.wire.systems[oldSys].power
tech_reborn.wire.systems[newSys].power = tech_reborn.wire.systems[newSys].power + altPower
tech_reborn.wire.systems[oldSys] = nil
for spos,_ in pairs(children) do
pos = tech_reborn.deserializepos(spos)
tech_reborn.wire.systems[newSys].children[spos] = true
minetest.get_meta(pos):set_string("sys_id", newSys)
end
tech_reborn.wire.save_systems()
return true
end
return false
end
function tech_reborn.wire.createWire(pos)
--Check Adjacent Nodes
local adjacent = tech_reborn.getAdjacent(pos)
local found = false
for i = 1, #adjacent do
local node = adjacent[i]
if minetest.get_item_group(minetest.get_node(node).name, "wire") > 0 then
local id = minetest.get_meta(node):get_string("sys_id")
if id and id ~= "" then
if not found then
minetest.get_meta(pos):set_string("sys_id", id)
tech_reborn.wire.systems[id].children[tech_reborn.serializepos(pos)] = true
tech_reborn.wire.save_systems()
found = id
else
if id ~= found then
tech_reborn.wire.consumeSystem(found, id)
end
end
end
end
end
if found then return true end
--No Adjacent Nodes to Pair to
local id = tostring(minetest.get_us_time())
minetest.get_meta(pos):set_string("sys_id", id)
tech_reborn.wire.systems[id] = {
id = id,
children = {},
power = 0,
capacity = 1000
}
tech_reborn.wire.systems[id].children[tech_reborn.serializepos(pos)] = true
tech_reborn.wire.save_systems()
return true
end
function tech_reborn.wire.removeWire(pos)
local id = minetest.get_meta(pos):get_string("sys_id")
minetest.after(0, function(pos, id)
tech_reborn.wire.recalcModels(pos)
if id and id ~= "" then
if tech_reborn.wire.systems[id] ~= nil then
local power = tech_reborn.wire.systems[id].power
local children = tech_reborn.wire.systems[id].children
children[tech_reborn.serializepos(pos)] = nil
tech_reborn.wire.systems[id] = nil
for spos,_ in pairs(children) do
spos = tech_reborn.deserializepos(spos)
minetest.get_meta(spos):set_string("sys_id", "")
end
for spos,_ in pairs(children) do
spos = tech_reborn.deserializepos(spos)
tech_reborn.wire.createWire(spos)
end
local split = 0
local adjacent = tech_reborn.getAdjacent(pos)
for i = 1, #adjacent do
if minetest.get_item_group(minetest.get_node(adjacent[i]).name, "wire") <= 0 then
adjacent[i] = false
else
split = split + 1
end
end
power = math.floor(power / split)
for i = 1, #adjacent do
if adjacent[i] then
tech_reborn.wire.systems[minetest.get_meta(adjacent[i]):get_string("sys_id")].power =
tech_reborn.wire.systems[minetest.get_meta(adjacent[i]):get_string("sys_id")].power + power
end
end
tech_reborn.wire.save_systems()
end
end
end, pos, id)
end

20
energy/init.lua Normal file
View File

@ -0,0 +1,20 @@
tech_reborn.wire = {};
local path = minetest.get_modpath("tech_reborn") .. "/energy"
dofile(path .. "/model.lua")
dofile(path .. "/file.lua")
dofile(path .. "/functions.lua")
dofile(path .. "/energy-transfer.lua")
dofile(path .. "/nodes.lua")
--DEBUG--
--Disable in production
-- minetest.register_abm({
-- label = "DEBUG - Wires",
-- nodenames = {"group:wire"},
-- interval = 0.2,
-- chance = 1,
-- action = function(pos)
-- minetest.get_meta(pos):set_string("infotext", minetest.get_meta(pos):get_string("sys_id"))
-- end,
-- })

View File

@ -1,100 +1,109 @@
function machinery.wire.setModel(pos)
function tech_reborn.wire.recalcModels(pos)
local update = tech_reborn.getAdjacent(pos)
table.insert(update, pos)
for i = 1, #update do
if minetest.get_item_group(minetest.get_node(update[i]).name, "wire") > 0 then
tech_reborn.wire.setModel(update[i])
end
end
end
function tech_reborn.wire.setModel(pos)
local wires = {}
local adjacent = machinery.getAdjacent(pos)
local adjacent = tech_reborn.getAdjacent(pos)
local def = minetest.registered_nodes[minetest.get_node(pos).name]
if not def then return false end
base = def._base_name
if not base then return false end
for i = 3, #adjacent do
if minetest.get_item_group(minetest.get_node(adjacent[i]).name, "wire") > 0 then
if minetest.get_item_group(minetest.get_node(adjacent[i]).name, "wired_node") > 0 then
wires[i - 2] = true
else wires[i - 2] = false end
end
local suffix = ""
if minetest.get_item_group(minetest.get_node(adjacent[1]).name, "wire") > 0 then
if minetest.get_item_group(minetest.get_node(adjacent[2]).name, "wire") > 0 then
if minetest.get_item_group(minetest.get_node(adjacent[1]).name, "wired_node") > 0 then
if minetest.get_item_group(minetest.get_node(adjacent[2]).name, "wired_node") > 0 then
suffix = "_ud"
else suffix = "_u" end
elseif minetest.get_item_group(minetest.get_node(adjacent[2]).name, "wire") > 0 then
elseif minetest.get_item_group(minetest.get_node(adjacent[2]).name, "wired_node") > 0 then
suffix = "_d"
end
print(suffix)
if dump(wires) == dump({false, false, false, false}) then --Dot
minetest.swap_node(pos, {name = "machinery:wire" .. suffix})
minetest.swap_node(pos, {name = base .. suffix})
elseif dump(wires) == dump({true, true, false, false}) then --Line A
local facedir = minetest.dir_to_facedir(vector.new(0, 0, 1))
minetest.swap_node(pos, {name = "machinery:wire_line" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_line" .. suffix, param2 = facedir})
elseif dump(wires) == dump({false, false, true, true}) then --Line B
local facedir = minetest.dir_to_facedir(vector.new(1, 0, 0))
minetest.swap_node(pos, {name = "machinery:wire_line" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_line" .. suffix, param2 = facedir})
elseif dump(wires) == dump({true, true, true, true}) then --Cross
minetest.swap_node(pos, {name = "machinery:wire_cross" .. suffix})
minetest.swap_node(pos, {name = base .. "_cross" .. suffix})
elseif dump(wires) == dump({true, true, true, false}) then --Funnel Z-
local facedir = minetest.dir_to_facedir(vector.new(0, 0, -1))
minetest.swap_node(pos, {name = "machinery:wire_funnel" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_funnel" .. suffix, param2 = facedir})
elseif dump(wires) == dump({true, true, false, true}) then --Funnel Z+
local facedir = minetest.dir_to_facedir(vector.new(0, 0, 1))
minetest.swap_node(pos, {name = "machinery:wire_funnel" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_funnel" .. suffix, param2 = facedir})
elseif dump(wires) == dump({true, false, true, true}) then --Funnel X-
local facedir = minetest.dir_to_facedir(vector.new(-1, 0, 0))
minetest.swap_node(pos, {name = "machinery:wire_funnel" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_funnel" .. suffix, param2 = facedir})
elseif dump(wires) == dump({false, true, true, true}) then --Funnel X+
local facedir = minetest.dir_to_facedir(vector.new(1, 0, 0))
minetest.swap_node(pos, {name = "machinery:wire_funnel" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_funnel" .. suffix, param2 = facedir})
elseif dump(wires) == dump({true, false, false, false}) then --End X+
local facedir = minetest.dir_to_facedir(vector.new(0, 0, 1))
minetest.swap_node(pos, {name = "machinery:wire_end" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_ending" .. suffix, param2 = facedir})
elseif dump(wires) == dump({false, true, false, false}) then --End X-
local facedir = minetest.dir_to_facedir(vector.new(0, 0, -1))
minetest.swap_node(pos, {name = "machinery:wire_end" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_ending" .. suffix, param2 = facedir})
elseif dump(wires) == dump({false, false, true, false}) then --End Z+
local facedir = minetest.dir_to_facedir(vector.new(-1, 0, 0))
minetest.swap_node(pos, {name = "machinery:wire_end" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_ending" .. suffix, param2 = facedir})
elseif dump(wires) == dump({false, false, false, true}) then --End Z-
local facedir = minetest.dir_to_facedir(vector.new(1, 0, 0))
minetest.swap_node(pos, {name = "machinery:wire_end" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_ending" .. suffix, param2 = facedir})
elseif dump(wires) == dump({true, false, true, false}) then --Corner 1
local facedir = minetest.dir_to_facedir(vector.new(0, 0, -1))
minetest.swap_node(pos, {name = "machinery:wire_corner_1" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_corner" .. suffix, param2 = facedir})
elseif dump(wires) == dump({true, false, false, true}) then --Corner 2
local facedir = minetest.dir_to_facedir(vector.new(-1, 0, 0))
minetest.swap_node(pos, {name = "machinery:wire_corner_1" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_corner" .. suffix, param2 = facedir})
elseif dump(wires) == dump({false, true, true, false}) then --Corner 3
local facedir = minetest.dir_to_facedir(vector.new(1, 0, 0))
minetest.swap_node(pos, {name = "machinery:wire_corner_1" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_corner" .. suffix, param2 = facedir})
elseif dump(wires) == dump({false, true, false, true}) then --Corner 4
local facedir = minetest.dir_to_facedir(vector.new(0, 0, 1))
minetest.swap_node(pos, {name = "machinery:wire_corner_1" .. suffix, param2 = facedir})
minetest.swap_node(pos, {name = base .. "_corner" .. suffix, param2 = facedir})
end
end

145
energy/nodes.lua Normal file
View File

@ -0,0 +1,145 @@
local directions = {
_ = {{-1, -1, -1, 1, 1, 1}},
_ending = {{-1, -1, -1, 0.5, 1, 1}},
_line = {{-0.5, -1, -1, 0.5, 1, 1}},
_corner = {
{-0.5, -1, -1, 1, 1, 1},
{-1, -1, -0.5, 1, 1, 1}},
_funnel = {
{-0.5, -1, -1, 0.5, 1, 1},
{-1, -1, -0.5, 1, 1, 1}},
_cross = {
{-0.5, -1, -1, 0.5, 1, 1},
{-1, -1, -0.5, 1, 1, 0.5}}
}
local heights = {
_ = {},
_d = {-1, -0.5, -1, 1, 1, 1},
_u = {-1, -1, -1, 1, 0.5, 1},
_ud = {-1, -0.5, -1, 1, 0.5, 1}
}
function tech_reborn.register_wires(name, data)
-- register_wire(name, data, nodebox, visible) -- Base Node
-- -- Add Nubs
-- table.insert(nodebox, {-data.width-0.0625, -data.width-0.0625, -data.width-0.0625,
-- data.width+0.0625, data.width+0.0625, data.width+0.0625})
-- local tex = data.texture
-- data.tex_insulated = tex .. "^tech_reborn_import_6"
-- register_wire(name .. "_import", data, nodebox, visible)
-- local tex = data.texture
-- data.texture = tex .. "^tech_reborn_export_6"
-- register_wire(name .. "_export", data, nodebox, visible)
for insulated = 0, 1 do
local tex = data.tex_base
if insulated == 1 then
name = name .. "_insulated"
tex = data.tex_insulated
data.size = data.size + 2
end
for hname, hbox in pairs(heights) do
for dname, dbox in pairs(directions) do
for mode = 0, 2 do
local mstring = ""
local estate = "none"
local inexoverlay = ""
local nodebox = table.copy(dbox)
table.insert(nodebox, table.copy(hbox))
local groups = {oddly_breakable_by_hand = 1, wire = 1, snappy = 3, wired_node = 1}
-- if not visible then
-- groups.not_in_creative_inventory = 1
-- end
groups[data.voltage] = 1
if hname == "_" then hname = "" end
if dname == "_" then dname = "" end
if mode > 0 then
table.insert(nodebox, {-(data.size+2)/16/2, -(data.size+2)/16/2, -(data.size+2)/16/2,
(data.size+2)/16/2, (data.size+2)/16/2, (data.size+2)/16/2})
end
if mode == 1 then
mstring = "_import"
estate = "import"
groups.import = 1
inexoverlay = "^tech_reborn_import_" .. (data.size+2) .. ".png"
elseif mode == 2 then
mstring = "_export"
estate = "export"
groups.export = 1
inexoverlay = "^tech_reborn_export_" .. (data.size+2) .. ".png"
end
local cname = name .. mstring .. dname .. hname
--Replace 1 with width values
for i = 1, #nodebox do
for j = 1, #nodebox[i] do
local val = nodebox[i][j]
if val == 1 then val = data.size/16/2
elseif val == -1 then val = -data.size/16/2 end
nodebox[i][j] = val
end
end
minetest.register_node("tech_reborn:" .. cname, {
description = data.description,
tiles = {tex .. inexoverlay},
groups = groups,
sounds = default.node_sound_metal_defaults(),
on_construct = tech_reborn.wire.constructWire,
on_destruct = tech_reborn.wire.removeWire,
on_rightclick = tech_reborn.wire.changeState,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = nodebox
},
_base_node = "tech_reborn:" .. name,
_base_name = "tech_reborn:" .. name .. mstring,
_export_state = estate,
_voltage = data.voltage,
drop = "tech_reborn:" .. name .. "_line",
node_placement_prediction = "tech_reborn:" .. name,
})
end
end
end
end
end
tech_reborn.register_wires("copper_wire", {
description = "Insulated Copper Wire (LV)",
base_node = "tech_reborn:insulated_copper_wire",
voltage = "lv",
tex_insulated = "tech_reborn_lv_wire.png",
tex_base = "tech_reborn_copper_wire.png",
damage_for_second = 0,
size = 2
})
tech_reborn.register_wires("gold_wire", {
description = "Insulated Gold Wire (MV)",
base_node = "tech_reborn:insulated_gold_wire",
voltage = "mv",
tex_insulated = "tech_reborn_mv_wire.png",
tex_base = "tech_reborn_gold_wire.png",
damage_for_second = 0,
size = 4
})

View File

@ -2,14 +2,14 @@
-- SERIALIZATION FUNCTIONS
-- Turns position vector in string format, eg "10,25,-12" (x = 10, y = 25, z = -12)
--
function machinery.deserializepos(posString)
function tech_reborn.deserializepos(posString)
local x = posString:sub(1, posString:find(",", 1, true) - 1)
local y = posString:sub(x:len() + 2, posString:find(",", x:len() + 2) - 1, true)
local z = posString:sub(y:len() + 1 + x:len() + 2, posString:find(",", x:len() + 1 + y:len() + 2), true)
return vector.new(tonumber(x), tonumber(y), tonumber(z))
end
function machinery.serializepos(pos)
function tech_reborn.serializepos(pos)
return pos.x..","..pos.y..","..pos.z
end
@ -17,7 +17,7 @@ end
-- GET ADJACENT
-- Return adjacent nodes
--
function machinery.getAdjacent(pos)
function tech_reborn.getAdjacent(pos)
return {
vector.new(pos.x, pos.y + 1, pos.z),
vector.new(pos.x, pos.y - 1, pos.z),
@ -26,105 +26,4 @@ function machinery.getAdjacent(pos)
vector.new(pos.x, pos.y, pos.z + 1),
vector.new(pos.x, pos.y, pos.z - 1)
}
end
--
-- ME Functions
-- Functions to modify energy in wires
--
function machinery.pullAdjacentME(machineNode, amount)
local adj_nodes = machinery.getAdjacent(machineNode)
local systems = {}
--Find systems in adjacent nodes
for i = 1, #adj_nodes do
if minetest.get_node(adj_nodes[i]).name == "machinery:wire" or
minetest.get_node(adj_nodes[i]).name == "machinery:wire_controller" then
local system = minetest.get_meta(adj_nodes[i]):get_string("system")
if not system or system == "" then return false end
local found = false
for i = 1, #systems do
if machinery.serializepos(systems[i]) == system then found = true end
end
if not found then table.insert(systems, machinery.deserializepos(system)) end
end
end
--If system doesn't have the capacity then remove it
for i = 1, #systems do
if minetest.get_meta(systems[i]):get_int("system_me") < amount then
table.remove(systems, i)
end
end
--Pull power from system and return state
if #systems > 0 then
for i = 1, #systems do
minetest.get_meta(systems[i]):set_int("system_me", minetest.get_meta(systems[i]):get_int("system_me") - amount/#systems)
end
end
if amount > 0 then return amount end
return false
end
-- function machinery.pullNodeME
function machinery.pushAdjacentME(machineNode, amount)
local adj_nodes = machinery.getAdjacent(machineNode)
local systems = {}
--Find systems in adjacent nodes
for i = 1, #adj_nodes do
if minetest.get_node(adj_nodes[i]).name == "machinery:wire" or
minetest.get_node(adj_nodes[i]).name == "machinery:wire_controller" then
local system = minetest.get_meta(adj_nodes[i]):get_string("system")
if not system or system == "" then return false end
local found = false
for i = 1, #systems do
if machinery.serializepos(systems[i]) == system then found = true end
end
if not found then table.insert(systems, machinery.deserializepos(system)) end
end
end
--If system doesn't have the capacity then remove it
for i = 1, #systems do
if minetest.get_meta(systems[i]):get_int("me_capacity") - minetest.get_meta(systems[i]):get_int("system_me") < amount then
table.remove(systems, i)
end
end
--Push power from system and return state
if #systems > 0 then
for i = 1, #systems do
minetest.get_meta(systems[i]):set_int("system_me", minetest.get_meta(systems[i]):get_int("system_me") + amount/#systems)
end
end
if amount > 0 then return amount end
return false
end
function machinery.checkAdjacentME(machineNode)
local adj_nodes = machinery.getAdjacent(machineNode)
local systems = {}
--Find systems in adjacent nodes
for i = 1, #adj_nodes do
if minetest.get_node(adj_nodes[i]).name == "machinery:wire" or
minetest.get_node(adj_nodes[i]).name == "machinery:wire_controller" then
local system = minetest.get_meta(adj_nodes[i]):get_string("system")
if not system or system == "" then return false end
local found = false
for i = 1, #systems do
if machinery.serializepos(systems[i]) == system then found = true end
end
if not found then table.insert(systems, machinery.deserializepos(system)) end
end
end
--Calculate power
local power = 0
for i = 1, #systems do
power = power + minetest.get_meta(systems[i]):get_int("system_me")
end
return power
end

View File

@ -1,6 +1,7 @@
machinery = {}
tech_reborn = {}
local path = minetest.get_modpath('machinery')
dofile(path .. "/wires/init.lua")
local path = minetest.get_modpath('tech_reborn')
dofile(path .. "/energy/init.lua")
dofile(path .. "/helpers.lua")
dofile(path .. "/machines/init.lua")
dofile(path .. "/tool/init.lua")

View File

@ -1,18 +1,23 @@
minetest.register_node("machinery:machinery_battery", {
minetest.register_node("tech_reborn:tech_reborn_battery", {
description = "Battery",
tiles = {
"machinery_machine.png",
"machinery_machine.png",
"machinery_machine.png^machinery_battery.png",
"machinery_machine.png^machinery_battery.png",
"machinery_machine.png^machinery_battery.png",
"machinery_machine.png^machinery_battery.png",
"tech_reborn_machine.png",
"tech_reborn_machine.png",
"tech_reborn_machine.png^tech_reborn_battery.png",
"tech_reborn_machine.png^tech_reborn_battery.png",
"tech_reborn_machine.png^tech_reborn_battery.png",
"tech_reborn_machine.png^tech_reborn_battery.png",
},
paramtype2 = "facedir",
is_ground_content = true,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, machine = 1},
on_construct = function(pos)
tech_reborn.wire.recalcModels(pos)
end,
after_destruct = function(pos)
tech_reborn.wire.recalcModels(pos)
end,
groups = {cracky = 1, oddly_breakable_by_hand = 1, machine = 1, wired_node = 1},
sounds = default.node_sound_metal_defaults(),
machinery_update = function(pos)
machinery.pushAdjacentME(pos, 50)
machine_update = function(pos)
tech_reborn.pushAdjacentEnergy(pos, 50)
end,
})

35
machines/creative.lua Normal file
View File

@ -0,0 +1,35 @@
minetest.register_node("tech_reborn:tech_reborn_creative_emitter", {
description = "Creative Power Emitter",
tiles = {
"tech_reborn_machine.png^tech_reborn_creative_emitter.png",
},
on_construct = function(pos)
tech_reborn.wire.recalcModels(pos)
end,
after_destruct = function(pos)
tech_reborn.wire.recalcModels(pos)
end,
groups = {cracky = 1, oddly_breakable_by_hand = 1, machine = 1, wired_node = 1, dig_immediate = 3},
sounds = default.node_sound_metal_defaults(),
machine_update = function(pos)
tech_reborn.pushAdjacentEnergy(pos, 50)
end,
})
minetest.register_node("tech_reborn:tech_reborn_creative_consumer", {
description = "Creative Power Consumer",
tiles = {
"tech_reborn_machine.png^tech_reborn_creative_consumer.png",
},
on_construct = function(pos)
tech_reborn.wire.recalcModels(pos)
end,
after_destruct = function(pos)
tech_reborn.wire.recalcModels(pos)
end,
groups = {cracky = 1, oddly_breakable_by_hand = 1, machine = 1, wired_node = 1, dig_immediate = 3},
sounds = default.node_sound_metal_defaults(),
machine_update = function(pos)
tech_reborn.pullAdjacentEnergy(pos, 50)
end,
})

View File

@ -1,13 +1,14 @@
local path = minetest.get_modpath("machinery") .. "/machines"
local path = minetest.get_modpath("tech_reborn") .. "/machines"
dofile(path .. "/monitor.lua")
dofile(path .. "/battery.lua")
dofile(path .. "/creative.lua")
minetest.register_abm({
nodenames = {"group:machine"},
interval = 0.5,
interval = 0.1,
chance = 1,
action = function(pos)
minetest.registered_nodes[minetest.get_node(pos).name].machinery_update(pos)
minetest.registered_nodes[minetest.get_node(pos).name].machine_update(pos)
end,
})

View File

@ -1,19 +1,24 @@
minetest.register_node("machinery:machine_monitor", {
minetest.register_node("tech_reborn:machine_monitor", {
description = "Monitor",
tiles = {
"machinery_machine.png",
"machinery_machine.png",
"machinery_machine.png",
"machinery_machine.png",
"machinery_machine.png",
"machinery_machine.png^machinery_monitor.png",
"tech_reborn_machine.png",
"tech_reborn_machine.png",
"tech_reborn_machine.png",
"tech_reborn_machine.png",
"tech_reborn_machine.png",
"tech_reborn_machine.png^tech_reborn_monitor.png",
},
paramtype2 = "facedir",
is_ground_content = true,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, machine = 1},
on_construct = function(pos)
tech_reborn.wire.recalcModels(pos)
end,
after_destruct = function(pos)
tech_reborn.wire.recalcModels(pos)
end,
groups = {cracky = 1, oddly_breakable_by_hand = 1, machine = 1, wired_node = 1},
sounds = default.node_sound_metal_defaults(),
machinery_update = function(pos)
local power = machinery.checkAdjacentME(pos)
machine_update = function(pos)
local power = tech_reborn.getAdjacentEnergy(pos)
if power == false then power = 0 end
minetest.get_meta(pos):set_string("infotext", "System Power: " .. power .. " ME")
end,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 652 B

View File

Before

Width:  |  Height:  |  Size: 385 B

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

View File

Before

Width:  |  Height:  |  Size: 481 B

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 B

View File

Before

Width:  |  Height:  |  Size: 346 B

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

15
tool/init.lua Normal file
View File

@ -0,0 +1,15 @@
minetest.register_tool("tech_reborn:wrench", {
inventory_image = "tech_reborn_wrench.png",
tooel_capabilities = {
full_punch_interval = 0.2,
max_drop_level = 1,
groupcaps = {
snappy = {maxlevel = 1, uses = 250, times = {
[0] = 0.1,
[1] = 0.1,
[2] = 0.1,
[3] = 0.1
}}
}
}
})

View File

@ -1,28 +0,0 @@
machinery.wire.systems = {}
machinery.wire.systemfile = minetest.get_worldpath() .. "/machinery_systems.mt"
local input = io.open(machinery.wire.systemfile, "r")
local filedata = nil
if input then
filedata = input:read('*all')
end
if filedata and filedata ~= "" then
machinery.wire.systems = minetest.deserialize(filedata)
io.close(input)
end
function machinery.wire.save_systems()
local output = io.open(machinery.wire.systemfile, "w")
output:write(minetest.serialize(machinery.wire.systems))
io.close(output)
end
local function save_loop()
machinery.wire.save_systems()
minetest.after(2, save_loop)
end
minetest.after(0, save_loop)
minetest.register_on_shutdown(function()
machinery.wire.save_systems()
end)

View File

@ -1,19 +0,0 @@
machinery.wire = {};
local path = minetest.get_modpath("machinery") .. "/wires"
dofile(path .. "/model.lua")
dofile(path .. "/atomic.lua")
dofile(path .. "/logic.lua")
dofile(path .. "/nodes.lua")
--DEBUG--
--Disable in production
minetest.register_abm({
label = "DEBUG - Wires",
nodenames = {"group:wire"},
interval = 0.2,
chance = 1,
action = function(pos)
minetest.get_meta(pos):set_string("infotext", minetest.get_meta(pos):get_string("sys_id"))
end,
})

View File

@ -1,103 +0,0 @@
function machinery.wire.constructWire(pos)
local update = machinery.getAdjacent(pos)
table.insert(update, pos)
for i = 1, #update do
if minetest.get_item_group(minetest.get_node(update[i]).name, "wire") > 0 then
machinery.wire.setModel(update[i])
end
end
machinery.wire.createWire(pos)
end
function machinery.wire.consumeSystem(newSys, oldSys)
if newSys and newSys ~= "" and oldSys and oldSys ~= "" and
machinery.wire.systems[newSys] ~= nil and machinery.wire.systems[oldSys] ~= nil then
local children = machinery.wire.systems[oldSys].children
machinery.wire.systems[oldSys] = nil
for spos,_ in pairs(children) do
pos = machinery.deserializepos(spos)
machinery.wire.systems[newSys].children[spos] = true
minetest.get_meta(pos):set_string("sys_id", newSys)
end
machinery.wire.save_systems()
return true
end
return false
end
function machinery.wire.createWire(pos)
--Check Adjacent Nodes
local adjacent = machinery.getAdjacent(pos)
local found = false
for i = 1, #adjacent do
local node = adjacent[i]
if minetest.get_item_group(minetest.get_node(node).name, "wire") > 0 then
local id = minetest.get_meta(node):get_string("sys_id")
if id and id ~= "" then
if not found then
print("the id that I JUST FOUND is " .. id)
minetest.get_meta(pos):set_string("sys_id", id)
machinery.wire.systems[id].children[machinery.serializepos(pos)] = true
machinery.wire.save_systems()
found = id
else
if id ~= found then
machinery.wire.consumeSystem(found, id)
end
end
end
end
end
if found then return true end
--No Adjacent Nodes to Pair to
local id = tostring(minetest.get_us_time())
minetest.get_meta(pos):set_string("sys_id", id)
machinery.wire.systems[id] = {
id = id,
children = {},
power = 0
}
machinery.wire.systems[id].children[machinery.serializepos(pos)] = true
machinery.wire.save_systems()
return true
end
function machinery.wire.removeWire(pos)
local id = minetest.get_meta(pos):get_string("sys_id")
minetest.after(0, function(pos, id)
local update = machinery.getAdjacent(pos)
for i = 1, #update do
if minetest.get_item_group(minetest.get_node(update[i]).name, "wire") > 0 then
machinery.wire.setModel(update[i])
end
end
if id and id ~= "" then
if machinery.wire.systems[id] ~= nil then
local children = machinery.wire.systems[id].children
children[machinery.serializepos(pos)] = nil
machinery.wire.systems[id] = nil
for spos,_ in pairs(children) do
pos = machinery.deserializepos(spos)
minetest.get_meta(pos):set_string("sys_id", "")
end
for spos,_ in pairs(children) do
pos = machinery.deserializepos(spos)
machinery.wire.createWire(pos)
end
machinery.wire.save_systems()
end
end
end, pos, id)
end

View File

@ -1,598 +0,0 @@
function machinery.register_wire(name, description)
--Inventory Node
minetest.register_node(name, {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.125, -0.125, -0.125, 0.125, 0.125, 0.125},
}
},
drop = name
})
minetest.register_node(name .. "_end", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.125, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
}
},
drop = name
})
minetest.register_node(name .. "_line", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
}
},
drop = name
})
minetest.register_node(name .. "_corner_1", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.125, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.125}, -- NodeBox2
}
},
drop = name
})
minetest.register_node(name .. "_corner_2", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.125, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.125, 0.125, 0.125, 0.5}, -- NodeBox2
}
},
drop = name
})
minetest.register_node(name .. "_funnel", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.125}, -- NodeBox2
}
},
drop = name
})
minetest.register_node(name .. "_cross", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.5}, -- NodeBox2
}
},
drop = name
})
minetest.register_node(name .. "_d", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.125, -0.5, -0.125, 0.125, 0.125, 0.125}, -- NodeBox1
}
},
drop = name
})
minetest.register_node(name .. "_end_d", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.125, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.5, -0.125, 0.125, 0.125, 0.125}, -- NodeBox2
}
},
drop = name
})
minetest.register_node(name .. "_line_d", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.5, -0.125, 0.125, 0.125, 0.125}, -- NodeBox2
}
},
drop = name
})
minetest.register_node(name .. "_corner_1_d", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.125, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.125}, -- NodeBox2
{-0.125, -0.5, -0.125, 0.125, 0.125, 0.125}, -- NodeBox3
}
},
drop = name
})
minetest.register_node(name .. "_corner_2_d", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.125, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.125, 0.125, 0.125, 0.5}, -- NodeBox2
{-0.125, -0.5, -0.125, 0.125, 0.125, 0.125}, -- NodeBox3
}
},
drop = name
})
minetest.register_node(name .. "_funnel_d", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.125}, -- NodeBox2
{-0.125, -0.5, -0.125, 0.125, 0.125, 0.125}, -- NodeBox3
}
},
drop = name
})
minetest.register_node(name .. "_cross_d", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.5}, -- NodeBox2
{-0.125, -0.5, -0.125, 0.125, 0.125, 0.125}, -- NodeBox3
}
},
drop = name
})
minetest.register_node(name .. "_u", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.125, -0.125, -0.125, 0.125, 0.5, 0.125}, -- NodeBox1
}
},
drop = name
})
minetest.register_node(name .. "_end_u", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.125, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.125, 0.125, 0.5, 0.125}, -- NodeBox1
}
},
drop = name
})
minetest.register_node(name .. "_line_u", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.125, 0.125, 0.5, 0.125}, -- NodeBox2
}
},
drop = name
})
minetest.register_node(name .. "_corner_1_u", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.125, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.125}, -- NodeBox2
{-0.125, -0.125, -0.125, 0.125, 0.5, 0.125}, -- NodeBox3
}
},
drop = name
})
minetest.register_node(name .. "_corner_2_u", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.125, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.125, 0.125, 0.125, 0.5}, -- NodeBox2
{-0.125, -0.125, -0.125, 0.125, 0.5, 0.125}, -- NodeBox3
}
},
drop = name
})
minetest.register_node(name .. "_funnel_u", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.125}, -- NodeBox2
{-0.125, -0.125, -0.125, 0.125, 0.5, 0.125}, -- NodeBox3
}
},
drop = name
})
minetest.register_node(name .. "_cross_u", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.5}, -- NodeBox2
{-0.125, -0.125, -0.125, 0.125, 0.5, 0.125}, -- NodeBox3
}
},
drop = name
})
minetest.register_node(name .. "_ud", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, -- NodeBox1
}
},
drop = name
})
minetest.register_node(name .. "_end_ud", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.125, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, -- NodeBox1
}
},
drop = name
})
minetest.register_node(name .. "_line_ud", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, -- NodeBox2
}
},
drop = name
})
minetest.register_node(name .. "_corner_1_ud", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.125, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.125}, -- NodeBox2
{-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, -- NodeBox3
}
},
drop = name
})
minetest.register_node(name .. "_corner_2_ud", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.125, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.125, 0.125, 0.125, 0.5}, -- NodeBox2
{-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, -- NodeBox3
}
},
drop = name
})
minetest.register_node(name .. "_funnel_ud", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.125}, -- NodeBox2
{-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, -- NodeBox3
}
},
drop = name
})
minetest.register_node(name .. "_cross_ud", {
description = description,
tiles = {"machinery_wire.png"},
is_ground_content = false,
groups = {dig_immediate = 3, oddly_breakable_by_hand = 1, wire = 1},
sounds = default.node_sound_metal_defaults(),
on_construct = machinery.wire.constructWire,
on_destruct = machinery.wire.removeWire,
paramtype2 = "facedir",
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.125, 0.5, 0.125, 0.125}, -- NodeBox1
{-0.125, -0.125, -0.5, 0.125, 0.125, 0.5}, -- NodeBox2
{-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, -- NodeBox3
}
},
drop = name
})
end
machinery.register_wire("machinery:wire", "Wire")