From d898aeacdb629707f2e7ca8f94d2e48de37b8eb3 Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Thu, 2 Jul 2020 21:26:18 +0200 Subject: [PATCH] v0.15 with improvements and bugfixes --- README.md | 32 ++-- doc/items.lua | 1 + doc/manual_DE.lua | 12 +- doc/manual_EN.lua | 13 +- init.lua | 1 + items/cement.lua | 3 +- lamps/growlight.lua | 6 +- liquids/liquid_pipe.lua | 6 +- liquids/valve.lua | 204 ++++++++++++++++++++++ logic/doorblock.lua | 41 ++++- logic/gateblock.lua | 12 +- manuals/manual_ta3_DE.md | 7 + manuals/manual_ta3_EN.md | 8 + manuals/manual_ta4_DE.md | 4 +- manuals/manual_ta4_EN.md | 5 +- manuals/toc_DE.md | 1 + manuals/toc_EN.md | 1 + sounds/techage_valve.ogg | Bin 0 -> 7074 bytes textures/techage_gaspipe_valve_closed.png | Bin 0 -> 254 bytes textures/techage_gaspipe_valve_hole.png | Bin 0 -> 274 bytes textures/techage_gaspipe_valve_open.png | Bin 0 -> 252 bytes 21 files changed, 322 insertions(+), 35 deletions(-) create mode 100644 liquids/valve.lua create mode 100644 sounds/techage_valve.ogg create mode 100644 textures/techage_gaspipe_valve_closed.png create mode 100644 textures/techage_gaspipe_valve_hole.png create mode 100644 textures/techage_gaspipe_valve_open.png diff --git a/README.md b/README.md index 1b1416b..08980dc 100644 --- a/README.md +++ b/README.md @@ -55,30 +55,32 @@ It is highly recommended that you install the following mods, too: * [compost](https://github.com/joe7575/compost): The garden soil is needed for the TA4 LED Grow Light based flower bed * [techpack_stairway](https://github.com/joe7575/techpack_stairway): Ladders, stairways, and bridges for your machines * [autobahn](https://github.com/joe7575/autobahn): Street blocks and slopes with stripes for faster traveling +* [[ta4_jetpack](https://github.com/joe7575/ta4_jetpack): A Jetpack with hydrogen as fuel and TA4 recipe -For large servers with many player, the following packages are recommended: +For large servers with many player `lsqlite3` is recommended. +The package has to be installed via [luarocks](https://luarocks.org/): -* `lua-mashal` for faster serialization/deserialization of data -* `lsqlite3` for storing node and network data - -Both packages are installed via [luarocks](https://luarocks.org/): - - luarocks install lua-marshal luarocks install lsqlite3 -To enable this `unsafe` packages, add 'techage' to the list of trusted mods in minetest.conf: +To enable this `unsafe` package, add 'techage' to the list of trusted mods in minetest.conf: secure.trusted_mods = techage For the installation of 'luarocks' (if not already available), see [luarocks](https://luarocks.org/) -If you enable 'lsqlite3' you also have to enable 'lua-marshal'. Available worlds will be converted -to 'lsqlite3' and 'lua-marshal', but there is no way back, so: +Available worlds will be converted to 'lsqlite3', but there is no way back, so: -** Never disable 'lsqlite3' and 'lua-marshal' for a world, which it was already used!** +** Never disable 'lsqlite3' for a world that has already been used!** -### History +### History + +**2020-07-02 V0.15** +- pipe valve added +- growlight bugfix +- further textures to gate/door blocks added +- cement recipe bugfix +- manual improvements **2020-06-29 V0.14** - quarry sound bugfix @@ -128,9 +130,3 @@ to 'lsqlite3' and 'lua-marshal', but there is no way back, so: **2019-06-16 V0.01** - First upload - -- -- -- -- - diff --git a/doc/items.lua b/doc/items.lua index 488eac6..ef5ac6b 100644 --- a/doc/items.lua +++ b/doc/items.lua @@ -113,6 +113,7 @@ techage.Items = { ta3_pipe = "techage:ta3_pipeS", ta3_pipe_wall_entry = "techage:ta3_pipe_wall_entry", ta3_mesecons_converter = "techage:ta3_mesecons_converter", + ta3_valve = "techage:ta3_valve_closed", ---------------------------- techage_ta4 = "techage_ta4.png", ta4_windturbine = "techage:ta4_wind_turbine", diff --git a/doc/manual_DE.lua b/doc/manual_DE.lua index 36c0d11..aeb9a73 100644 --- a/doc/manual_DE.lua +++ b/doc/manual_DE.lua @@ -76,6 +76,7 @@ techage.manual_DE.aTitel = { "3,TA Einfülltrichter / TA Liquid Filler", "3,TA4 Röhre / Pipe", "3,TA3 Rohr/Wanddurchbruch / TA3 Pipe Wall Entry Blöcke", + "3,TA Ventil / TA Valve", "2,Öl-Förderung", "3,TA3 Ölexplorer / Oil Explorer", "3,TA3 Ölbohrkiste / Oil Drill Box", @@ -716,6 +717,11 @@ techage.manual_DE.aText = { "\n".. "\n".. "\n", + "Für die gelben Röhren gibt es ein Ventil\\, welches über Mausklicks geöffnet und geschlossen werden kann.\n".. + "Das Ventil kann auch über on/off Kommandos angesteuert werden.\n".. + "\n".. + "\n".. + "\n", "Um deine Generatoren und Öfen mit Öl betreiben zu können\\, muss du zuerst nach Öl suchen und einen Bohrturm errichten und danach das Öl fördern.\n".. "Dazu dienen dir TA3 Ölexplorer\\, TA3 Ölbohrkiste und TA3 Ölpumpe.\n".. "\n".. @@ -1212,7 +1218,9 @@ techage.manual_DE.aText = { "\n".. "\n".. "\n", - "Der Reaktor dient dazu\\, die über den Destillationsturm oder aus anderen Rezepten gewonnenen Zutaten zu neuen Produkten weiter zu verarbeiten. Ein Reaktor besteht aus:\n".. + "Der Reaktor dient dazu\\, die über den Destillationsturm oder aus anderen Rezepten gewonnenen Zutaten zu neuen Produkten weiter zu verarbeiten. Der Plan links zeigt nur eine mögliche Variante\\, da die Anordnung der Silos und Tanks rezeptabhängig ist.\n".. + "\n".. + "Ein Reaktor besteht aus:\n".. "\n".. " - div. Tanks und Silos mit den Zutaten\\, die über Leitungen mit dem Dosierer verbunden sind\n".. " - optional einem Reaktorsockel\\, welcher die Abfälle aus dem Reaktor ableitet (nur bei Rezepten mit zwei Ausgangsstoffen notwendig)\n".. @@ -1560,6 +1568,7 @@ techage.manual_DE.aItemName = { "ta3_filler", "ta3_pipe", "ta3_pipe_wall_entry", + "ta3_valve", "techage_ta3", "ta3_oilexplorer", "ta3_drillbox", @@ -1754,6 +1763,7 @@ techage.manual_DE.aPlanTable = { "", "", "", + "", "ta3_loading", "", "", diff --git a/doc/manual_EN.lua b/doc/manual_EN.lua index 8ed08f0..7786168 100644 --- a/doc/manual_EN.lua +++ b/doc/manual_EN.lua @@ -76,6 +76,7 @@ techage.manual_EN.aTitel = { "3,TA Liquid Filler", "3,TA4 Pipe", "3,TA3 Pipe Wall Entry Blocks", + "3,TA Valve", "2,Oil Production", "3,TA3 Oil Explorer", "3,TA3 Oil Drill Box", @@ -714,6 +715,11 @@ techage.manual_EN.aText = { "\n".. "\n".. "\n", + "There is a valve for the yellow pipes\\, which can be opened and closed with a click of the mouse.\n".. + "The valve can also be controlled via on/off commands.\n".. + "\n".. + "\n".. + "\n", "In order to run your generators and stoves with oil\\, you must first look for oil and build a derrick and then extract the oil.\n".. "TA3 oil explorer\\, TA3 oil drilling box and TA3 pump jack are used for this.\n".. "\n".. @@ -1202,7 +1208,10 @@ techage.manual_EN.aText = { "\n".. "\n".. "\n", - "The reactor is used to process the ingredients obtained from the distillation tower or from other recipes into new products. A reactor consists of:\n".. + "The reactor is used to process the ingredients obtained from the distillation tower or from other recipes into new products.\n".. + "The plan on the left shows only one possible variant\\, since the arrangement of the silos and tanks depends on the recipe.\n".. + "\n".. + "A reactor consists of:\n".. "\n".. " - Various tanks and silos with the ingredients that are connected to the doser via pipes\n".. " - optionally a reactor base\\, which discharges the waste from the reactor (only necessary for recipes with two starting materials)\n".. @@ -1550,6 +1559,7 @@ techage.manual_EN.aItemName = { "ta3_filler", "ta3_pipe", "ta3_pipe_wall_entry", + "ta3_valve", "techage_ta3", "ta3_oilexplorer", "ta3_drillbox", @@ -1744,6 +1754,7 @@ techage.manual_EN.aPlanTable = { "", "", "", + "", "ta3_loading", "", "", diff --git a/init.lua b/init.lua index 4b08c3b..d603588 100644 --- a/init.lua +++ b/init.lua @@ -127,6 +127,7 @@ dofile(MP.."/steam_engine/flywheel.lua") -- Liquids I dofile(MP.."/liquids/liquid_pipe.lua") +dofile(MP.."/liquids/valve.lua") dofile(MP.."/liquids/node_api.lua") dofile(MP.."/liquids/pipe_wall_entry.lua") diff --git a/items/cement.lua b/items/cement.lua index 92a7d97..1947567 100644 --- a/items/cement.lua +++ b/items/cement.lua @@ -47,6 +47,7 @@ minetest.register_craft({ recipe = { {"bucket:bucket_water", "techage:cement_powder"}, {"group:sand", "default:gravel"}, - } + }, + replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}}, }) diff --git a/lamps/growlight.lua b/lamps/growlight.lua index c0bfd79..f0403fe 100644 --- a/lamps/growlight.lua +++ b/lamps/growlight.lua @@ -51,8 +51,10 @@ local function node_timer(pos, elapsed) if plant_node and plant_node.name == "air" then if mem.grow_pos[plant_idx] then local idx = math.floor(math.random(1, #Flowers)) - minetest.set_node(plant_pos, {name = Flowers[idx]}) - mem.grow_pos[plant_idx] = false + if Flowers[idx] then + minetest.set_node(plant_pos, {name = Flowers[idx]}) + mem.grow_pos[plant_idx] = false + end else mem.grow_pos[plant_idx] = true end diff --git a/liquids/liquid_pipe.lua b/liquids/liquid_pipe.lua index 4da00ee..19925c7 100644 --- a/liquids/liquid_pipe.lua +++ b/liquids/liquid_pipe.lua @@ -29,13 +29,15 @@ local Pipe = tubelib2.Tube:new({ tube_type = "pipe2", primary_node_names = { "techage:ta3_pipeS", "techage:ta3_pipeA", - "techage:ta3_pipe_wall_entry", + "techage:ta3_pipe_wall_entry", "techage:ta3_valve_open", }, - secondary_node_names = {}, + secondary_node_names = {"techage:ta3_valve_closed"}, after_place_tube = function(pos, param2, tube_type, num_tubes) local name = minetest.get_node(pos).name if name == "techage:ta3_pipe_wall_entry" then minetest.swap_node(pos, {name = "techage:ta3_pipe_wall_entry", param2 = param2}) + elseif name == "techage:ta3_valve_open" then + minetest.swap_node(pos, {name = "techage:ta3_valve_open", param2 = param2}) else minetest.swap_node(pos, {name = "techage:ta3_pipe"..tube_type, param2 = param2}) end diff --git a/liquids/valve.lua b/liquids/valve.lua new file mode 100644 index 0000000..d594667 --- /dev/null +++ b/liquids/valve.lua @@ -0,0 +1,204 @@ +--[[ + + TechAge + ======= + + Copyright (C) 2019-2020 Joachim Stolberg + + GPL v3 + See LICENSE.txt for more information + + TA3 Valve + +]]-- + +local S2P = minetest.string_to_pos +local P2S = minetest.pos_to_string +local M = minetest.get_meta +local S = techage.S +local Pipe = techage.LiquidPipe +local liquid = techage.liquid + +local function switch_node(pos, node) + if node.name == "techage:ta3_valve_open" then + node.name = "techage:ta3_valve_closed" + --node.name = "default:dirt" + minetest.swap_node(pos, node) + local number = M(pos):get_string("node_number") + M(pos):set_string("infotext", S("TA3 Valve closed")..": "..number) + Pipe:after_dig_tube(pos, {name = "techage:ta3_valve_open", param2 = node.param2}) + elseif node.name == "techage:ta3_valve_closed" then + node.name = "techage:ta3_valve_open" + minetest.swap_node(pos, node) + local number = M(pos):get_string("node_number") + M(pos):set_string("infotext", S("TA3 Valve open")..": "..number) + Pipe:after_place_tube(pos) + end + minetest.sound_play("techage_valve", { + pos = pos, + gain = 1, + max_hear_distance = 10}) +end + +local function on_rightclick(pos, node, clicker) + if not minetest.is_protected(pos, clicker:get_player_name()) then + switch_node(pos, node) + end +end + +--local function node_timer(pos, elapsed) +-- if techage.is_activeformspec(pos) then +-- local nvm = techage.get_nvm(pos) +-- M(pos):set_string("formspec", liquid.formspec(pos, nvm)) +-- return true +-- end +-- return false +--end + +--local function can_dig(pos, player) +-- if minetest.is_protected(pos, player:get_player_name()) then +-- return false +-- end +-- return liquid.is_empty(pos) +--end + +--local function take_liquid(pos, indir, name, amount) +-- amount, name = liquid.srv_take(pos, indir, name, amount) +-- if techage.is_activeformspec(pos) then +-- local nvm = techage.get_nvm(pos) +-- M(pos):set_string("formspec", liquid.formspec(pos, nvm)) +-- end +-- return amount, name +--end + +--local function put_liquid(pos, indir, name, amount) +-- -- check if it is not powder +-- local ndef = minetest.registered_craftitems[name] or {} +-- if not ndef.groups or ndef.groups.powder ~= 1 then +-- local leftover = liquid.srv_put(pos, indir, name, amount) +-- if techage.is_activeformspec(pos) then +-- local nvm = techage.get_nvm(pos) +-- M(pos):set_string("formspec", liquid.formspec(pos, nvm)) +-- end +-- return leftover +-- end +-- return amount +--end + +minetest.register_node("techage:ta3_valve_open", { + description = S("TA Valve"), + tiles = { + "techage_gaspipe.png^techage_gaspipe_valve_open.png^[transformR90", + "techage_gaspipe.png^techage_gaspipe_valve_open.png^[transformR90", + "techage_gaspipe.png^techage_gaspipe_valve_open.png", + "techage_gaspipe.png^techage_gaspipe_valve_open.png", + "techage_gaspipe_valve_hole.png", + "techage_gaspipe_valve_hole.png", + }, + + after_place_node = function(pos, placer, itemstack, pointed_thing) + if not Pipe:after_place_tube(pos, placer, pointed_thing) then + minetest.remove_node(pos) + return true + end + local meta = M(pos) + local nvm = techage.get_nvm(pos) + nvm.liquid = {} + local number = techage.add_node(pos, "techage:ta3_valve_closed") + meta:set_string("node_number", number) + meta:set_string("owner", placer:get_player_name()) + meta:set_string("infotext", S("TA3 Valve open")..": "..number) + return false + end, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + Pipe:after_dig_tube(pos, oldnode, oldmetadata) + end, + + on_rightclick = on_rightclick, + + paramtype2 = "facedir", -- important! + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-1/8, -1/8, -4/8, 1/8, 1/8, 4/8}, + {-3/16, -3/16, -3/16, 3/16, 3/16, 3/16}, + }, + }, + on_rotate = screwdriver.disallow, -- important! + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + groups = {crumbly = 2, cracky = 2, snappy = 2}, + sounds = default.node_sound_metal_defaults(), +}) + +minetest.register_node("techage:ta3_valve_closed", { + description = S("TA Valve"), + tiles = { + "techage_gaspipe.png^techage_gaspipe_valve_closed.png^[transformR90", + "techage_gaspipe.png^techage_gaspipe_valve_closed.png^[transformR90", + "techage_gaspipe.png^techage_gaspipe_valve_closed.png", + "techage_gaspipe.png^techage_gaspipe_valve_closed.png", + "techage_gaspipe_valve_hole.png", + "techage_gaspipe_valve_hole.png", + }, + + tubelib2_on_update2 = function(pos, outdir, tlib2, node) + liquid.update_network(pos, outdir) + end, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + Pipe:after_dig_node(pos) + techage.remove_node(pos, oldnode, oldmetadata) + end, + + on_rightclick = on_rightclick, + + paramtype2 = "facedir", -- important! + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-1/8, -1/8, -4/8, 1/8, 1/8, 4/8}, + {-3/16, -3/16, -3/16, 3/16, 3/16, 3/16}, + }, + }, + on_rotate = screwdriver.disallow, -- important! + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + groups = {crumbly = 2, cracky = 2, snappy = 2, not_in_creative_inventory = 1}, + sounds = default.node_sound_metal_defaults(), + drop = "techage:ta3_valve_open", +}) + +techage.register_node({"techage:ta3_valve_closed", "techage:ta3_valve_open"}, { + on_recv_message = function(pos, src, topic, payload) + local node = techage.get_node_lvm(pos) + if topic == "on" and node.name == "techage:ta3_valve_closed" then + switch_node(pos, node) + return true + elseif topic == "off" and node.name == "techage:ta3_valve_open" then + switch_node(pos, node) + return true + elseif topic == "state" then + if node.name == "techage:ta3_valve_open" then + return "on" + end + return "off" + else + return "unsupported" + end + end, +}) + +minetest.register_craft({ + output = "techage:ta3_valve_closed", + recipe = { + {"", "", ""}, + {"techage:ta3_pipeS", "techage:iron_ingot", "techage:ta3_pipeS"}, + {"", "", ""}, + }, +}) diff --git a/logic/doorblock.lua b/logic/doorblock.lua index 70108db..bdca9bd 100644 --- a/logic/doorblock.lua +++ b/logic/doorblock.lua @@ -16,27 +16,30 @@ local M = minetest.get_meta local S = techage.S -- See also gateblock!!! -local NUM_TEXTURES = 20 +local NUM_TEXTURES = 22 local sTextures = "Wood,Aspen Wood,Jungle Wood,Pine Wood,".. "Cobblestone,Sandstone,Stone,Desert Sandstone,".. "Desert Stone,Silver Sandstone,Mossy Cobble,Desert Cobble,".. "Copper,Steel,Tin,Coral,".. - "Glas,Obsidian Glas,Ice,Gate Wood" + "Glas,Obsidian Glas,Basalt Glass,Basalt Glass 2,".. + "Ice,Gate Wood" local tTextures = { ["Wood"]=1, ["Aspen Wood"]=2, ["Jungle Wood"]=3, ["Pine Wood"]=4, ["Cobblestone"]=5, ["Sandstone"]=6, ["Stone"]=7, ["Desert Sandstone"]=8, ["Desert Stone"]=9, ["Silver Sandstone"]=10, ["Mossy Cobble"]=11, ["Desert Cobble"]=12, ["Copper"]=13, ["Steel"]=14, ["Tin"]=15, ["Coral"]=16, - ["Glas"]=17, ["Obsidian Glas"]=18, ["Ice"]=19, ["Gate Wood"]=20, + ["Glas"]=17, ["Obsidian Glas"]=18, ["Basalt Glass"]=19, ["Basalt Glass 2"]=20, + ["Ice"]=21, ["Gate Wood"]=22, } local tPgns = {"default_wood.png", "default_aspen_wood.png", "default_junglewood.png", "default_pine_wood.png", "default_cobble.png", "default_sandstone.png", "default_stone.png", "default_desert_sandstone.png", "default_desert_stone_block.png", "default_silver_sandstone.png", "default_mossycobble.png", "default_desert_cobble.png", "default_copper_block.png", "default_steel_block.png", "default_tin_block.png", "default_coral_skeleton.png", - "default_glass.png", "default_obsidian_glass.png", "default_ice.png", "techage_gate.png"} + "default_glass.png", "default_obsidian_glass.png", "techage_basalt_glass.png", "techage_basalt_glass2.png", + "default_ice.png", "techage_gate.png"} for idx,pgn in ipairs(tPgns) do minetest.register_node("techage:doorblock"..idx, { @@ -84,6 +87,7 @@ for idx,pgn in ipairs(tPgns) do paramtype = "light", paramtype2 = "facedir", + use_texture_alpha = true, sunlight_propagates = true, sounds = default.node_sound_stone_defaults(), groups = {cracky=2, choppy=2, crumbly=2, not_in_creative_inventory = idx==NUM_TEXTURES and 0 or 1}, @@ -102,3 +106,32 @@ minetest.register_craft({ }, }) + + +minetest.register_lbm({ + label = "Upgrade doors and gates", + name = "techage:replace_legacy_doors_and_gates", + + nodenames = { + "techage:doorblock19", + "techage:doorblock20", + "techage:gateblock19", + "techage:gateblock20", + }, + + run_at_every_load = false, + + action = function(pos, node) + if node.name == "techage:doorblock19" then + node.name = "techage:doorblock21" + elseif node.name == "techage:doorblock20" then + node.name = "techage:doorblock22" + elseif node.name == "techage:gateblock19" then + node.name = "techage:gateblock21" + elseif node.name == "techage:gateblock20" then + node.name = "techage:gateblock22" + end + minetest.swap_node(pos, node) + end, +}) + diff --git a/logic/gateblock.lua b/logic/gateblock.lua index f5ceb55..b43a600 100644 --- a/logic/gateblock.lua +++ b/logic/gateblock.lua @@ -16,27 +16,30 @@ local M = minetest.get_meta local S = techage.S -- See also doorblock!!! -local NUM_TEXTURES = 20 +local NUM_TEXTURES = 22 local sTextures = "Wood,Aspen Wood,Jungle Wood,Pine Wood,".. "Cobblestone,Sandstone,Stone,Desert Sandstone,".. "Desert Stone,Silver Sandstone,Mossy Cobble,Desert Cobble,".. "Copper,Steel,Tin,Coral,".. - "Glas,Obsidian Glas,Ice,Gate Wood" + "Glas,Obsidian Glas,Basalt Glass,Basalt Glass 2,".. + "Ice,Gate Wood" local tTextures = { ["Wood"]=1, ["Aspen Wood"]=2, ["Jungle Wood"]=3, ["Pine Wood"]=4, ["Cobblestone"]=5, ["Sandstone"]=6, ["Stone"]=7, ["Desert Sandstone"]=8, ["Desert Stone"]=9, ["Silver Sandstone"]=10, ["Mossy Cobble"]=11, ["Desert Cobble"]=12, ["Copper"]=13, ["Steel"]=14, ["Tin"]=15, ["Coral"]=16, - ["Glas"]=17, ["Obsidian Glas"]=18, ["Ice"]=19, ["Gate Wood"]=20, + ["Glas"]=17, ["Obsidian Glas"]=18, ["Basalt Glass"]=19, ["Basalt Glass 2"]=20, + ["Ice"]=21, ["Gate Wood"]=22, } local tPgns = {"default_wood.png", "default_aspen_wood.png", "default_junglewood.png", "default_pine_wood.png", "default_cobble.png", "default_sandstone.png", "default_stone.png", "default_desert_sandstone.png", "default_desert_stone_block.png", "default_silver_sandstone.png", "default_mossycobble.png", "default_desert_cobble.png", "default_copper_block.png", "default_steel_block.png", "default_tin_block.png", "default_coral_skeleton.png", - "default_glass.png", "default_obsidian_glass.png", "default_ice.png", "techage_gate.png"} + "default_glass.png", "default_obsidian_glass.png", "techage_basalt_glass.png", "techage_basalt_glass2.png", + "default_ice.png", "techage_gate.png"} for idx,pgn in ipairs(tPgns) do minetest.register_node("techage:gateblock"..idx, { @@ -70,6 +73,7 @@ for idx,pgn in ipairs(tPgns) do paramtype = "light", paramtype2 = "facedir", + use_texture_alpha = true, sunlight_propagates = true, sounds = default.node_sound_stone_defaults(), groups = {cracky=2, choppy=2, crumbly=2, not_in_creative_inventory = idx==NUM_TEXTURES and 0 or 1}, diff --git a/manuals/manual_ta3_DE.md b/manuals/manual_ta3_DE.md index 1c65dac..0e9b713 100644 --- a/manuals/manual_ta3_DE.md +++ b/manuals/manual_ta3_DE.md @@ -298,6 +298,13 @@ Die Blöcke dienen als Wanddurchbrüche für Röhren, so dass keine Löcher offe [ta3_pipe_wall_entry|image] +### TA Ventil / TA Valve + +Für die gelben Röhren gibt es ein Ventil, welches über Mausklicks geöffnet und geschlossen werden kann. +Das Ventil kann auch über on/off Kommandos angesteuert werden. + +[ta3_valve|image] + ## Öl-Förderung diff --git a/manuals/manual_ta3_EN.md b/manuals/manual_ta3_EN.md index 6dbfa20..bcf463f 100644 --- a/manuals/manual_ta3_EN.md +++ b/manuals/manual_ta3_EN.md @@ -297,6 +297,14 @@ The blocks serve as wall openings for tubes, so that no holes remain open. [ta3_pipe_wall_entry|image] +### TA Valve + +There is a valve for the yellow pipes, which can be opened and closed with a click of the mouse. +The valve can also be controlled via on/off commands. + +[ta3_valve|image] + + ## Oil Production In order to run your generators and stoves with oil, you must first look for oil and build a derrick and then extract the oil. diff --git a/manuals/manual_ta4_DE.md b/manuals/manual_ta4_DE.md index b08d5bc..39ad7db 100644 --- a/manuals/manual_ta4_DE.md +++ b/manuals/manual_ta4_DE.md @@ -223,7 +223,9 @@ Die Brennstoffzelle kann bis zu 25 ku an Strom abgeben und benötigt dazu alle 4 ## Chemischer Reaktor / chemical reactor -Der Reaktor dient dazu, die über den Destillationsturm oder aus anderen Rezepten gewonnenen Zutaten zu neuen Produkten weiter zu verarbeiten. Ein Reaktor besteht aus: +Der Reaktor dient dazu, die über den Destillationsturm oder aus anderen Rezepten gewonnenen Zutaten zu neuen Produkten weiter zu verarbeiten. Der Plan links zeigt nur eine mögliche Variante, da die Anordnung der Silos und Tanks rezeptabhängig ist. + +Ein Reaktor besteht aus: - div. Tanks und Silos mit den Zutaten, die über Leitungen mit dem Dosierer verbunden sind - optional einem Reaktorsockel, welcher die Abfälle aus dem Reaktor ableitet (nur bei Rezepten mit zwei Ausgangsstoffen notwendig) - dem Reaktorständer, der auf den Sockel gesetzt werden muss (sofern vorhanden). Der Ständer hat einen Stromanschluss und zieht bei Betrieb 8 ku. diff --git a/manuals/manual_ta4_EN.md b/manuals/manual_ta4_EN.md index 9fc5120..8247146 100644 --- a/manuals/manual_ta4_EN.md +++ b/manuals/manual_ta4_EN.md @@ -223,7 +223,10 @@ The fuel cell can deliver up to 25 ku of electricity and needs a hydrogen item e ## Chemical Reactor -The reactor is used to process the ingredients obtained from the distillation tower or from other recipes into new products. A reactor consists of: +The reactor is used to process the ingredients obtained from the distillation tower or from other recipes into new products. +The plan on the left shows only one possible variant, since the arrangement of the silos and tanks depends on the recipe. + +A reactor consists of: - Various tanks and silos with the ingredients that are connected to the doser via pipes - optionally a reactor base, which discharges the waste from the reactor (only necessary for recipes with two starting materials) - the reactor stand, which must be placed on the base (if available). The stand has a power connection and draws 8 ku during operation. diff --git a/manuals/toc_DE.md b/manuals/toc_DE.md index a78fa08..8ca24f5 100644 --- a/manuals/toc_DE.md +++ b/manuals/toc_DE.md @@ -75,6 +75,7 @@ - [TA Einfülltrichter / TA Liquid Filler](./manual_ta3_DE.md#ta-einfülltrichter--ta-liquid-filler) - [TA4 Röhre / Pipe](./manual_ta3_DE.md#ta4-röhre--pipe) - [TA3 Rohr/Wanddurchbruch / TA3 Pipe Wall Entry Blöcke](./manual_ta3_DE.md#ta3-rohrwanddurchbruch--ta3-pipe-wall-entry-blöcke) + - [TA Ventil / TA Valve](./manual_ta3_DE.md#ta-ventil--ta-valve) - [Öl-Förderung](./manual_ta3_DE.md#Öl-förderung) - [TA3 Ölexplorer / Oil Explorer](./manual_ta3_DE.md#ta3-Ölexplorer--oil-explorer) - [TA3 Ölbohrkiste / Oil Drill Box](./manual_ta3_DE.md#ta3-Ölbohrkiste--oil-drill-box) diff --git a/manuals/toc_EN.md b/manuals/toc_EN.md index e708383..1c997e3 100644 --- a/manuals/toc_EN.md +++ b/manuals/toc_EN.md @@ -75,6 +75,7 @@ - [TA Liquid Filler](./manual_ta3_EN.md#ta-liquid-filler) - [TA4 Pipe](./manual_ta3_EN.md#ta4-pipe) - [TA3 Pipe Wall Entry Blocks](./manual_ta3_EN.md#ta3-pipe-wall-entry-blocks) + - [TA Valve](./manual_ta3_EN.md#ta-valve) - [Oil Production](./manual_ta3_EN.md#oil-production) - [TA3 Oil Explorer](./manual_ta3_EN.md#ta3-oil-explorer) - [TA3 Oil Drill Box](./manual_ta3_EN.md#ta3-oil-drill-box) diff --git a/sounds/techage_valve.ogg b/sounds/techage_valve.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7530c0d8c89d8758ba2c72c2e0c89805c21e9689 GIT binary patch literal 7074 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 literal 0 HcmV?d00001 diff --git a/textures/techage_gaspipe_valve_closed.png b/textures/techage_gaspipe_valve_closed.png new file mode 100644 index 0000000000000000000000000000000000000000..58b0b9050c4acda84a308e0a6c23c9b73531e289 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%Kn6%QAApC>)RQcKq1-8kcblJ{M_8syb>Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lAp5*D`7!q;#?UaqY4Guia%)dfy7-y$k$Z?u_>9E6L21ouq zUw$kpDJ$_3G*)c+VeM`D;vM_RAh8Blm(23jTobmOsrkc{?O(Y+ZN`BQ+#U{0!5mxW oefqYPfnoRL+Q->kibv+m+4o-1=SY;M11x;ortrKqrQ z@{Wp+N`Yyc1ztCVua7gdssA_UmEr-XRc+?&vL8=%-*~rtE%S#+rxS%Y7%n@g9|~me zv1(WoUnfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lAp5W=?7!q;#?UjSP2NZai4{S*i^*^8{X)^oE)aC7&?imwS zXf?j?b_`^i(b@6l-3qq5f7K#SF>UD3n0t2>>x3<5=G<%i{9bTHgW0Z!Rgv#cmoIoN ml=qv9;fBYz?)YGr6kq;5D+RVJRoEs7a)hU=pUXO@geCyz_EVAo literal 0 HcmV?d00001