From 4770885e5fd7b936d01216bae6a1f81a2e68ce81 Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Wed, 8 Sep 2021 13:02:11 +0200 Subject: [PATCH] Add support for colored cables As requested by player "anju64". --- power/electric_cable.lua | 68 ++++++++++++++++++++---- textures/techage_cable_palette.png | Bin 0 -> 134 bytes textures/techage_electric_cable_end.png | Bin 248 -> 123 bytes 3 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 textures/techage_cable_palette.png diff --git a/power/electric_cable.lua b/power/electric_cable.lua index 5e87dca..05cccb5 100644 --- a/power/electric_cable.lua +++ b/power/electric_cable.lua @@ -32,7 +32,9 @@ local Cable = tubelib2.Tube:new({ "techage:power_pole2", "techage:powerswitch_box", "techage:powerswitch_box_on"}, secondary_node_names = {}, after_place_tube = function(pos, param2, tube_type, num_tubes) - local name = minetest.get_node(pos).name + local node = minetest.get_node(pos) + local name = node.name + local color_param2 = math.floor(node.param2 / 32) * 32 if name == "techage:powerswitch_box" or name == "techage:powerswitch_box_on" or name == "techage:powerswitch_box_off" then minetest.swap_node(pos, {name = name, param2 = param2 % 32}) elseif name == "techage:power_line" or name == "techage:power_lineS" or name == "techage:power_lineA" then @@ -40,9 +42,10 @@ local Cable = tubelib2.Tube:new({ elseif name == "techage:power_pole2" then -- nothing elseif not networks.hidden_name(pos) then - minetest.swap_node(pos, {name = "techage:electric_cable"..tube_type, param2 = param2 % 32}) + minetest.swap_node(pos, {name = "techage:electric_cable"..tube_type, param2 = param2 % 32 + color_param2}) end M(pos):set_int("netw_param2", param2) + M(pos):set_int("netw_color_param2", color_param2) end, }) @@ -55,6 +58,15 @@ Cable:register_on_tube_update2(function(pos, outdir, tlib2, node) power.update_network(pos, outdir, tlib2, node) end) +local preserve_metadata = function(pos, oldnode, oldmeta, drops) + for _,drop in ipairs(drops) do + local meta = drop:get_meta() + if meta:get_int("palette_index") == 0 then + meta:set_string("palette_index", "") + end + end +end + minetest.register_node("techage:electric_cableS", { description = S("TA Electric Cable"), tiles = { @@ -63,8 +75,16 @@ minetest.register_node("techage:electric_cableS", { "techage_electric_cable.png", "techage_electric_cable.png", "techage_electric_cable.png", - "techage_electric_cable_end.png", - "techage_electric_cable_end.png", + "techage_electric_cable.png", + "techage_electric_cable.png", + }, + overlay_tiles = { + "", + "", + "", + "", + { name = "techage_electric_cable_end.png", color = "white" }, + { name = "techage_electric_cable_end.png", color = "white" }, }, after_place_node = function(pos, placer, itemstack, pointed_thing) @@ -79,7 +99,8 @@ minetest.register_node("techage:electric_cableS", { Cable:after_dig_tube(pos, oldnode, oldmetadata) end, - paramtype2 = "facedir", -- important! + paramtype2 = "colorfacedir", -- important! + palette = "techage_cable_palette.png", drawtype = "nodebox", node_box = { type = "fixed", @@ -94,6 +115,7 @@ minetest.register_node("techage:electric_cableS", { is_ground_content = false, groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, techage_trowel = 1}, sounds = default.node_sound_defaults(), + preserve_metadata = preserve_metadata, }) minetest.register_node("techage:electric_cableA", { @@ -101,18 +123,27 @@ minetest.register_node("techage:electric_cableA", { tiles = { -- up, down, right, left, back, front "techage_electric_cable.png", - "techage_electric_cable_end.png", "techage_electric_cable.png", "techage_electric_cable.png", "techage_electric_cable.png", - "techage_electric_cable_end.png", + "techage_electric_cable.png", + "techage_electric_cable.png", + }, + overlay_tiles = { + "", + { name = "techage_electric_cable_end.png", color = "white" }, + "", + "", + "", + { name = "techage_electric_cable_end.png", color = "white" }, }, after_dig_node = function(pos, oldnode, oldmetadata, digger) Cable:after_dig_tube(pos, oldnode, oldmetadata) end, - paramtype2 = "facedir", -- important! + paramtype2 = "colorfacedir", -- important! + palette = "techage_cable_palette.png", drawtype = "nodebox", node_box = { type = "fixed", @@ -129,7 +160,12 @@ minetest.register_node("techage:electric_cableA", { groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, techage_trowel = 1, not_in_creative_inventory = 1}, sounds = default.node_sound_defaults(), - drop = "techage:electric_cableS", + drop = { + items = { + { items = { "techage:electric_cableS" }, inherit_color = true }, + } + }, + preserve_metadata = preserve_metadata, }) minetest.register_craft({ @@ -142,4 +178,16 @@ minetest.register_craft({ }) techage.ElectricCable = Cable -techage.ELE1_MAX_CABLE_LENGHT = ELE1_MAX_CABLE_LENGHT +techage.ELE1_MAX_CABLE_LENGTH = ELE1_MAX_CABLE_LENGTH + + +for idx, color in ipairs({ "white", "grey", "black", "brown", "yellow", "red", "dark_green", "blue" }) do + minetest.register_craft({ + output = idx == 1 and "techage:electric_cableS 8" or minetest.itemstring_with_palette("techage:electric_cableS 8", (idx-1)*32), + recipe = { + { "techage:electric_cableS", "techage:electric_cableS", "techage:electric_cableS", }, + { "techage:electric_cableS", "dye:"..color, "techage:electric_cableS", }, + { "techage:electric_cableS", "techage:electric_cableS", "techage:electric_cableS", }, + } + }) +end \ No newline at end of file diff --git a/textures/techage_cable_palette.png b/textures/techage_cable_palette.png new file mode 100644 index 0000000000000000000000000000000000000000..da528b5df7b4bf8a54c27dfb09c078df805e0ae7 GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUU2AP^YHHe&Zt2jV=v2J) z-W0*|^78-x|4&IFMGa!f`!Wqn(M(LYbFKfX7k8!C=Y)hJzffOf1a863&cG e51CjC*ci5l%O1>m^KunX6N9I#pUXO@geCw1$R%$8 literal 0 HcmV?d00001 diff --git a/textures/techage_electric_cable_end.png b/textures/techage_electric_cable_end.png index 97dd46de0d455694b89010577a25a4cd1ebfee01..0b021e101960c2276c4cd4dea724c32c4194fbc7 100644 GIT binary patch delta 93 zcmeytSUo`{oIk)P#MQmPXTkhwXX|ye3$@=p6!km3%aehDfw3gWFPOpM*^M+HN6OR1 wF+}5ha)LysLx6yzopr04tv$r~m)} delta 219 zcmV<103`o=_yLe4e*|YiO+f$vv5yP zyVTRipr4k_e=I9;EAHVHz=RrI00001bW%=J06^y0W&i*HbV)=(R4C7tkaCpl&0|kg) zMIN$LKp~`pGC~A&oEf|w`}Lfjh#AqUY*DhPPW?Za*iOoA_HjbHQ;e59`*V&t^ae&? V75yJmATj^|002ovPDHLkV1lf9R(}8h