v0.15 with improvements and bugfixes
This commit is contained in:
parent
3e45868372
commit
d898aeacdb
30
README.md
30
README.md
@ -55,31 +55,33 @@ 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
|
* [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
|
* [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
|
* [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
|
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
|
secure.trusted_mods = techage
|
||||||
|
|
||||||
For the installation of 'luarocks' (if not already available), see [luarocks](https://luarocks.org/)
|
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
|
Available worlds will be converted to 'lsqlite3', but there is no way back, so:
|
||||||
to 'lsqlite3' and 'lua-marshal', 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**
|
**2020-06-29 V0.14**
|
||||||
- quarry sound bugfix
|
- quarry sound bugfix
|
||||||
- grinder bugfix
|
- grinder bugfix
|
||||||
@ -128,9 +130,3 @@ to 'lsqlite3' and 'lua-marshal', but there is no way back, so:
|
|||||||
|
|
||||||
**2019-06-16 V0.01**
|
**2019-06-16 V0.01**
|
||||||
- First upload
|
- First upload
|
||||||
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
|
|
||||||
|
@ -113,6 +113,7 @@ techage.Items = {
|
|||||||
ta3_pipe = "techage:ta3_pipeS",
|
ta3_pipe = "techage:ta3_pipeS",
|
||||||
ta3_pipe_wall_entry = "techage:ta3_pipe_wall_entry",
|
ta3_pipe_wall_entry = "techage:ta3_pipe_wall_entry",
|
||||||
ta3_mesecons_converter = "techage:ta3_mesecons_converter",
|
ta3_mesecons_converter = "techage:ta3_mesecons_converter",
|
||||||
|
ta3_valve = "techage:ta3_valve_closed",
|
||||||
----------------------------
|
----------------------------
|
||||||
techage_ta4 = "techage_ta4.png",
|
techage_ta4 = "techage_ta4.png",
|
||||||
ta4_windturbine = "techage:ta4_wind_turbine",
|
ta4_windturbine = "techage:ta4_wind_turbine",
|
||||||
|
@ -76,6 +76,7 @@ techage.manual_DE.aTitel = {
|
|||||||
"3,TA Einfülltrichter / TA Liquid Filler",
|
"3,TA Einfülltrichter / TA Liquid Filler",
|
||||||
"3,TA4 Röhre / Pipe",
|
"3,TA4 Röhre / Pipe",
|
||||||
"3,TA3 Rohr/Wanddurchbruch / TA3 Pipe Wall Entry Blöcke",
|
"3,TA3 Rohr/Wanddurchbruch / TA3 Pipe Wall Entry Blöcke",
|
||||||
|
"3,TA Ventil / TA Valve",
|
||||||
"2,Öl-Förderung",
|
"2,Öl-Förderung",
|
||||||
"3,TA3 Ölexplorer / Oil Explorer",
|
"3,TA3 Ölexplorer / Oil Explorer",
|
||||||
"3,TA3 Ölbohrkiste / Oil Drill Box",
|
"3,TA3 Ölbohrkiste / Oil Drill Box",
|
||||||
@ -716,6 +717,11 @@ techage.manual_DE.aText = {
|
|||||||
"\n"..
|
"\n"..
|
||||||
"\n"..
|
"\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"..
|
"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"..
|
"Dazu dienen dir TA3 Ölexplorer\\, TA3 Ölbohrkiste und TA3 Ölpumpe.\n"..
|
||||||
"\n"..
|
"\n"..
|
||||||
@ -1212,7 +1218,9 @@ techage.manual_DE.aText = {
|
|||||||
"\n"..
|
"\n"..
|
||||||
"\n"..
|
"\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"..
|
"\n"..
|
||||||
" - div. Tanks und Silos mit den Zutaten\\, die über Leitungen mit dem Dosierer verbunden sind\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"..
|
" - 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_filler",
|
||||||
"ta3_pipe",
|
"ta3_pipe",
|
||||||
"ta3_pipe_wall_entry",
|
"ta3_pipe_wall_entry",
|
||||||
|
"ta3_valve",
|
||||||
"techage_ta3",
|
"techage_ta3",
|
||||||
"ta3_oilexplorer",
|
"ta3_oilexplorer",
|
||||||
"ta3_drillbox",
|
"ta3_drillbox",
|
||||||
@ -1754,6 +1763,7 @@ techage.manual_DE.aPlanTable = {
|
|||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
|
"",
|
||||||
"ta3_loading",
|
"ta3_loading",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
|
@ -76,6 +76,7 @@ techage.manual_EN.aTitel = {
|
|||||||
"3,TA Liquid Filler",
|
"3,TA Liquid Filler",
|
||||||
"3,TA4 Pipe",
|
"3,TA4 Pipe",
|
||||||
"3,TA3 Pipe Wall Entry Blocks",
|
"3,TA3 Pipe Wall Entry Blocks",
|
||||||
|
"3,TA Valve",
|
||||||
"2,Oil Production",
|
"2,Oil Production",
|
||||||
"3,TA3 Oil Explorer",
|
"3,TA3 Oil Explorer",
|
||||||
"3,TA3 Oil Drill Box",
|
"3,TA3 Oil Drill Box",
|
||||||
@ -714,6 +715,11 @@ techage.manual_EN.aText = {
|
|||||||
"\n"..
|
"\n"..
|
||||||
"\n"..
|
"\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"..
|
"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"..
|
"TA3 oil explorer\\, TA3 oil drilling box and TA3 pump jack are used for this.\n"..
|
||||||
"\n"..
|
"\n"..
|
||||||
@ -1202,7 +1208,10 @@ techage.manual_EN.aText = {
|
|||||||
"\n"..
|
"\n"..
|
||||||
"\n"..
|
"\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"..
|
"\n"..
|
||||||
" - Various tanks and silos with the ingredients that are connected to the doser via pipes\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"..
|
" - 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_filler",
|
||||||
"ta3_pipe",
|
"ta3_pipe",
|
||||||
"ta3_pipe_wall_entry",
|
"ta3_pipe_wall_entry",
|
||||||
|
"ta3_valve",
|
||||||
"techage_ta3",
|
"techage_ta3",
|
||||||
"ta3_oilexplorer",
|
"ta3_oilexplorer",
|
||||||
"ta3_drillbox",
|
"ta3_drillbox",
|
||||||
@ -1744,6 +1754,7 @@ techage.manual_EN.aPlanTable = {
|
|||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
|
"",
|
||||||
"ta3_loading",
|
"ta3_loading",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
|
1
init.lua
1
init.lua
@ -127,6 +127,7 @@ dofile(MP.."/steam_engine/flywheel.lua")
|
|||||||
|
|
||||||
-- Liquids I
|
-- Liquids I
|
||||||
dofile(MP.."/liquids/liquid_pipe.lua")
|
dofile(MP.."/liquids/liquid_pipe.lua")
|
||||||
|
dofile(MP.."/liquids/valve.lua")
|
||||||
dofile(MP.."/liquids/node_api.lua")
|
dofile(MP.."/liquids/node_api.lua")
|
||||||
dofile(MP.."/liquids/pipe_wall_entry.lua")
|
dofile(MP.."/liquids/pipe_wall_entry.lua")
|
||||||
|
|
||||||
|
@ -47,6 +47,7 @@ minetest.register_craft({
|
|||||||
recipe = {
|
recipe = {
|
||||||
{"bucket:bucket_water", "techage:cement_powder"},
|
{"bucket:bucket_water", "techage:cement_powder"},
|
||||||
{"group:sand", "default:gravel"},
|
{"group:sand", "default:gravel"},
|
||||||
}
|
},
|
||||||
|
replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -51,8 +51,10 @@ local function node_timer(pos, elapsed)
|
|||||||
if plant_node and plant_node.name == "air" then
|
if plant_node and plant_node.name == "air" then
|
||||||
if mem.grow_pos[plant_idx] then
|
if mem.grow_pos[plant_idx] then
|
||||||
local idx = math.floor(math.random(1, #Flowers))
|
local idx = math.floor(math.random(1, #Flowers))
|
||||||
minetest.set_node(plant_pos, {name = Flowers[idx]})
|
if Flowers[idx] then
|
||||||
mem.grow_pos[plant_idx] = false
|
minetest.set_node(plant_pos, {name = Flowers[idx]})
|
||||||
|
mem.grow_pos[plant_idx] = false
|
||||||
|
end
|
||||||
else
|
else
|
||||||
mem.grow_pos[plant_idx] = true
|
mem.grow_pos[plant_idx] = true
|
||||||
end
|
end
|
||||||
|
@ -29,13 +29,15 @@ local Pipe = tubelib2.Tube:new({
|
|||||||
tube_type = "pipe2",
|
tube_type = "pipe2",
|
||||||
primary_node_names = {
|
primary_node_names = {
|
||||||
"techage:ta3_pipeS", "techage:ta3_pipeA",
|
"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)
|
after_place_tube = function(pos, param2, tube_type, num_tubes)
|
||||||
local name = minetest.get_node(pos).name
|
local name = minetest.get_node(pos).name
|
||||||
if name == "techage:ta3_pipe_wall_entry" then
|
if name == "techage:ta3_pipe_wall_entry" then
|
||||||
minetest.swap_node(pos, {name = "techage:ta3_pipe_wall_entry", param2 = param2})
|
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
|
else
|
||||||
minetest.swap_node(pos, {name = "techage:ta3_pipe"..tube_type, param2 = param2})
|
minetest.swap_node(pos, {name = "techage:ta3_pipe"..tube_type, param2 = param2})
|
||||||
end
|
end
|
||||||
|
204
liquids/valve.lua
Normal file
204
liquids/valve.lua
Normal file
@ -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"},
|
||||||
|
{"", "", ""},
|
||||||
|
},
|
||||||
|
})
|
@ -16,27 +16,30 @@ local M = minetest.get_meta
|
|||||||
local S = techage.S
|
local S = techage.S
|
||||||
|
|
||||||
-- See also gateblock!!!
|
-- See also gateblock!!!
|
||||||
local NUM_TEXTURES = 20
|
local NUM_TEXTURES = 22
|
||||||
|
|
||||||
local sTextures = "Wood,Aspen Wood,Jungle Wood,Pine Wood,"..
|
local sTextures = "Wood,Aspen Wood,Jungle Wood,Pine Wood,"..
|
||||||
"Cobblestone,Sandstone,Stone,Desert Sandstone,"..
|
"Cobblestone,Sandstone,Stone,Desert Sandstone,"..
|
||||||
"Desert Stone,Silver Sandstone,Mossy Cobble,Desert Cobble,"..
|
"Desert Stone,Silver Sandstone,Mossy Cobble,Desert Cobble,"..
|
||||||
"Copper,Steel,Tin,Coral,"..
|
"Copper,Steel,Tin,Coral,"..
|
||||||
"Glas,Obsidian Glas,Ice,Gate Wood"
|
"Glas,Obsidian Glas,Basalt Glass,Basalt Glass 2,"..
|
||||||
|
"Ice,Gate Wood"
|
||||||
|
|
||||||
local tTextures = {
|
local tTextures = {
|
||||||
["Wood"]=1, ["Aspen Wood"]=2, ["Jungle Wood"]=3, ["Pine Wood"]=4,
|
["Wood"]=1, ["Aspen Wood"]=2, ["Jungle Wood"]=3, ["Pine Wood"]=4,
|
||||||
["Cobblestone"]=5, ["Sandstone"]=6, ["Stone"]=7, ["Desert Sandstone"]=8,
|
["Cobblestone"]=5, ["Sandstone"]=6, ["Stone"]=7, ["Desert Sandstone"]=8,
|
||||||
["Desert Stone"]=9, ["Silver Sandstone"]=10, ["Mossy Cobble"]=11, ["Desert Cobble"]=12,
|
["Desert Stone"]=9, ["Silver Sandstone"]=10, ["Mossy Cobble"]=11, ["Desert Cobble"]=12,
|
||||||
["Copper"]=13, ["Steel"]=14, ["Tin"]=15, ["Coral"]=16,
|
["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",
|
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_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_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_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
|
for idx,pgn in ipairs(tPgns) do
|
||||||
minetest.register_node("techage:doorblock"..idx, {
|
minetest.register_node("techage:doorblock"..idx, {
|
||||||
@ -84,6 +87,7 @@ for idx,pgn in ipairs(tPgns) do
|
|||||||
|
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
|
use_texture_alpha = true,
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
sounds = default.node_sound_stone_defaults(),
|
sounds = default.node_sound_stone_defaults(),
|
||||||
groups = {cracky=2, choppy=2, crumbly=2, not_in_creative_inventory = idx==NUM_TEXTURES and 0 or 1},
|
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,
|
||||||
|
})
|
||||||
|
|
||||||
|
@ -16,27 +16,30 @@ local M = minetest.get_meta
|
|||||||
local S = techage.S
|
local S = techage.S
|
||||||
|
|
||||||
-- See also doorblock!!!
|
-- See also doorblock!!!
|
||||||
local NUM_TEXTURES = 20
|
local NUM_TEXTURES = 22
|
||||||
|
|
||||||
local sTextures = "Wood,Aspen Wood,Jungle Wood,Pine Wood,"..
|
local sTextures = "Wood,Aspen Wood,Jungle Wood,Pine Wood,"..
|
||||||
"Cobblestone,Sandstone,Stone,Desert Sandstone,"..
|
"Cobblestone,Sandstone,Stone,Desert Sandstone,"..
|
||||||
"Desert Stone,Silver Sandstone,Mossy Cobble,Desert Cobble,"..
|
"Desert Stone,Silver Sandstone,Mossy Cobble,Desert Cobble,"..
|
||||||
"Copper,Steel,Tin,Coral,"..
|
"Copper,Steel,Tin,Coral,"..
|
||||||
"Glas,Obsidian Glas,Ice,Gate Wood"
|
"Glas,Obsidian Glas,Basalt Glass,Basalt Glass 2,"..
|
||||||
|
"Ice,Gate Wood"
|
||||||
|
|
||||||
local tTextures = {
|
local tTextures = {
|
||||||
["Wood"]=1, ["Aspen Wood"]=2, ["Jungle Wood"]=3, ["Pine Wood"]=4,
|
["Wood"]=1, ["Aspen Wood"]=2, ["Jungle Wood"]=3, ["Pine Wood"]=4,
|
||||||
["Cobblestone"]=5, ["Sandstone"]=6, ["Stone"]=7, ["Desert Sandstone"]=8,
|
["Cobblestone"]=5, ["Sandstone"]=6, ["Stone"]=7, ["Desert Sandstone"]=8,
|
||||||
["Desert Stone"]=9, ["Silver Sandstone"]=10, ["Mossy Cobble"]=11, ["Desert Cobble"]=12,
|
["Desert Stone"]=9, ["Silver Sandstone"]=10, ["Mossy Cobble"]=11, ["Desert Cobble"]=12,
|
||||||
["Copper"]=13, ["Steel"]=14, ["Tin"]=15, ["Coral"]=16,
|
["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",
|
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_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_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_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
|
for idx,pgn in ipairs(tPgns) do
|
||||||
minetest.register_node("techage:gateblock"..idx, {
|
minetest.register_node("techage:gateblock"..idx, {
|
||||||
@ -70,6 +73,7 @@ for idx,pgn in ipairs(tPgns) do
|
|||||||
|
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
|
use_texture_alpha = true,
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
sounds = default.node_sound_stone_defaults(),
|
sounds = default.node_sound_stone_defaults(),
|
||||||
groups = {cracky=2, choppy=2, crumbly=2, not_in_creative_inventory = idx==NUM_TEXTURES and 0 or 1},
|
groups = {cracky=2, choppy=2, crumbly=2, not_in_creative_inventory = idx==NUM_TEXTURES and 0 or 1},
|
||||||
|
@ -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]
|
[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
|
## Öl-Förderung
|
||||||
|
|
||||||
|
@ -297,6 +297,14 @@ The blocks serve as wall openings for tubes, so that no holes remain open.
|
|||||||
[ta3_pipe_wall_entry|image]
|
[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
|
## 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.
|
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.
|
||||||
|
@ -223,7 +223,9 @@ Die Brennstoffzelle kann bis zu 25 ku an Strom abgeben und benötigt dazu alle 4
|
|||||||
|
|
||||||
## Chemischer Reaktor / chemical reactor
|
## 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
|
- 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)
|
- 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.
|
- dem Reaktorständer, der auf den Sockel gesetzt werden muss (sofern vorhanden). Der Ständer hat einen Stromanschluss und zieht bei Betrieb 8 ku.
|
||||||
|
@ -223,7 +223,10 @@ The fuel cell can deliver up to 25 ku of electricity and needs a hydrogen item e
|
|||||||
|
|
||||||
## Chemical Reactor
|
## 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
|
- 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)
|
- 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.
|
- the reactor stand, which must be placed on the base (if available). The stand has a power connection and draws 8 ku during operation.
|
||||||
|
@ -75,6 +75,7 @@
|
|||||||
- [TA Einfülltrichter / TA Liquid Filler](./manual_ta3_DE.md#ta-einfülltrichter--ta-liquid-filler)
|
- [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)
|
- [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)
|
- [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)
|
- [Öl-Förderung](./manual_ta3_DE.md#Öl-förderung)
|
||||||
- [TA3 Ölexplorer / Oil Explorer](./manual_ta3_DE.md#ta3-Ölexplorer--oil-explorer)
|
- [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)
|
- [TA3 Ölbohrkiste / Oil Drill Box](./manual_ta3_DE.md#ta3-Ölbohrkiste--oil-drill-box)
|
||||||
|
@ -75,6 +75,7 @@
|
|||||||
- [TA Liquid Filler](./manual_ta3_EN.md#ta-liquid-filler)
|
- [TA Liquid Filler](./manual_ta3_EN.md#ta-liquid-filler)
|
||||||
- [TA4 Pipe](./manual_ta3_EN.md#ta4-pipe)
|
- [TA4 Pipe](./manual_ta3_EN.md#ta4-pipe)
|
||||||
- [TA3 Pipe Wall Entry Blocks](./manual_ta3_EN.md#ta3-pipe-wall-entry-blocks)
|
- [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)
|
- [Oil Production](./manual_ta3_EN.md#oil-production)
|
||||||
- [TA3 Oil Explorer](./manual_ta3_EN.md#ta3-oil-explorer)
|
- [TA3 Oil Explorer](./manual_ta3_EN.md#ta3-oil-explorer)
|
||||||
- [TA3 Oil Drill Box](./manual_ta3_EN.md#ta3-oil-drill-box)
|
- [TA3 Oil Drill Box](./manual_ta3_EN.md#ta3-oil-drill-box)
|
||||||
|
BIN
sounds/techage_valve.ogg
Normal file
BIN
sounds/techage_valve.ogg
Normal file
Binary file not shown.
BIN
textures/techage_gaspipe_valve_closed.png
Normal file
BIN
textures/techage_gaspipe_valve_closed.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 254 B |
BIN
textures/techage_gaspipe_valve_hole.png
Normal file
BIN
textures/techage_gaspipe_valve_hole.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 274 B |
BIN
textures/techage_gaspipe_valve_open.png
Normal file
BIN
textures/techage_gaspipe_valve_open.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 252 B |
Loading…
Reference in New Issue
Block a user