summaryrefslogtreecommitdiff
path: root/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'init.lua')
-rw-r--r--init.lua100
1 files changed, 100 insertions, 0 deletions
diff --git a/init.lua b/init.lua
new file mode 100644
index 0000000..7dff2c6
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,100 @@
+local old_itc = technic.is_tier_cable
+
+local old_gct = technic.get_cable_tier
+
+technic.is_tier_cable = function(name,tier)
+ local itcresult = old_itc(name,tier)
+ if itcresult then
+ return itcresult
+ elseif minetest.registered_nodes[name] and minetest.registered_nodes[name]._origcable then
+ return old_itc(minetest.registered_nodes[name]._origcable,tier)
+ end
+end
+
+technic.get_cable_tier = function(name)
+ local gctresult = old_gct(name)
+ if gctresult then
+ return gctresult
+ elseif minetest.registered_nodes[name] and minetest.registered_nodes[name]._origcable then
+ return old_gct(minetest.registered_nodes[name]._origcable)
+ end
+end
+
+local cables = {
+ ["technic:lv_cable"] = "technic_adminnodes:lv_cable_admin",
+ ["technic:mv_cable"] = "technic_adminnodes:mv_cable_admin",
+ ["technic:hv_cable"] = "technic_adminnodes:hv_cable_admin",
+}
+
+for oldname,newname in pairs(cables) do
+ local def = table.copy(minetest.registered_nodes[oldname])
+ for group in pairs(def.groups) do
+ if not string.find(group,"technic") then def.groups[group] = nil end
+ end
+ for face,img in ipairs(def.tiles) do
+ def.tiles[face] = img.."^[resize:64x64^(technic_adminnodes_cable_overlay.png^[opacity:128)"
+ end
+ def.groups.not_in_creative_inventory = 1
+ def.drop = ""
+ def.mod_origin = nil
+ def.description = "Unbreakable "..def.description
+ def.name = nil
+ def._origcable = oldname
+ def.inventory_image = "[combine:32x32:0,0="..def.inventory_image..":15,15=(basic_materials_padlock.png\\^[resize\\:16x16)"
+ minetest.register_node(newname,def)
+end
+
+for _,tier in ipairs({"lv","mv","hv",}) do
+ local metafieldname = string.upper(tier).."_EU_supply"
+ minetest.register_node("technic_adminnodes:generator_"..tier,{
+ description = "Magical "..string.upper(tier).." Power Supply",
+ paramtype2 = "facedir",
+ on_rotate = minetest.global_exists("screwdriver") and screwdriver.rotate_simple,
+ groups = {
+ not_in_creative_inventory = 1,
+ technic_machine = 1,
+ ["technic_"..tier] = 1,
+ },
+ tiles = {
+ "technic_"..tier.."_generator_top.png",
+ "technic_machine_bottom.png",
+ "technic_"..tier.."_generator_side.png",
+ "technic_"..tier.."_generator_side.png",
+ "technic_"..tier.."_generator_side.png",
+ "technic_"..tier.."_generator_front.png^technic_adminnodes_generator_overlay.png",
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ local default = 1000
+ meta:set_int("amount",default)
+ meta:set_string("infotext","Magical "..string.upper(tier).." Power Supply Has No Network")
+ meta:set_string("formspec","field[amount;EU to generate;${amount}")
+ end,
+ technic_run = function(pos)
+ local meta = minetest.get_meta(pos)
+ local amount = meta:get_int("amount")
+ meta:set_int(string.upper(tier).."_EU_supply",amount)
+ meta:set_string("infotext","Magical "..string.upper(tier).." Power Supply, producing "..technic.EU_string(amount))
+ end,
+ connect_sides = {
+ "bottom",
+ "back",
+ "left",
+ "right",
+ },
+ on_receive_fields = function(pos,formname,fields,sender)
+ local name = sender:get_player_name()
+ if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then
+ minetest.record_protection_violation(pos,name)
+ return
+ end
+ local meta = minetest.get_meta(pos)
+ if tonumber(fields.amount) then
+ local newamount = math.min(10^9,math.max(0,math.floor(tonumber(fields.amount))))
+ meta:set_int("amount",newamount)
+ meta:set_string("infotext","Magical "..string.upper(tier).." Power Supply, producing "..technic.EU_string(newamount))
+ end
+ end,
+ })
+ technic.register_machine(string.upper(tier),"technic_adminnodes:generator_"..tier,technic.producer)
+end