diff --git a/basis/laser_lib.lua b/basis/laser_lib.lua new file mode 100644 index 0000000..ea508d3 --- /dev/null +++ b/basis/laser_lib.lua @@ -0,0 +1,134 @@ +--[[ + + TechAge + ======= + + Copyright (C) 2019-2021 Joachim Stolberg + + GPL v3 + See LICENSE.txt for more information + + Laser basis functions + +]]-- + +local Entities = {} +local SIZES = {1, 2, 3, 6, 12, 24, 48} -- for laser entities +local GAP_MIN = 1 -- between 2 blocks +local GAP_MAX = 2 * 48 -- between 2 blocks + +-- Return the area (pos1,pos2) for a destination node +local function get_pos_range(pos, dir) + local pos1 = vector.add(pos, vector.multiply(dir, GAP_MIN + 1)) -- min + local pos2 = vector.add(pos, vector.multiply(dir, GAP_MAX + 1)) -- max + return pos1, pos2 +end + +-- Return first pos after start pos and the destination pos +local function get_positions(pos, mem, dir) + local pos1 = vector.add(pos, dir) -- start pos + local _, pos2 = get_pos_range(pos, dir) -- last pos + local _, pos3 = minetest.line_of_sight(pos1, pos2) + pos3 = pos3 or pos2 -- destination node pos + if not mem.peer_node_pos or not vector.equals(pos3, mem.peer_node_pos) then + mem.peer_node_pos = pos3 + local dist = vector.distance(pos1, pos3) + if dist > GAP_MIN and dist <= GAP_MAX then + return pos1, pos3 + end + end +end + +-- return both both laser entities the pos and length +local function get_laser_length_and_pos(pos1, pos2, dir) + local dist = vector.distance(pos1, pos2) + + for _, size in ipairs(SIZES) do + if dist <= (size * 2) then + pos1 = vector.add (pos1, vector.multiply(dir, (size / 2) - 0.5)) + pos2 = vector.subtract(pos2, vector.multiply(dir, (size / 2) + 0.5)) + return size, pos1, pos2 + end + end +end + +local function del_laser(pos) + local key = minetest.hash_node_position(pos) + local items = Entities[key] + if items then + local laser1, laser2 = items[1], items[2] + laser1:remove() + laser2:remove() + Entities[key] = nil + end + return key +end + +local function add_laser(pos, pos1, pos2, size, param2) + local key = del_laser(pos) + + local laser1 = minetest.add_entity(pos1, "techage:laser" .. size) + if laser1 then + local yaw = math.pi / 2 * (param2 + 1) + laser1:set_rotation({x = 0, y = yaw, z = 0}) + end + + local laser2 = minetest.add_entity(pos2, "techage:laser" .. size) + if laser2 then + param2 = (param2 + 2) % 4 -- flip dir + local yaw = math.pi / 2 * (param2 + 1) + laser2:set_rotation({x = 0, y = yaw, z = 0}) + end + + Entities[key] = {laser1, laser2} +end + +for _, size in ipairs(SIZES) do + minetest.register_entity("techage:laser" .. size, { + initial_properties = { + visual = "cube", + textures = { + "techage_laser.png", + "techage_laser.png", + "techage_laser.png", + "techage_laser.png", + "techage_laser.png", + "techage_laser.png", + }, + use_texture_alpha = true, + physical = false, + collide_with_objects = false, + pointable = false, + static_save = false, + visual_size = {x = size, y = 0.05, z = 0.05}, + glow = 14, + shaded = true, + }, + }) +end + +------------------------------------------------------------------------------- +-- API functions +------------------------------------------------------------------------------- +-- if force is not true, do not redraw the laser if nothing has changed +function techage.renew_laser(pos, force) + local mem = techage.get_mem(pos) + if force then + mem.peer_node_pos = nil + mem.param2 = nil + end + mem.param2 = mem.param2 or minetest.get_node(pos).param2 + local dir = minetest.facedir_to_dir(mem.param2) + local pos1, pos2 = get_positions(pos, mem, dir) + if pos1 then + local size, pos3, pos4 = get_laser_length_and_pos(pos1, pos2, dir) + if size then + add_laser(pos, pos3, pos4, size, mem.param2) + return pos1, pos2 + end + end + +end + +-- techage.del_laser(pos) +techage.del_laser = del_laser diff --git a/init.lua b/init.lua index b80ee90..1dd8d10 100644 --- a/init.lua +++ b/init.lua @@ -85,6 +85,7 @@ dofile(MP.."/basis/networks.lua") dofile(MP.."/basis/recipe_lib.lua") dofile(MP.."/basis/formspec_update.lua") dofile(MP.."/basis/windturbine_lib.lua") +dofile(MP.."/basis/laser_lib.lua") -- Main doc dofile(MP.."/doc/manual_DE.lua") @@ -112,6 +113,7 @@ dofile(MP.."/power/powerswitch.lua") dofile(MP.."/power/protection.lua") dofile(MP.."/power/power_line.lua") dofile(MP.."/power/ta4_cable.lua") +dofile(MP.."/power/laser.lua") -- Iron Age dofile(MP.."/iron_age/main.lua") @@ -215,7 +217,7 @@ dofile(MP.."/oil/drillbox.lua") dofile(MP.."/oil/pumpjack.lua") dofile(MP.."/oil/distiller.lua") dofile(MP.."/oil/reboiler.lua") --- dofile(MP.."/oil/gasflare.lua") +-- dofile(MP.."/oil/gasflare.lua") -- TA3 power based dofile(MP.."/ta3_power/tiny_generator.lua") diff --git a/items/cement.lua b/items/cement.lua index ce7e62e..899678d 100644 --- a/items/cement.lua +++ b/items/cement.lua @@ -16,7 +16,7 @@ local S = techage.S -if not minetest.global_exists("bakedclay") then +if not minetest.get_modpath("bakedclay") then minetest.register_node("techage:cement_block", { description = S("Cement Block"), tiles = {"default_clay.png^[colorize:#FFFFFF:160"}, @@ -33,6 +33,17 @@ if not minetest.global_exists("bakedclay") then techage.add_grinder_recipe({input="techage:cement_block", output="techage:cement_powder"}) else + -- The block should not exist when the mod baked clay is loaded. + -- But this block was active due to an error and can therefore no longer be deleted. + minetest.register_node("techage:cement_block", { + description = S("Cement Block"), + tiles = {"default_clay.png^[colorize:#FFFFFF:160"}, + is_ground_content = false, + groups = {cracky = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + }) + + techage.add_grinder_recipe({input="techage:cement_block", output="techage:cement_powder"}) techage.add_grinder_recipe({input="bakedclay:white", output="techage:cement_powder"}) end diff --git a/power/laser.lua b/power/laser.lua new file mode 100644 index 0000000..6ccf46c --- /dev/null +++ b/power/laser.lua @@ -0,0 +1,115 @@ +--[[ + + TechAge + ======= + + Copyright (C) 2019-2021 Joachim Stolberg + + GPL v3 + See LICENSE.txt for more information + + TA4 Laser beam emitter and receiver + +]]-- + +-- for lazy programmers +local P2S = function(pos) if pos then return minetest.pos_to_string(pos) end end +local S2P = minetest.string_to_pos +local M = minetest.get_meta +local S = techage.S + +local Cable = techage.ElectricCable +local power = techage.power +local networks = techage.networks + +minetest.register_node("techage:laser_emitter", { + description = S("TA4 Laser Beam Emitter"), + tiles = { + -- up, down, right, left, back, front + "techage_filling_ta4.png^techage_frame_ta4_top.png", + "techage_filling_ta4.png^techage_frame_ta4.png", + "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_laser.png", + "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_laser.png", + "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_laser_hole.png", + "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_hole_electric.png", + }, + + after_place_node = function(pos, placer) + local tube_dir = networks.side_to_outdir(pos, "F") + Cable:prepare_pairing(pos, tube_dir, "") + Cable:after_place_node(pos, {tube_dir}) + + local pos1, pos2 = techage.renew_laser(pos, true) + if pos1 then + local node = techage.get_node_lvm(pos2) + if node.name == "techage:laser_receiver" then + Cable:pairing(pos2, "laser") + Cable:pairing(pos, "laser") + else + minetest.chat_send_player(placer:get_player_name(), S("Valid destination positions:") .. " " .. P2S(pos1) .. " " .. S("to") .. " " .. P2S(pos2)) + end + else + minetest.chat_send_player(placer:get_player_name(), S("The line of sight is blocked")) + end + minetest.get_node_timer(pos):start(2) + end, + + on_timer = function(pos, elapsed) + local pos1, pos2 = techage.renew_laser(pos) + if pos1 then + local node = techage.get_node_lvm(pos2) + if node.name == "techage:laser_receiver" then + Cable:pairing(pos2, "laser") + Cable:pairing(pos, "laser") + end + end + return true + end, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + techage.del_laser(pos) + Cable:stop_pairing(pos, oldmetadata, "") + local tube_dir = tonumber(oldmetadata.fields.tube_dir or 0) + Cable:after_dig_node(pos, {tube_dir}) + end, + + paramtype2 = "facedir", + groups = {choppy=2, cracky=2, crumbly=2}, + is_ground_content = false, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("techage:laser_receiver", { + description = S("TA4 Laser Beam Receiver"), + tiles = { + -- up, down, right, left, back, front + "techage_filling_ta4.png^techage_frame_ta4_top.png", + "techage_filling_ta4.png^techage_frame_ta4.png", + "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_laser.png", + "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_laser.png", + "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_laser_hole.png", + "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_hole_electric.png", + }, + + after_place_node = function(pos, placer) + local tube_dir = networks.side_to_outdir(pos, "F") + Cable:prepare_pairing(pos, tube_dir, "") + Cable:after_place_node(pos, {tube_dir}) + end, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + Cable:stop_pairing(pos, oldmetadata, "") + local tube_dir = tonumber(oldmetadata.fields.tube_dir or 0) + Cable:after_dig_node(pos, {tube_dir}) + end, + + paramtype2 = "facedir", + groups = {choppy=2, cracky=2, crumbly=2}, + is_ground_content = false, + sounds = default.node_sound_wood_defaults(), +}) + +Cable:add_secondary_node_names({"techage:laser_emitter", "techage:laser_receiver"}) +Cable:set_valid_sides("techage:laser_emitter", {"F"}) +Cable:set_valid_sides("techage:laser_receiver", {"F"}) + diff --git a/textures/shrink.py b/textures/shrink.py index 45b41a4..0cf29b8 100644 --- a/textures/shrink.py +++ b/textures/shrink.py @@ -5,7 +5,7 @@ print(">>> Convert") for filename in os.listdir("./"): if fnmatch.fnmatch(filename, "*.png"): print(filename) - os.system("pngquant --skip-if-larger --quality=60-80 --strip --output ./%s.new ./%s" % (filename, filename)) + os.system("pngquant --skip-if-larger --quality=80 --strip --output ./%s.new ./%s" % (filename, filename)) print("\n>>> Copy") for filename in os.listdir("./"): diff --git a/textures/techage_aluminum_inv.png b/textures/techage_aluminum_inv.png index 1127c25..26f5e62 100644 Binary files a/textures/techage_aluminum_inv.png and b/textures/techage_aluminum_inv.png differ diff --git a/textures/techage_appl_chest_front_ta4.png b/textures/techage_appl_chest_front_ta4.png index 6e2322e..bbb2400 100644 Binary files a/textures/techage_appl_chest_front_ta4.png and b/textures/techage_appl_chest_front_ta4.png differ diff --git a/textures/techage_appl_cooler4.png b/textures/techage_appl_cooler4.png index 4258335..952cf55 100644 Binary files a/textures/techage_appl_cooler4.png and b/textures/techage_appl_cooler4.png differ diff --git a/textures/techage_appl_filler.png b/textures/techage_appl_filler.png index 64e340d..92205d6 100644 Binary files a/textures/techage_appl_filler.png and b/textures/techage_appl_filler.png differ diff --git a/textures/techage_appl_hole_electric.png b/textures/techage_appl_hole_electric.png index da19107..6dfbaec 100644 Binary files a/textures/techage_appl_hole_electric.png and b/textures/techage_appl_hole_electric.png differ diff --git a/textures/techage_appl_laser.png b/textures/techage_appl_laser.png new file mode 100644 index 0000000..70f7062 Binary files /dev/null and b/textures/techage_appl_laser.png differ diff --git a/textures/techage_appl_laser_hole.png b/textures/techage_appl_laser_hole.png new file mode 100644 index 0000000..c445434 Binary files /dev/null and b/textures/techage_appl_laser_hole.png differ diff --git a/textures/techage_appl_pumpjack.png b/textures/techage_appl_pumpjack.png index cafabd2..d6a34db 100644 Binary files a/textures/techage_appl_pumpjack.png and b/textures/techage_appl_pumpjack.png differ diff --git a/textures/techage_appl_recycler.png b/textures/techage_appl_recycler.png index 9be40e7..ddfa0cc 100644 Binary files a/textures/techage_appl_recycler.png and b/textures/techage_appl_recycler.png differ diff --git a/textures/techage_appl_rinser_top.png b/textures/techage_appl_rinser_top.png index 5b7a009..4abb220 100644 Binary files a/textures/techage_appl_rinser_top.png and b/textures/techage_appl_rinser_top.png differ diff --git a/textures/techage_appl_sieve4_top.png b/textures/techage_appl_sieve4_top.png index edcf126..10ec29e 100644 Binary files a/textures/techage_appl_sieve4_top.png and b/textures/techage_appl_sieve4_top.png differ diff --git a/textures/techage_appl_switch_inv.png b/textures/techage_appl_switch_inv.png index 153eae2..7437493 100644 Binary files a/textures/techage_appl_switch_inv.png and b/textures/techage_appl_switch_inv.png differ diff --git a/textures/techage_ash_side.png b/textures/techage_ash_side.png index 5dc5361..f382e26 100644 Binary files a/textures/techage_ash_side.png and b/textures/techage_ash_side.png differ diff --git a/textures/techage_axle4.png b/textures/techage_axle4.png index 2e2b716..e7998ec 100644 Binary files a/textures/techage_axle4.png and b/textures/techage_axle4.png differ diff --git a/textures/techage_basalt_glass2.png b/textures/techage_basalt_glass2.png index f22db4a..e7a7b9c 100644 Binary files a/textures/techage_basalt_glass2.png and b/textures/techage_basalt_glass2.png differ diff --git a/textures/techage_ceilinglamp.png b/textures/techage_ceilinglamp.png index f8656fc..9457c21 100644 Binary files a/textures/techage_ceilinglamp.png and b/textures/techage_ceilinglamp.png differ diff --git a/textures/techage_ceilinglamp_bottom.png b/textures/techage_ceilinglamp_bottom.png index 8f92f5e..3bd03fe 100644 Binary files a/textures/techage_ceilinglamp_bottom.png and b/textures/techage_ceilinglamp_bottom.png differ diff --git a/textures/techage_charcoal_burn.png b/textures/techage_charcoal_burn.png index 7fbb0e2..5ef408e 100644 Binary files a/textures/techage_charcoal_burn.png and b/textures/techage_charcoal_burn.png differ diff --git a/textures/techage_concrete.png b/textures/techage_concrete.png index 94eff2e..2bead6b 100644 Binary files a/textures/techage_concrete.png and b/textures/techage_concrete.png differ diff --git a/textures/techage_concrete4.png b/textures/techage_concrete4.png index c9c84da..26ab946 100644 Binary files a/textures/techage_concrete4.png and b/textures/techage_concrete4.png differ diff --git a/textures/techage_electric_junction.png b/textures/techage_electric_junction.png index e0464b1..1dc02d5 100644 Binary files a/textures/techage_electric_junction.png and b/textures/techage_electric_junction.png differ diff --git a/textures/techage_electric_trowel.png b/textures/techage_electric_trowel.png index 87b90bd..11d7941 100644 Binary files a/textures/techage_electric_trowel.png and b/textures/techage_electric_trowel.png differ diff --git a/textures/techage_end_wrench.png b/textures/techage_end_wrench.png index 60d23f5..a66c537 100644 Binary files a/textures/techage_end_wrench.png and b/textures/techage_end_wrench.png differ diff --git a/textures/techage_filling4_ta4.png b/textures/techage_filling4_ta4.png index 7f03588..48987fe 100644 Binary files a/textures/techage_filling4_ta4.png and b/textures/techage_filling4_ta4.png differ diff --git a/textures/techage_filling8_ta4.png b/textures/techage_filling8_ta4.png index e43a955..b9d6311 100644 Binary files a/textures/techage_filling8_ta4.png and b/textures/techage_filling8_ta4.png differ diff --git a/textures/techage_filling_metal.png b/textures/techage_filling_metal.png index 2d7021e..43f0734 100644 Binary files a/textures/techage_filling_metal.png and b/textures/techage_filling_metal.png differ diff --git a/textures/techage_firebox.png b/textures/techage_firebox.png index 7bf2040..6267f3d 100644 Binary files a/textures/techage_firebox.png and b/textures/techage_firebox.png differ diff --git a/textures/techage_flame_animated.png b/textures/techage_flame_animated.png index baca69b..7418550 100644 Binary files a/textures/techage_flame_animated.png and b/textures/techage_flame_animated.png differ diff --git a/textures/techage_form_tank.png b/textures/techage_form_tank.png index ce3e807..b26c069 100644 Binary files a/textures/techage_form_tank.png and b/textures/techage_form_tank.png differ diff --git a/textures/techage_form_temp_fg.png b/textures/techage_form_temp_fg.png index 74d61ff..b7e4f4e 100644 Binary files a/textures/techage_form_temp_fg.png and b/textures/techage_form_temp_fg.png differ diff --git a/textures/techage_frame14_ta2.png b/textures/techage_frame14_ta2.png index 356da59..b7a119a 100644 Binary files a/textures/techage_frame14_ta2.png and b/textures/techage_frame14_ta2.png differ diff --git a/textures/techage_frame4_ta2.png b/textures/techage_frame4_ta2.png index 52f3a95..98bb0e6 100644 Binary files a/textures/techage_frame4_ta2.png and b/textures/techage_frame4_ta2.png differ diff --git a/textures/techage_frame4_ta2_top.png b/textures/techage_frame4_ta2_top.png index 52f3a95..98bb0e6 100644 Binary files a/textures/techage_frame4_ta2_top.png and b/textures/techage_frame4_ta2_top.png differ diff --git a/textures/techage_frame8_ta3.png b/textures/techage_frame8_ta3.png index 406f303..c30737d 100644 Binary files a/textures/techage_frame8_ta3.png and b/textures/techage_frame8_ta3.png differ diff --git a/textures/techage_frame_ta3.png b/textures/techage_frame_ta3.png index bc2bb49..e744bc5 100644 Binary files a/textures/techage_frame_ta3.png and b/textures/techage_frame_ta3.png differ diff --git a/textures/techage_frame_ta3_top.png b/textures/techage_frame_ta3_top.png index bc2bb49..e744bc5 100644 Binary files a/textures/techage_frame_ta3_top.png and b/textures/techage_frame_ta3_top.png differ diff --git a/textures/techage_gasflare.png b/textures/techage_gasflare.png index 562c5eb..4530dcc 100644 Binary files a/textures/techage_gasflare.png and b/textures/techage_gasflare.png differ diff --git a/textures/techage_gate.png b/textures/techage_gate.png index 4d424f7..ac51f19 100644 Binary files a/textures/techage_gate.png and b/textures/techage_gate.png differ diff --git a/textures/techage_inv_button_error.png b/textures/techage_inv_button_error.png index e4b0d1d..c01e36a 100644 Binary files a/textures/techage_inv_button_error.png and b/textures/techage_inv_button_error.png differ diff --git a/textures/techage_inv_button_standby.png b/textures/techage_inv_button_standby.png index a13b201..8e23989 100644 Binary files a/textures/techage_inv_button_standby.png and b/textures/techage_inv_button_standby.png differ diff --git a/textures/techage_laser.png b/textures/techage_laser.png new file mode 100644 index 0000000..6b0a6a7 Binary files /dev/null and b/textures/techage_laser.png differ diff --git a/textures/techage_lighter_burn.png b/textures/techage_lighter_burn.png index 52c435b..2950f59 100644 Binary files a/textures/techage_lighter_burn.png and b/textures/techage_lighter_burn.png differ diff --git a/textures/techage_liquid_filter_filler_bottom.png b/textures/techage_liquid_filter_filler_bottom.png index e26174c..5c7df5d 100644 Binary files a/textures/techage_liquid_filter_filler_bottom.png and b/textures/techage_liquid_filter_filler_bottom.png differ diff --git a/textures/techage_liquidsampler4.png b/textures/techage_liquidsampler4.png index 1d79431..7e81196 100644 Binary files a/textures/techage_liquidsampler4.png and b/textures/techage_liquidsampler4.png differ diff --git a/textures/techage_lua_controller.png b/textures/techage_lua_controller.png index b55cc4e..450dc9d 100644 Binary files a/textures/techage_lua_controller.png and b/textures/techage_lua_controller.png differ diff --git a/textures/techage_meridiumaxe.png b/textures/techage_meridiumaxe.png index 0ab3981..830410e 100644 Binary files a/textures/techage_meridiumaxe.png and b/textures/techage_meridiumaxe.png differ diff --git a/textures/techage_oil_drill.png b/textures/techage_oil_drill.png index 7d05c22..95a9aa6 100644 Binary files a/textures/techage_oil_drill.png and b/textures/techage_oil_drill.png differ diff --git a/textures/techage_oil_tower_top.png b/textures/techage_oil_tower_top.png index d28377c..f99daad 100644 Binary files a/textures/techage_oil_tower_top.png and b/textures/techage_oil_tower_top.png differ diff --git a/textures/techage_powder_inv.png b/textures/techage_powder_inv.png index 976a790..4ec099a 100644 Binary files a/textures/techage_powder_inv.png and b/textures/techage_powder_inv.png differ diff --git a/textures/techage_power_terminal_front.png b/textures/techage_power_terminal_front.png index 609c270..6ece161 100644 Binary files a/textures/techage_power_terminal_front.png and b/textures/techage_power_terminal_front.png differ diff --git a/textures/techage_power_terminal_side.png b/textures/techage_power_terminal_side.png index ada1b1a..6102404 100644 Binary files a/textures/techage_power_terminal_side.png and b/textures/techage_power_terminal_side.png differ diff --git a/textures/techage_programmer.png b/textures/techage_programmer.png index 03a08d7..6618e54 100644 Binary files a/textures/techage_programmer.png and b/textures/techage_programmer.png differ diff --git a/textures/techage_ramchip.png b/textures/techage_ramchip.png index bbc5194..efb064e 100644 Binary files a/textures/techage_ramchip.png and b/textures/techage_ramchip.png differ diff --git a/textures/techage_reactor_filler_plan.png b/textures/techage_reactor_filler_plan.png index f60cfac..2fb7a6e 100644 Binary files a/textures/techage_reactor_filler_plan.png and b/textures/techage_reactor_filler_plan.png differ diff --git a/textures/techage_reactor_side.png b/textures/techage_reactor_side.png index 21ddebf..9ac7a53 100644 Binary files a/textures/techage_reactor_side.png and b/textures/techage_reactor_side.png differ diff --git a/textures/techage_smoke.png b/textures/techage_smoke.png index 58a1648..344982c 100644 Binary files a/textures/techage_smoke.png and b/textures/techage_smoke.png differ diff --git a/textures/techage_solar_cell_mini_side.png b/textures/techage_solar_cell_mini_side.png index 43eef9e..5cd0274 100644 Binary files a/textures/techage_solar_cell_mini_side.png and b/textures/techage_solar_cell_mini_side.png differ diff --git a/textures/techage_steam_knee.png b/textures/techage_steam_knee.png index 5d2e9d8..27b2738 100644 Binary files a/textures/techage_steam_knee.png and b/textures/techage_steam_knee.png differ diff --git a/textures/techage_steam_knee2.png b/textures/techage_steam_knee2.png index d471a05..b52773d 100644 Binary files a/textures/techage_steam_knee2.png and b/textures/techage_steam_knee2.png differ diff --git a/textures/techage_ta3b.png b/textures/techage_ta3b.png index 4fcb2b0..24cf11e 100644 Binary files a/textures/techage_ta3b.png and b/textures/techage_ta3b.png differ diff --git a/textures/techage_trowel.png b/textures/techage_trowel.png index 87b90bd..11d7941 100644 Binary files a/textures/techage_trowel.png and b/textures/techage_trowel.png differ diff --git a/textures/techage_vacuum_tube.png b/textures/techage_vacuum_tube.png index 38309d0..146e9be 100644 Binary files a/textures/techage_vacuum_tube.png and b/textures/techage_vacuum_tube.png differ diff --git a/textures/techage_wlanchip.png b/textures/techage_wlanchip.png index c4ddb93..9ebe01c 100644 Binary files a/textures/techage_wlanchip.png and b/textures/techage_wlanchip.png differ