diff options
author | FaceDeer <derksenmobile@gmail.com> | 2017-10-12 03:06:24 -0600 |
---|---|---|
committer | FaceDeer <derksenmobile@gmail.com> | 2017-10-12 03:06:24 -0600 |
commit | 65f5ac8520a286ae062824147c2f0e3b0253c8ff (patch) | |
tree | 3b2fe0b773f872f18d7c842476e014235b432160 /nodes | |
parent | a44f517a4e17314adf3e6895d95a1f90096df026 (diff) |
add initial support for tapping technic power cables
Diffstat (limited to 'nodes')
-rw-r--r-- | nodes/node_crate.lua | 11 | ||||
-rw-r--r-- | nodes/node_power_connector.lua | 69 |
2 files changed, 79 insertions, 1 deletions
diff --git a/nodes/node_crate.lua b/nodes/node_crate.lua index 7e30207..080fe68 100644 --- a/nodes/node_crate.lua +++ b/nodes/node_crate.lua @@ -30,7 +30,16 @@ minetest.register_node("digtron:empty_crate", { -- destroy everything. Note that this includes the empty crate, which will be bundled up with the layout. for _, node_image in pairs(layout.all) do - minetest.remove_node(node_image.pos) + local old_pos = node_image.pos + local old_node = node_image.node + minetest.remove_node(old_pos) + + for _, callback in ipairs(minetest.registered_on_dignodes) do + -- Copy pos and node because callback can modify them + local pos_copy = {x=old_pos.x, y=old_pos.y, z=old_pos.z} + local oldnode_copy = {name=old_node.name, param1=old_node.param1, param2=old_node.param2} + callback(pos_copy, oldnode_copy, clicker) + end end -- Create the loaded crate node diff --git a/nodes/node_power_connector.lua b/nodes/node_power_connector.lua new file mode 100644 index 0000000..4e51e36 --- /dev/null +++ b/nodes/node_power_connector.lua @@ -0,0 +1,69 @@ +-- internationalization boilerplate +local MP = minetest.get_modpath(minetest.get_current_modname()) +local S, NS = dofile(MP.."/intllib.lua") + +local size = 3/16 + +local max_dig_cost = math.max(digtron.config.dig_cost_cracky, digtron.config.dig_cost_crumbly, digtron.config.dig_cost_choppy, digtron.config.dig_cost_default) + +minetest.register_node("digtron:power_connector", { + description = S("DPC"), + _doc_items_longdesc = digtron.doc.power_connector_longdesc, + _doc_items_usagehelp = digtron.doc.power_connector_usagehelp, + groups = {cracky = 3, oddly_breakable_by_hand=3, digtron = 8, technic_machine=1, technic_hv=1}, + tiles = {"digtron_plate.png"}, + connect_sides = {"bottom", "top", "left", "right", "front", "back"}, + drawtype = "nodebox", + sounds = digtron.metal_sounds, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, +-- node_box = { +-- type = "fixed", +-- fixed = { +-- {-0.5, 0.5, -0.5, 0.5, 0, 0.5}, -- NodeBox1 +-- {-0.1875, 0, -0.1875, 0.1875, -0.5, 0.1875}, -- NodeBox2 +-- {-0.3125, -0.0625, -0.3125, 0.3125, -0.1875, 0.3125}, -- NodeBox3 +-- {-0.3125, -0.25, -0.3125, 0.3125, -0.375, 0.3125}, -- NodeBox4 +-- } +-- }, + + connects_to = {"group:technic_hv_cable"}, + node_box = { + type = "connected", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, -- NodeBox1 + {-0.1875, 0, -0.1875, 0.1875, 0.5, 0.1875}, -- NodeBox2 + {-0.3125, 0.0625, -0.3125, 0.3125, 0.1875, 0.3125}, -- NodeBox3 + {-0.3125, 0.25, -0.3125, 0.3125, 0.375, 0.3125}, -- NodeBox4 + }, + connect_front = {-size, -size, -0.5, size, size, size}, -- z- + connect_back = {-size, -size, size, size, size, 0.5 }, -- z+ + connect_left = {-0.5, -size, -size, size, size, size}, -- x- + connect_right = {-size, -size, -size, 0.5, size, size}, -- x+ + }, + + technic_run = function(pos, node) + local meta = minetest.get_meta(pos) + local eu_input = meta:get_int("HV_EU_input") + local demand = meta:get_int("HV_EU_demand") + meta:set_string("infotext", S("Digtron Power @1/@2\nRight-click to update", eu_input, demand)) + end, + + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + local layout = DigtronLayout.create(pos, player) + local max_cost = 0 + for _, node_image in pairs(layout.builders) do + max_cost = max_cost + digtron.config.build_cost + end + for _, node_image in pairs(layout.diggers) do + max_cost = max_cost + max_dig_cost + end + local meta = minetest.get_meta(pos) + meta:set_int("HV_EU_demand", max_cost * digtron.config.power_ratio) + end, + +}) + + +technic.register_machine("HV", "digtron:power_connector", technic.receiver)
\ No newline at end of file |