summaryrefslogtreecommitdiff
path: root/nodes
diff options
context:
space:
mode:
Diffstat (limited to 'nodes')
-rw-r--r--nodes/node_crate.lua11
-rw-r--r--nodes/node_power_connector.lua69
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