diff --git a/basic_machines/chest.lua b/basic_machines/chest.lua index 1923939..4c0e867 100644 --- a/basic_machines/chest.lua +++ b/basic_machines/chest.lua @@ -193,9 +193,8 @@ minetest.register_node("techage:chest_ta4", { allow_metadata_inventory_take = allow_metadata_inventory_take, paramtype2 = "facedir", - groups = {choppy=2, cracky=2, crumbly=2, not_in_creative_inventory=1}, + groups = {choppy=2, cracky=2, crumbly=2}, is_ground_content = false, - drop = "techage:ta4_chest", sounds = default.node_sound_wood_defaults(), }) @@ -239,8 +238,8 @@ minetest.register_craft({ recipe = {"techage:chest_ta2", "default:chest"} }) ---minetest.register_craft({ --- type = "shapeless", --- output = "techage:chest_ta4", --- recipe = {"techage:chest_ta3", "default:chest"} ---}) +minetest.register_craft({ + type = "shapeless", + output = "techage:chest_ta4", + recipe = {"techage:chest_ta3", "default:chest"} +}) diff --git a/basic_machines/electronic_fab.lua b/basic_machines/electronic_fab.lua index 3064c8c..e93eba1 100644 --- a/basic_machines/electronic_fab.lua +++ b/basic_machines/electronic_fab.lua @@ -221,7 +221,7 @@ local node_name_ta2, node_name_ta3, node_name_ta4 = num_items = {0,1,1,1}, power_consumption = {0,8,12,18}, }, - {false, true, true, false}) -- TA2/TA3 + {false, true, true, true}) -- TA2/TA3/TA4 minetest.register_craft({ output = node_name_ta2, @@ -241,6 +241,15 @@ minetest.register_craft({ }, }) +minetest.register_craft({ + output = node_name_ta4, + recipe = { + {"", "default:diamond", ""}, + {"", node_name_ta3, ""}, + {"", "techage:ta4_wlanchip", ""}, + }, +}) + if minetest.global_exists("unified_inventory") then unified_inventory.register_craft_type("ta2_electronic_fab", { description = S("TA2 Ele Fab"), @@ -254,5 +263,11 @@ if minetest.global_exists("unified_inventory") then width = 2, height = 2, }) + unified_inventory.register_craft_type("ta4_electronic_fab", { + description = S("TA4 Ele Fab"), + icon = 'techage_filling_ta4.png^techage_appl_electronic_fab.png^techage_frame_ta4.png', + width = 2, + height = 2, + }) end diff --git a/basic_machines/ta4_chest.lua b/basic_machines/ta4_chest.lua index 2dc89fa..d8d1a2f 100644 --- a/basic_machines/ta4_chest.lua +++ b/basic_machines/ta4_chest.lua @@ -8,7 +8,7 @@ GPL v3 See LICENSE.txt for more information - TA4 Protected Chest + TA4 8x2000 Chest ]]-- @@ -16,7 +16,7 @@ local M = minetest.get_meta local S = techage.S -local DESCRIPTION = S("TA4 Protected Chest") +local DESCRIPTION = S("TA4 8x2000 Chest") local STACK_SIZE = 2000 local function gen_inv(nvm) @@ -263,7 +263,7 @@ minetest.register_node("techage:ta4_chest", { description = DESCRIPTION, tiles = { -- up, down, right, left, back, front - "techage_filling_ta4.png^techage_frame_ta4.png", + "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_chest_back_ta4.png", "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_chest_back_ta4.png", @@ -351,5 +351,11 @@ techage.register_node({"techage:ta4_chest"}, { minetest.register_craft({ type = "shapeless", output = "techage:ta4_chest", - recipe = {"techage:chest_ta3", "default:chest"} + recipe = {"techage:chest_ta4"} +}) + +minetest.register_craft({ + type = "shapeless", + output = "techage:chest_ta4", + recipe = {"techage:ta4_chest"} }) diff --git a/basis/fuel_lib.lua b/basis/fuel_lib.lua index 023e327..8ab59db 100644 --- a/basis/fuel_lib.lua +++ b/basis/fuel_lib.lua @@ -120,7 +120,7 @@ function techage.fuel.on_punch(pos, node, puncher, pointed_thing) local ldef = liquid.get_liquid_def(wielded_item) if ldef and ValidOilFuels[ldef.inv_item] then - local new_item = liquid.empty_on_punch(pos, nvm, wielded_item) + local new_item = liquid.empty_on_punch(pos, nvm, wielded_item, item_count) if new_item then puncher:set_wielded_item(new_item) M(pos):set_string("formspec", techage.fuel.formspec(pos, nvm)) diff --git a/basis/tubes_ta4.lua b/basis/tubes_ta4.lua index 2c3fdc8..0d96b49 100644 --- a/basis/tubes_ta4.lua +++ b/basis/tubes_ta4.lua @@ -99,7 +99,7 @@ minetest.register_node("techage:ta4_tubeA", { is_ground_content = false, groups = {choppy=2, cracky=3, stone=1, not_in_creative_inventory=1}, sounds = default.node_sound_wood_defaults(), - drop = "techage:tubeS", + drop = "techage:ta4_tubeS", }) minetest.register_craft({ diff --git a/doc/items.lua b/doc/items.lua index 7e815dd..ec7757d 100644 --- a/doc/items.lua +++ b/doc/items.lua @@ -155,5 +155,6 @@ techage.Items = { ta4_grinder = "techage:ta4_grinder_pas", ta4_detector = "techage:ta4_detector_off", ta4_chest = "techage:ta4_chest", + ta4_growlight = "techage:growlight_on", --ta4_ "", } diff --git a/doc/manual_DE.lua b/doc/manual_DE.lua index 68bca64..fe4e3b7 100644 --- a/doc/manual_DE.lua +++ b/doc/manual_DE.lua @@ -154,6 +154,9 @@ techage.manual_DE.aTitel = { "3,TA4 Spieler Detektor / Player Detector", "3,TA4 Zustandssammler / State Collector", "3,TA4 Detektor / Detector", + "2,TA4 Lampen", + "3,TA4 LED Pflanzenlampe / TA4 LED Grow Light", + "3,weitere Lampen kommen noch...", "2,Weitere TA4 Blöcke", "3,TA4 Tank / TA4 Tank", "3,TA4 Pumpe / TA4 Pump", @@ -161,7 +164,8 @@ techage.manual_DE.aTitel = { "3,TA4 Wasserpumpe / Water Pump", "3,TA4 Röhren / TA4 Tube", "3,TA4 Schieber / Pusher", - "3,TA4 Kiste / Chest", + "3,TA4 Kiste / TA4 Chest", + "3,TA4 8x2000 Kiste / TA4 8x2000 Chest", "3,TA4 Verteiler / Distributor", "3,TA4 Kiessieb / Gravel Sieve", "3,TA4 Mühle / Grinder", @@ -1254,6 +1258,20 @@ techage.manual_DE.aText = { "\n".. "\n".. "\n", + "TA4 beinhaltet eine Reihe von leistungsstarken Lampen\\, die eine bessere Ausleuchtung ermöglichen oder Spezialaufgaben übernehmen.\n".. + "\n", + "Die TA4 LED Pflanzenlampe ermöglicht ein schnelles und kräftiges Wachstum aller Pflanzen aus der 'farming' Mod. Die Lampe beleuchtet ein 3x3 großes Feld\\, so dass sich damit auch Pflanzen unter Tage anbauen lassen.\n".. + "Die Lampe muss mit einem Abstand von einem Block über dem Boden in der Mitte des 3x3 Feldes platziert werden.\n".. + "\n".. + "Zusätzlich kann die Lampe auch zur Blumenzucht genutzt werden. Wird die Lampe über ein 3x3 großes Blumenbeet aus \"Garden Soil\" (Mod 'compost') platziert\\, so wachsen dort die Blumen ganz von selbst (über und unter Tage).\n".. + "\n".. + "Abernten kann man die Blumen mit den Signs Bot\\, der auch über ein entsprechendes Zeichen verfügt\\, das vor das Blumenfeld gestellt werden muss.\n".. + "\n".. + "Die Lampe benötigt 1 ku Strom.\n".. + "\n".. + "\n".. + "\n", + "", "", "Siehe TA3 Tank.\n".. "\n".. @@ -1291,9 +1309,13 @@ techage.manual_DE.aText = { "\n".. "\n".. "\n", - "Die TA4 Kiste hat kein normales Inventar wir andere Kisten\\, sondern verfügt über 8 Speicher\\, wobei jeder Speicher bis zu 2000 Items einer Sorte aufnehmen kann. Über die orangefarbenen Taster können Items in den Speicher verschoben bzw. wieder heraus geholt werden. Die Kiste kann auch wie sonst üblich mit einem Schieber (TA2\\, TA3 oder TA4) gefüllt bzw. geleert werden.\n".. + "Die Funktion entspricht der von TA3. Die Kiste kann aber mehr Inhalt aufnehmen.\n".. "\n".. - "Der TA4 Kiste besitzt ein zusätzliches Kommandos für den Lua Controller:\n".. + "\n".. + "\n", + "Die TA4 8x2000 Kiste hat kein normales Inventar wir andere Kisten\\, sondern verfügt über 8 Speicher\\, wobei jeder Speicher bis zu 2000 Items einer Sorte aufnehmen kann. Über die orangefarbenen Taster können Items in den Speicher verschoben bzw. wieder heraus geholt werden. Die Kiste kann auch wie sonst üblich mit einem Schieber (TA2\\, TA3 oder TA4) gefüllt bzw. geleert werden.\n".. + "\n".. + "Der Kiste besitzt ein zusätzliches Kommandos für den Lua Controller:\n".. "\n".. " - 'count' dient zur Anfrage\\, wie viele Items in der Kiste sind.\nBeispiel 1: '$read_data(CHEST\\, \"count\")' --> Summe der Items über alle 8 Speicher\nBeispiel 2: '$read_data(CHEST\\, \"count\"\\, 2)' --> Anzahl der Items in Speicher 2 (zweiter von links)\n".. "\n".. @@ -1471,6 +1493,9 @@ techage.manual_DE.aItemName = { "ta4_collector", "ta4_detector", "", + "ta4_growlight", + "", + "", "ta4_tank", "ta4_pump", "ta4_furnaceheater", @@ -1478,6 +1503,7 @@ techage.manual_DE.aItemName = { "ta4_tube", "ta4_pusher", "ta4_chest", + "ta4_chest", "ta4_distributor", "ta4_gravelsieve", "ta4_grinder", @@ -1648,5 +1674,9 @@ techage.manual_DE.aPlanTable = { "", "", "", + "", + "", + "", + "", } diff --git a/furnace/firebox.lua b/furnace/firebox.lua index da832da..ef035f9 100644 --- a/furnace/firebox.lua +++ b/furnace/firebox.lua @@ -236,7 +236,18 @@ techage.register_node({"techage:furnace_firebox", "techage:furnace_firebox_on"}, stop_firebox(pos, nvm) booster_cmnd(pos, "stop") end - end + end, + on_node_load = function(pos, node) + local inv = M(pos):get_inventory() + if not inv:is_empty("fuel") then + local nvm = techage.get_nvm(pos) + nvm.liquid = nvm.liquid or {} + local count = inv:get_stack("fuel", 1):get_count() + nvm.liquid.amount = (nvm.liquid.amount or 0) + count + nvm.liquid.name = "techage:gasoline" + inv:set_stack("fuel", 1, nil) + end + end, }) Pipe:add_secondary_node_names({"techage:furnace_firebox", "techage:furnace_firebox_on"}) diff --git a/init.lua b/init.lua index 9c9df82..4a1eab7 100644 --- a/init.lua +++ b/init.lua @@ -140,12 +140,14 @@ else -- Lamps dofile(MP.."/lamps/lib.lua") + dofile(MP.."/lamps/lightblock.lua") dofile(MP.."/lamps/simplelamp.lua") dofile(MP.."/lamps/streetlamp.lua") dofile(MP.."/lamps/ceilinglamp.lua") dofile(MP.."/lamps/industriallamp1.lua") dofile(MP.."/lamps/industriallamp2.lua") dofile(MP.."/lamps/industriallamp3.lua") + dofile(MP.."/lamps/growlight.lua") -- Oil dofile(MP.."/oil/explore.lua") diff --git a/items/electronic.lua b/items/electronic.lua index a9d3343..d3520e5 100644 --- a/items/electronic.lua +++ b/items/electronic.lua @@ -34,6 +34,11 @@ minetest.register_craftitem("techage:ta4_ramchip", { inventory_image = "techage_ramchip.png", }) +minetest.register_craftitem("techage:ta4_leds", { + description = S("TA4 LEDs"), + inventory_image = "techage_leds.png", +}) + techage.recipes.add("ta2_electronic_fab", { output = "techage:vacuum_tube 2", @@ -54,3 +59,18 @@ techage.recipes.add("ta3_electronic_fab", { output = "techage:ta4_ramchip 8", input = {"default:mese_crystal 1", "default:gold_ingot 1", "default:copper_ingot 1", "techage:ta4_silicon_wafer 1"} }) + +techage.recipes.add("ta4_electronic_fab", { + output = "techage:ta4_wlanchip 8", + input = {"default:mese_crystal 1", "default:copper_ingot 1", "default:gold_ingot 1", "techage:ta4_silicon_wafer 1"} +}) + +techage.recipes.add("ta4_electronic_fab", { + output = "techage:ta4_ramchip 8", + input = {"default:mese_crystal 1", "default:gold_ingot 1", "default:copper_ingot 1", "techage:ta4_silicon_wafer 1"} +}) + +techage.recipes.add("ta4_electronic_fab", { + output = "techage:ta4_leds 8", + input = {"basic_materials:plastic_sheet 4", "basic_materials:copper_wire 1", "techage:ta4_silicon_wafer 1"} +}) diff --git a/lamps/growlight.lua b/lamps/growlight.lua new file mode 100644 index 0000000..43d6979 --- /dev/null +++ b/lamps/growlight.lua @@ -0,0 +1,144 @@ +--[[ + + TechAge + ======= + + Copyright (C) 2020 Joachim Stolberg + + GPL v3 + See LICENSE.txt for more information + + TA4 LED Grow Light + +]]-- + +local S = techage.S + +local CYCLE_TIME = 2 +local Cable = techage.ElectricCable +local power = techage.power +local Flowers = {} +local Plants = {} +-- 9 plant positions below the light +local Positions = { + {x = 0, y =-1, z = 0}, + {x =-1, y =-1, z = 0}, + {x = 0, y =-1, z =-1}, + {x = 1, y =-1, z = 0}, + {x = 0, y =-1, z = 1}, + {x =-1, y =-1, z =-1}, + {x = 1, y =-1, z = 1}, + {x =-1, y =-1, z = 1}, + {x = 1, y =-1, z =-1}, +} + +local function node_timer(pos, elapsed) + power.consumer_alive(pos, Cable, CYCLE_TIME) + local nvm = techage.get_nvm(pos) + nvm.tick = nvm.tick or math.random(15, 30) + nvm.tick = nvm.tick - 1 + if nvm.tick == 0 then + nvm.tick = math.random(15, 30) + local plant_pos = vector.add(pos, Positions[math.random(1, 9)]) + local soil_pos = {x = plant_pos.x, y = plant_pos.y - 1, z = plant_pos.z} + local plant_node = minetest.get_node(plant_pos) + local soil_node = minetest.get_node(soil_pos) + if soil_node and soil_node.name == "compost:garden_soil" then + if plant_node and plant_node.name == "air" then + local idx = math.floor(math.random(1, #Flowers)) + minetest.set_node(plant_pos, {name = Flowers[idx]}) + elseif plant_node and Plants[plant_node.name] then + local ndef = minetest.registered_nodes[plant_node.name] + ndef.on_timer(plant_pos, 200) + end + end + end + return true +end + +local function on_switch_lamp(pos, on) + techage.light_ring(pos, on) +end + +techage.register_lamp("techage:growlight", { + description = S("TA4 LED Grow Light"), + tiles = { + -- up, down, right, left, back, front + 'techage_growlight_off.png', + 'techage_growlight_back.png', + 'techage_growlight_off.png', + 'techage_growlight_side.png', + 'techage_growlight_side.png', + 'techage_growlight_side.png', + 'techage_growlight_side.png', + 'techage_growlight_side.png', + }, + + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, -13/32, 8/16}, + }, + }, + on_switch_lamp = on_switch_lamp, +},{ + description = S("TA4 LED Grow Light"), + tiles = { + -- up, down, right, left, back, front + 'techage_growlight_on.png', + 'techage_growlight_back.png', + 'techage_growlight_side.png', + 'techage_growlight_side.png', + 'techage_growlight_side.png', + 'techage_growlight_side.png', + }, + + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, -13/32, 8/16}, + }, + }, + on_timer = node_timer, + on_switch_lamp = on_switch_lamp, +}) + +minetest.register_craft({ + output = "techage:growlight_off", + recipe = { + {"techage:ta4_leds", "techage:basalt_glass_thin", "techage:ta4_leds"}, + {"techage:ta4_leds", "techage:ta4_leds", "techage:ta4_leds"}, + {"techage:ta4_leds", "techage:aluminum", "techage:ta4_leds"}, + }, +}) + +function techage.register_flower(name) + Flowers[#Flowers+1] = name +end + +function techage.register_plant(name) + Plants[name] = true +end + +minetest.after(1, function() + for name,_ in pairs(minetest.registered_decorations) do + if type(name) == "string" then + local mod = string.split(name, ":")[1] + if mod == "flowers" then + techage.register_flower(name) + end + end + end + for name,ndef in pairs(minetest.registered_nodes) do + if type(name) == "string" then + local mod = string.split(name, ":")[1] + if mod == "farming" then + if ndef.on_timer then -- probably a plant that still needs to grow + techage.register_plant(name) + end + end + end + end +end) diff --git a/lamps/lib.lua b/lamps/lib.lua index 1023c90..1fbc7f3 100644 --- a/lamps/lib.lua +++ b/lamps/lib.lua @@ -31,6 +31,10 @@ local function swap_node(pos, postfix) end node.name = parts[1].."_"..postfix minetest.swap_node(pos, node) + local ndef = minetest.registered_nodes[node.name] + if ndef.on_switch_lamp then + ndef.on_switch_lamp(pos, postfix == "on") + end end local function on_power(pos) @@ -130,7 +134,7 @@ function techage.register_lamp(basename, ndef_off, ndef_on) ndef_on.networks = net_def ndef_on.on_rightclick = lamp_on_rightclick ndef_on.on_rotate = ndef_on.on_rotate or on_rotate - ndef_on.on_timer = node_timer + ndef_on.on_timer = ndef_on.on_timer or node_timer ndef_on.paramtype = "light" ndef_on.light_source = minetest.LIGHT_MAX ndef_on.sunlight_propagates = true diff --git a/lamps/lightblock.lua b/lamps/lightblock.lua new file mode 100644 index 0000000..91c64a4 --- /dev/null +++ b/lamps/lightblock.lua @@ -0,0 +1,63 @@ +--[[ + + TechAge + ======= + + Copyright (C) 2020 Joachim Stolberg + + GPL v3 + See LICENSE.txt for more information + + TA4 Invisible Light Block + +]]-- + +local S = techage.S + +-- 9 light positions in a 3x3 field +local Positions = { + {x =-1, y = 0, z = 0}, + {x = 0, y = 0, z =-1}, + {x = 1, y = 0, z = 0}, + {x = 0, y = 0, z = 1}, + {x =-1, y = 0, z =-1}, + {x = 1, y = 0, z = 1}, + {x =-1, y = 0, z = 1}, + {x = 1, y = 0, z =-1}, +} + +minetest.register_node("techage:lightblock", { + description = "Techage Light Block", + drawtype = "airlike", + paramtype = "light", + light_source = minetest.LIGHT_MAX, + sunlight_propagates = true, + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + floodable = true, + is_ground_content = false, + groups = {not_in_creative_inventory=1}, +}) + +function techage.light_ring(center_pos, on) + for _,dir in ipairs(Positions) do + local pos1 = vector.add(center_pos, dir) + local node = techage.get_node_lvm(pos1) + print("light_ring", node.name, minetest.pos_to_string(pos1)) + if on then + if node.name == "air" then + minetest.set_node(pos1, {name = "techage:lightblock"}) + end + else + if node.name == "techage:lightblock" then + minetest.remove_node(pos1) + end + end + end + local pos1 = {x=center_pos.x-2, y=center_pos.y-2, z=center_pos.z-2} + local pos2 = {x=center_pos.x+2, y=center_pos.y+2, z=center_pos.z+2} + minetest.fix_light(pos1, pos2) +end + \ No newline at end of file diff --git a/manuals/manual_ta4_DE.md b/manuals/manual_ta4_DE.md index 4eb4852..3e7d663 100644 --- a/manuals/manual_ta4_DE.md +++ b/manuals/manual_ta4_DE.md @@ -409,6 +409,27 @@ Diesen Zähler kann man über das Kommando 'count' abfragen und über 'reset' zu [ta4_detector|image] +## TA4 Lampen + +TA4 beinhaltet eine Reihe von leistungsstarken Lampen, die eine bessere Ausleuchtung ermöglichen oder Spezialaufgaben übernehmen. + +### TA4 LED Pflanzenlampe / TA4 LED Grow Light + +Die TA4 LED Pflanzenlampe ermöglicht ein schnelles und kräftiges Wachstum aller Pflanzen aus der `farming` Mod. Die Lampe beleuchtet ein 3x3 großes Feld, so dass sich damit auch Pflanzen unter Tage anbauen lassen. +Die Lampe muss mit einem Abstand von einem Block über dem Boden in der Mitte des 3x3 Feldes platziert werden. + +Zusätzlich kann die Lampe auch zur Blumenzucht genutzt werden. Wird die Lampe über ein 3x3 großes Blumenbeet aus "Garden Soil" (Mod `compost`) platziert, so wachsen dort die Blumen ganz von selbst (über und unter Tage). + +Abernten kann man die Blumen mit den Signs Bot, der auch über ein entsprechendes Zeichen verfügt, das vor das Blumenfeld gestellt werden muss. + +Die Lampe benötigt 1 ku Strom. + +[ta4_growlight|image] + +### weitere Lampen kommen noch... + + + ## Weitere TA4 Blöcke ### TA4 Tank / TA4 Tank @@ -462,11 +483,17 @@ Der TA4 Schieber besitzt zwei zusätzliche Kommandos für den Lua Controller: [ta4_pusher|image] -### TA4 Kiste / Chest +### TA4 Kiste / TA4 Chest -Die TA4 Kiste hat kein normales Inventar wir andere Kisten, sondern verfügt über 8 Speicher, wobei jeder Speicher bis zu 2000 Items einer Sorte aufnehmen kann. Über die orangefarbenen Taster können Items in den Speicher verschoben bzw. wieder heraus geholt werden. Die Kiste kann auch wie sonst üblich mit einem Schieber (TA2, TA3 oder TA4) gefüllt bzw. geleert werden. +Die Funktion entspricht der von TA3. Die Kiste kann aber mehr Inhalt aufnehmen. -Der TA4 Kiste besitzt ein zusätzliches Kommandos für den Lua Controller: +[ta4_chest|image] + +### TA4 8x2000 Kiste / TA4 8x2000 Chest + +Die TA4 8x2000 Kiste hat kein normales Inventar wir andere Kisten, sondern verfügt über 8 Speicher, wobei jeder Speicher bis zu 2000 Items einer Sorte aufnehmen kann. Über die orangefarbenen Taster können Items in den Speicher verschoben bzw. wieder heraus geholt werden. Die Kiste kann auch wie sonst üblich mit einem Schieber (TA2, TA3 oder TA4) gefüllt bzw. geleert werden. + +Der Kiste besitzt ein zusätzliches Kommandos für den Lua Controller: - `count` dient zur Anfrage, wie viele Items in der Kiste sind. Beispiel 1: `$read_data(CHEST, "count")` --> Summe der Items über alle 8 Speicher diff --git a/manuals/toc_DE.md b/manuals/toc_DE.md index 391056c..2559702 100644 --- a/manuals/toc_DE.md +++ b/manuals/toc_DE.md @@ -153,6 +153,9 @@ - [TA4 Spieler Detektor / Player Detector](./manual_ta4_DE.md#ta4-spieler-detektor--player-detector) - [TA4 Zustandssammler / State Collector](./manual_ta4_DE.md#ta4-zustandssammler--state-collector) - [TA4 Detektor / Detector](./manual_ta4_DE.md#ta4-detektor--detector) + - [TA4 Lampen](./manual_ta4_DE.md#ta4-lampen) + - [TA4 LED Pflanzenlampe / TA4 LED Grow Light](./manual_ta4_DE.md#ta4-led-pflanzenlampe--ta4-led-grow-light) + - [weitere Lampen kommen noch...](./manual_ta4_DE.md#weitere-lampen-kommen-noch...) - [Weitere TA4 Blöcke](./manual_ta4_DE.md#weitere-ta4-blöcke) - [TA4 Tank / TA4 Tank](./manual_ta4_DE.md#ta4-tank--ta4-tank) - [TA4 Pumpe / TA4 Pump](./manual_ta4_DE.md#ta4-pumpe--ta4-pump) @@ -160,7 +163,8 @@ - [TA4 Wasserpumpe / Water Pump](./manual_ta4_DE.md#ta4-wasserpumpe--water-pump) - [TA4 Röhren / TA4 Tube](./manual_ta4_DE.md#ta4-röhren--ta4-tube) - [TA4 Schieber / Pusher](./manual_ta4_DE.md#ta4-schieber--pusher) - - [TA4 Kiste / Chest](./manual_ta4_DE.md#ta4-kiste--chest) + - [TA4 Kiste / TA4 Chest](./manual_ta4_DE.md#ta4-kiste--ta4-chest) + - [TA4 8x2000 Kiste / TA4 8x2000 Chest](./manual_ta4_DE.md#ta4-8x2000-kiste--ta4-8x2000-chest) - [TA4 Verteiler / Distributor](./manual_ta4_DE.md#ta4-verteiler--distributor) - [TA4 Kiessieb / Gravel Sieve](./manual_ta4_DE.md#ta4-kiessieb--gravel-sieve) - [TA4 Mühle / Grinder](./manual_ta4_DE.md#ta4-mühle--grinder) \ No newline at end of file diff --git a/textures/techage_growlight_back.png b/textures/techage_growlight_back.png new file mode 100644 index 0000000..b3672af Binary files /dev/null and b/textures/techage_growlight_back.png differ diff --git a/textures/techage_growlight_off.png b/textures/techage_growlight_off.png new file mode 100644 index 0000000..a63a778 Binary files /dev/null and b/textures/techage_growlight_off.png differ diff --git a/textures/techage_growlight_on.png b/textures/techage_growlight_on.png new file mode 100644 index 0000000..886fdd8 Binary files /dev/null and b/textures/techage_growlight_on.png differ diff --git a/textures/techage_growlight_side.png b/textures/techage_growlight_side.png new file mode 100644 index 0000000..58986dd Binary files /dev/null and b/textures/techage_growlight_side.png differ diff --git a/textures/techage_leds.png b/textures/techage_leds.png new file mode 100644 index 0000000..d5f2e60 Binary files /dev/null and b/textures/techage_leds.png differ