Oil as liquid, barrels, tanks, and pumps added

This commit is contained in:
Joachim Stolberg 2019-11-03 21:21:03 +01:00
parent b1ea6a2d6a
commit c33bc5d11c
21 changed files with 553 additions and 206 deletions

View File

@ -148,22 +148,22 @@ local function dosing(pos, mem, elapsed)
print("dosing", item.name, dump(liquids))
local outdir = liquids[item.name]
if not outdir then
State:fault(pos, mem, S("input liquid missing"))
State:fault(pos, mem, S("input missing"))
return
end
if liquid.take(pos, outdir, item.name, item.num) < item.num then
State:fault(pos, mem, S("input liquid gone out"))
State:fault(pos, mem, S("input missing"))
return
end
end
end
-- output
if not reactor_cmnd(pos, "output", recipe.output.name) then
State:fault(pos, mem, S("output liquid blocked"))
State:fault(pos, mem, S("output blocked"))
return
end
if not reactor_cmnd(pos, "waste", recipe.waste.name) then
State:fault(pos, mem, S("output liquid blocked"))
State:fault(pos, mem, S("output blocked"))
return
end
State:keep_running(pos, mem, COUNTDOWN_TICKS)

View File

@ -203,7 +203,6 @@ local function on_timer2(pos, elapsed)
mem.liquid = mem.liquid or {}
mem.liquid.amount = mem.liquid.amount or 0
if mem.burn_cycles <= 0 then
local taken = firebox.get_fuel(pos)
if mem.liquid.amount > 0 then
mem.liquid.amount = mem.liquid.amount - 1
mem.burn_cycles = oilburner.Oilburntime / CYCLE_TIME * BURN_CYCLE_FACTOR
@ -220,7 +219,6 @@ local function on_timer2(pos, elapsed)
end
local function start_firebox2(pos, mem)
print("start_firebox2", mem.running, mem.liquid and mem.liquid.amount)
if not mem.running and mem.liquid.amount > 0 then
mem.running = true
on_timer2(pos, 0)
@ -230,8 +228,8 @@ local function start_firebox2(pos, mem)
end
minetest.register_node("techage:oilfirebox", {
description = S("TA3 Power Station Oil Firebox"),
inventory_image = "techage_coal_boiler_inv.png",
description = S("TA3 Power Station Oil Burner"),
inventory_image = "techage_oil_boiler_inv.png",
tiles = {"techage_coal_boiler_mesh_top.png"},
drawtype = "mesh",
mesh = "techage_boiler_large.obj",
@ -336,6 +334,22 @@ techage.register_node({"techage:coalfirebox"}, {
end,
})
techage.register_node({"techage:oilfirebox"}, {
on_recv_message = function(pos, src, topic, payload)
local mem = tubelib2.get_mem(pos)
if topic == "state" then
if mem.running then
return "running"
else
return "stopped"
end
elseif topic == "fuel" then
return mem.liquid and mem.liquid.amount and mem.liquid.amount
else
return "unsupported"
end
end,
})
minetest.register_craft({
output = "techage:coalfirebox",

View File

@ -44,6 +44,7 @@ techage.Items = {
---------------------
techage_ta3 = "techage_ta3.png",
ta3_firebox = "techage:coalfirebox",
ta3_oilbox = "techage:oilfirebox",
ta3_boiler = "techage:coalboiler_top",
ta3_turbine = "techage:turbine",
ta3_generator = "techage:generator",
@ -78,6 +79,8 @@ techage.Items = {
ta3_pumpjack = "techage:ta3_pumpjack_pas",
ta3_drillbit = "techage:oil_drillbit",
ta3_end_wrench = "techage:end_wrench",
ta3_tank = "techage:ta3_tank",
ta3_pump = "techage:t3_pump",
----------------------------
ta3_button = "techage:ta3_button_off",
ta3_cartdetector = "techage:ta3_cartdetector_off",
@ -114,5 +117,7 @@ techage.Items = {
ta4_hydrogen = "techage_hydrogen_inv.png",
ta4_electrolyzer = "techage:ta4_electrolyzer",
ta4_fuelcell = "techage:ta4_fuelcell",
ta4_tank = "techage:ta4_tank",
ta4_pump = "techage:t4_pump",
--ta4_ "",
}

View File

@ -37,8 +37,9 @@ techage.manual_DE.aTitel = {
"3,TA2 Gesicherte Kiste / Protected Chest",
"3,Techage Forceload Block",
"1,TA3: Ölzeitalter",
"2,Kohlekraftwerk",
"2,Kohlekraftwerk / Ölkraftwerk",
"3,TA3 Kraftwerks-Feuerbox / Power Station Firebox",
"3,TA3 Kraftwerks-Ölbrenner / TA3 Power Station Oil Burner",
"3,TA3 Boiler unten/oben",
"3,TA3 Turbine",
"3,TA3 Generator",
@ -57,7 +58,7 @@ techage.manual_DE.aTitel = {
"3,TA3 Akku Block / Akku Box",
"3,TA3 Strom Terminal / Power Terminal",
"2,TA3 Industrieofen",
"3,TA3 Ofen-Feuerkiste / Furnace Firebox",
"3,TA3 Ofen-Ölbrenner / Furnace Oil Burner",
"3,TA3 Ofenoberteil / Furnace Top",
"3,TA3 Gebläse / Booster",
"2,Öl-Anlagen",
@ -88,6 +89,9 @@ techage.manual_DE.aTitel = {
"3,TA3 Kiessieb / Gravel Sieve",
"3,TA3 Mühle / Grinder",
"3,TA3 Flüssigkeitensammler / Liquid Sampler",
"2,Flüssigkeiten",
"3,TA3 Tank / TA3 Tank",
"3,TA3 Pumpe / TA3 Pump",
"2,Werkzeuge",
"3,Techage Info Tool",
"3,TechAge Programmer",
@ -113,6 +117,9 @@ techage.manual_DE.aTitel = {
"2,Wasserstoff",
"3,Elektrolyseur",
"3,Brennstoffzelle",
"2,Weitere TA4 Blöcke",
"3,TA4 Tank / TA4 Tank",
"3,TA4 Pumpe / TA4 Pump",
}
techage.manual_DE.aText = {
@ -281,6 +288,7 @@ techage.manual_DE.aText = {
"\n"..
"\n",
"Ein Schieber ist in der Lage\\, Items aus Kisten oder Maschinen zu ziehen und in andere Kisten oder Maschinen zu schieben. Oder anders gesagt: Zwischen zwei Blöcken mit Inventar muss ein und genau ein Schieber sein. Mehrere Schieber in Reihe sind nicht möglich.\n"..
"In die Gegenrichtung ist ein Schieber für Items aber durchlässig\\, so dass eine Kiste über eine Röhre gefüllt und ebenso gelehrt werden kann. \n"..
"\n"..
"Ein Schieber geht in den Zustand \"standby\"\\, wenn der keine Items zum Schieben hat. Ist der Ausgang blockiert oder das Inventory des Empfängers voll\\, so geht der Schieber in den Zustand \"blocked\". Aus beiden Zuständen kommt der Schieber nach einigen Sekunden selbsttätig wieder raus\\, sofern sich die Situation geändert hat.\n"..
"\n"..
@ -389,10 +397,13 @@ techage.manual_DE.aText = {
"Das Kohlekraftwerk besteht aus mehreren Blöcken und muss wie im Plan rechts abgebildet\\, zusammen gebaut werden. Dazu werden die Blöcke TA3 Kraftwerks-Feuerbox\\, TA3 Boiler oben\\, TA3 Boiler unten\\, TA3 Turbine\\, TA3 Generator und TA3 Kühler benötigt.\n"..
"\n"..
"Der Boiler muss mit Wasser gefüllt werden. Dazu bis zu 10 Eimer Wasser in den Boiler füllen.\n"..
"Die Feuerbox muss mit Kohle\\, Holzkohle oder Erdöl gefüllt werden.\n"..
"Die Feuerbox muss mit Kohle oder Holzkohle gefüllt werden.\n"..
"Wenn das Wasser heiß ist\\, kann das Ventil am Boiler geöffnet und anschließend die Generator gestartet werden.\n"..
"\n"..
"Das Kraftwerk liefert eine Leistung von 80 ku und kann mit Kohle\\, Holzkohle oder Erdöl betrieben werden.\n"..
"Das Kraftwerk kann alternativ auch mit einem Ölbrenner ausgestattet und dann mit Öl betrieben werden.\n"..
"Das Öl kann über eine Pumpe und Ölleitung nachgefüllt werden.\n"..
"\n"..
"Das Kraftwerk liefert eine Leistung von 80 ku.\n"..
"\n"..
"\n"..
"\n",
@ -401,6 +412,11 @@ techage.manual_DE.aText = {
"\n"..
"\n"..
"\n",
"Teil des Kraftwerks. \n"..
"Der Ölbrenner kann nur mit Öl gefüllt werden. Die Brenndauer ist abhängig von der Leistung\\, die vom Kraftwerk angefordert wird. Unter Volllast brennt Öl 20 s. Unter Teillast entsprechend länger (50% Last = doppelte Zeit).\n"..
"\n"..
"\n"..
"\n",
"Teil des Kraftwerk. Muss mit Wasser gefüllt werden. Wem kein Wasser mehr vorhanden ist oder die Temperatur zu weit absinkt\\, schaltet sich der Boiler ab.\n"..
"\n"..
"\n"..
@ -499,13 +515,13 @@ techage.manual_DE.aText = {
"Der TA3 Industrieofen dient als Ergänzung zu normalen Ofen (furnace). Damit können alle Waren mit \"Koch\" Rezepte\\, auch im Industrieofen hergestellt werden. Es gibt aber auch spezielle Rezepte\\, die nur im Industrieofen hergestellt werden können.\n"..
"Der Industrieofen hat sein eigenes Menü zur Rezeptauswahl. Abhängig von den Waren im Industrieofen Inventar links kann rechts das Ausgangsprodukt gewählt werden.\n"..
"\n"..
"Der Industrieofen benötigt Strom (für das Gebläse) sowie Kohle\\, Holzkohle oder Erdöl für die Befeuerung. Der Industrieofens und muss wie im Plan rechts abgebildet\\, zusammen gebaut werden.\n"..
"Der Industrieofen benötigt Strom (für das Gebläse) sowie Öl für den Brenner. Der Industrieofens und muss wie im Plan rechts abgebildet\\, zusammen gebaut werden.\n"..
"\n"..
"Die Brennzeit für Kohle und Erdöl beträgt 80 s und für Holzkohle 240 s.\n"..
"Die Brennzeit für Öl beträgt 80 s.\n"..
"\n"..
"\n"..
"\n",
"Ist Teil des TA3 Industrieofen. Muss mit Kohle\\, Holzkohle oder Erdöl befeuert werden.\n"..
"Ist Teil des TA3 Industrieofen. Muss mit Öl befeuert werden.\n"..
"\n"..
"\n"..
"\n",
@ -547,7 +563,7 @@ techage.manual_DE.aText = {
"\n"..
"\n"..
"\n",
"An die Stelle der Ölbohrkiste muss nun die Ölpumpe platziert werden. Auch die Ölpumpe benötigt Strom (16 ku) und liefert alle 8 s ein Erdöl-Item\\, das in einer Kiste gesammelt werden muss. Dazu muss die Ölpumpe über eine Röhre mit der Kiste verbunden werden.\n"..
"An die Stelle der Ölbohrkiste muss nun die Ölpumpe platziert werden. Auch die Ölpumpe benötigt Strom (16 ku) und liefert alle 8 s ein Einheit Erdöl. Das Erdöl muss in einem Tank gesammelt werden. Dazu muss die Ölpumpe über eine Leitung (gelbe Röhre) mit dem Tank verbunden werden.\n"..
"Ist alles Öl abgepumpt\\, kann auch die Ölpumpe wieder entfernt werden.\n"..
"\n"..
"\n"..
@ -743,6 +759,32 @@ techage.manual_DE.aText = {
"\n"..
"\n"..
"\n",
"Flüssigkeiten wie Wasser oder Öl können nur die spezielle Leitungen gepumpt und in Tanks gespeichert werden. Wie auch bei Wasser gibt es aber Behälter (Eimer\\, Kanister\\, Fässer)\\, in denen die Flüssig gelagert und transportiert werden kann.\n"..
"\n"..
"\n"..
"\n",
"In einem Tank können Flüssigkeiten gespeichert werden. Ein Tank kann über eine Pumpe gefüllt bzw. geleert werden. Dazu muss die Pumpe über einer Leitung (gelbe Röhre) mit dem Tank verbunden sein.\n"..
"Ein Tank kann aber auch über Eimer/Fässer gefüllt bzw. geleert werden:\n"..
"\n"..
" - werden leere Fässer mit einem Schieber oder von Hand in den Tank gegeben\\, werden diese gefüllt und können ausgangsseitig wieder entnommen werden\n"..
" - werden volle Fässer mit einem Schieber oder von Hand in den Tank gegeben\\, werden diese geleert und können ausgangsseitig wieder entnommen werden\n"..
"\n"..
"Dabei ist zu beachten\\, dass Fässer nur komplett gefüllt oder entleert werden können. Sind bspw. weniger als 10 Einheiten im Tank\\, muss dieser Rest mit Eimern entnommen oder leergepumpt werden.\n"..
"\n"..
"In einen TA3 Tank passen 500 Einheiten oder 50 Fässer einer Flüssigkeit.\n"..
"\n"..
"\n"..
"\n",
"Mit der Pumpe können Flüssigkeiten von Tanks oder Behältern zu anderen Tanks oder Behältern gepumpt werden. Bei der Pumpe muss die Pumprichtung (Pfeil) beachtet werden. Über die gelben Leitungen und Verbindungsstücke ist es auch möglich\\, mehrere Tanks auf jeder Seite der Pumpe anzuordnen. Allerdings müssen die Tanks den selben Inhalt haben.\n"..
"\n"..
" - zum Füllen\\, oder volle Fässer zul Leeren\n"..
" - in einen Eimer oder einen Kanister passt eine Einheit einer Flüssigkeit\\, bspw. Wasser\n"..
" - in ein Fass passen 10 Einheiten Flüssigkeit\\, bspw. Öl\n"..
"\n"..
"Die TA3 Pumpe pumpt 4 Einheiten Flüssigkeit alle zwei Sekunden.\n"..
"\n"..
"\n"..
"\n",
"",
"Das Techage Info Tool (Schraubenschlüssel) hat verschiedene Funktionen. Er zeigt die Uhrzeit\\, die Position\\, die Temperatur und das Biome an\\, wenn auf einen unbekannten Block geklickt wird.\n"..
"Wird auf einen TechAge Block mit Kommandoschnittstelle geklickt\\, werden alle verfügbaren Daten abgerufen (siehe auch \"Logik-/Schalt-Blöcke\").\n"..
@ -908,6 +950,19 @@ techage.manual_DE.aText = {
"\n"..
"\n"..
"\n",
"",
"Siehe TA3 Tank.\n"..
"\n"..
"In einen TA4 Tank passen 1000 Einheiten oder 100 Fässer einer Flüssigkeit.\n"..
"\n"..
"\n"..
"\n",
"Siehe TA3 Pumpe.\n"..
"\n"..
"Die TA4 Pumpe pumpt 8 Einheiten Flüssigkeit alle zwei Sekunden.\n"..
"\n"..
"\n"..
"\n",
}
techage.manual_DE.aItemName = {
@ -949,6 +1004,7 @@ techage.manual_DE.aItemName = {
"techage_ta3",
"",
"ta3_firebox",
"ta3_oilbox",
"ta3_boiler",
"ta3_turbine",
"ta3_generator",
@ -999,6 +1055,9 @@ techage.manual_DE.aItemName = {
"ta3_grinder",
"ta3_liquidsampler",
"",
"ta3_tank",
"ta3_pump",
"",
"ta3_end_wrench",
"ta3_programmer",
"ta3_trowel",
@ -1023,6 +1082,9 @@ techage.manual_DE.aItemName = {
"ta4_hydrogen",
"ta4_electrolyzer",
"ta4_fuelcell",
"",
"ta4_tank",
"ta4_pump",
}
techage.manual_DE.aPlanTable = {
@ -1081,6 +1143,7 @@ techage.manual_DE.aPlanTable = {
"",
"",
"",
"",
"ta3_furnace",
"",
"",
@ -1113,6 +1176,9 @@ techage.manual_DE.aPlanTable = {
"",
"",
"",
"ta3_tank",
"",
"",
"",
"",
"",
@ -1138,5 +1204,8 @@ techage.manual_DE.aPlanTable = {
"",
"",
"",
"",
"",
"",
}

View File

@ -116,7 +116,9 @@ techage.ConstructionPlans["itemtransport"] = {
local RINSR = {"techage_filling_ta2.png^techage_appl_rinser.png^techage_frame_ta2.png", "techage:ta2_rinser_pas"}
local GLASS = {"default_glass.png", "default:glass"}
local WATER = {"default_water.png^default_glass.png", "default:water_source"}
local TK000 = {"techage_tube_knee.png", "techage:tubeS"}
local TK000 = {"techage_tube_knee.png", "techage:tubeS"} -- like 'r'
local TK090 = {"techage_tube_knee.png^[transformR90", "techage:tubeS"} -- '7'
local TK180 = {"techage_tube_knee.png^[transformR180", "techage:tubeS"}
local TK270 = {"techage_tube_knee.png^[transformR270", "techage:tubeS"}
techage.ConstructionPlans["gravelrinser"] = {
@ -150,7 +152,8 @@ techage.ConstructionPlans["coalpowerstation"] = {
--
local Cable = {"techage_electric_cable_inv.png", "techage:electric_cableS"}
local Tubes = {"techage_tube_tube.png", "techage:tubeS"}
local Pushr = {"techage_appl_pusher.png^techage_frame_ta3.png", "techage:ta3_pusher_pas"}
local PushR = {"techage_appl_pusher.png^techage_frame_ta3.png", "techage:ta3_pusher_pas"}
local PushL = {"techage_appl_pusher.png^techage_frame_ta3.png^[transformFX", "techage:ta3_pusher_pas"}
local Boost = {"techage_filling_ta3.png^techage_appl_compressor.png^[transformFX^techage_frame_ta3.png", "techage:ta3_booster"}
local Fibox = {"techage_concrete.png^techage_appl_firehole.png^techage_frame_ta3.png", "techage:furnace_firebox"}
local Furnc = {"techage_concrete.png^techage_appl_furnace.png^techage_frame_ta3.png", "techage:ta3_furnace_pas"}
@ -158,11 +161,31 @@ local Furnc = {"techage_concrete.png^techage_appl_furnace.png^techage_frame_ta3.
techage.ConstructionPlans["ta3_furnace"] = {
{false, false, false, false, false, false, false, false},
{false, false, false, false, false, false, false, false},
{false, Tubes, Pushr, Tubes, Furnc, Tubes, Pushr, Tubes},
{false, Tubes, PushR, Tubes, Furnc, Tubes, PushR, Tubes},
{false, false, Cable, Boost, Fibox, false, false, false},
}
--
-- TA3 Tank Pump Pusher
--
local Pump = {"techage_filling_ta3.png^techage_appl_pump.png^techage_frame_ta3.png", "techage:t3_pump"}
local Tank = {"techage_filling_ta3.png^techage_frame_ta3.png^techage_appl_tank.png", "techage:ta3_tank"}
local PIPEH = {"techage_gaspipe.png", "techage:ta4_pipeS"}
local PIPEV = {"techage_gaspipe.png^[transformR90", "techage:ta4_pipeS"}
local PN000 = {"techage_gaspipe_knee.png", "techage:ta4_pipeS"}
local PN090 = {"techage_gaspipe_knee.png^[transformR90", "techage:ta4_pipeS"}
local PN180 = {"techage_gaspipe_knee.png^[transformR180", "techage:ta4_pipeS"}
local PN270 = {"techage_gaspipe_knee.png^[transformR270", "techage:ta4_pipeS"}
techage.ConstructionPlans["ta3_tank"] = {
{false, false, false, false, false, false, false, false, false},
{false, false, false, false, false, false, false, false, false},
{false, Tubes, PushR, Tubes, Tank, PIPEH, Pump, PIPEH, Tank},
{false, PushL, Tubes, Tubes, TK180, false, false, false, false},
}
--
-- Wind Turbine
--
@ -187,12 +210,6 @@ techage.ConstructionPlans["ta4_windturbine"] = {
-- Thermal Storage System
--
local CONCR = {"basic_materials_concrete_block.png", "basic_materials:concrete_block"}
local PIPEH = {"techage_gaspipe.png", "techage:ta4_pipeS"}
local PIPEV = {"techage_gaspipe.png^[transformR90", "techage:ta4_pipeS"}
local PN000 = {"techage_gaspipe_knee.png", "techage:ta4_pipeS"}
local PN090 = {"techage_gaspipe_knee.png^[transformR90", "techage:ta4_pipeS"}
local PN180 = {"techage_gaspipe_knee.png^[transformR180", "techage:ta4_pipeS"}
local PN270 = {"techage_gaspipe_knee.png^[transformR270", "techage:ta4_pipeS"}
local HEXR1 = {"techage_filling_ta4.png^techage_frameT_ta4.png^techage_appl_ribsT.png", "techage:heatexchanger3"}
local HEXR2 = {"techage_filling_ta4.png^techage_frameM_ta4.png^techage_appl_ribsB.png", "techage:heatexchanger2"}
local HEXR3 = {"techage_filling_ta4.png^techage_frameB_ta4.png^techage_appl_hole_electric.png", "techage:heatexchanger1"}

View File

@ -96,11 +96,11 @@ function techage.furnace.smelting(pos, mem, elapsed)
local state = techage.RUNNING
if inv and not inv:is_empty("src") then
if not mem.output or not mem.num_recipe then
return techage.FAULT
return techage.FAULT, "recipe error"
end
local recipe = Recipes[mem.output][mem.num_recipe]
if not recipe then
return techage.FAULT
return techage.FAULT, "recipe error"
end
-- check dst inv
local item = ItemStack(mem.output)

View File

@ -17,28 +17,34 @@ local M = minetest.get_meta
local S = techage.S
local firebox = techage.firebox
local oilburner = techage.oilburner
local Pipe = techage.LiquidPipe
local liquid = techage.liquid
local CYCLE_TIME = 2
local function has_fuel(pos, mem)
return mem.burn_cycles > 0 or firebox.has_fuel(pos)
return mem.burn_cycles > 0 or (mem.liquid and mem.liquid.amount and mem.liquid.amount > 0)
end
local function stop_firebox(pos, mem)
mem.running = false
firebox.swap_node(pos, "techage:furnace_firebox")
minetest.get_node_timer(pos):stop()
M(pos):set_string("formspec", firebox.formspec(mem))
M(pos):set_string("formspec", oilburner.formspec(mem))
end
local function node_timer(pos, elapsed)
local mem = tubelib2.get_mem(pos)
mem.liquid = mem.liquid or {}
mem.liquid.amount = mem.liquid.amount or 0
if mem.running then
oilburner.formspec_update(pos, mem)
mem.burn_cycles = (mem.burn_cycles or 0) - 1
if mem.burn_cycles <= 0 then
local taken = firebox.get_fuel(pos)
if taken then
mem.burn_cycles = (firebox.Burntime[taken:get_name()] or 1) / CYCLE_TIME
if mem.liquid.amount > 0 then
mem.liquid.amount = mem.liquid.amount - 1
mem.burn_cycles = (oilburner.Oilburntime or 1) / CYCLE_TIME
mem.burn_cycles_total = mem.burn_cycles
else
stop_firebox(pos, mem)
@ -55,7 +61,7 @@ local function start_firebox(pos, mem)
node_timer(pos, 0)
firebox.swap_node(pos, "techage:furnace_firebox_on")
minetest.get_node_timer(pos):start(CYCLE_TIME)
M(pos):set_string("formspec", firebox.formspec(mem))
M(pos):set_string("formspec", oilburner.formspec(mem))
end
end
@ -70,7 +76,7 @@ local function booster_cmnd(pos, cmnd)
end
minetest.register_node("techage:furnace_firebox", {
description = S("TA3 Furnace Firebox"),
description = S("TA3 Furnace Oil Burner"),
tiles = {
-- up, down, right, left, back, front
"techage_concrete.png^techage_appl_open.png^techage_frame_ta3.png",
@ -87,25 +93,43 @@ minetest.register_node("techage:furnace_firebox", {
sounds = default.node_sound_stone_defaults(),
on_timer = node_timer,
can_dig = firebox.can_dig,
allow_metadata_inventory_put = firebox.allow_metadata_inventory_put,
allow_metadata_inventory_take = firebox.allow_metadata_inventory_take,
on_receive_fields = firebox.on_receive_fields,
on_rightclick = firebox.on_rightclick,
can_dig = oilburner.can_dig,
allow_metadata_inventory_put = oilburner.allow_metadata_inventory_put,
allow_metadata_inventory_take = oilburner.allow_metadata_inventory_take,
on_receive_fields = oilburner.on_receive_fields,
on_rightclick = oilburner.on_rightclick,
on_construct = function(pos)
local mem = tubelib2.init_mem(pos)
techage.add_node(pos, "techage:furnace_firebox")
mem.running = false
mem.burn_cycles = 0
mem.liquid = {}
mem.liquid.amount = 0
local meta = M(pos)
meta:set_string("formspec", firebox.formspec(mem))
meta:set_string("formspec", oilburner.formspec(mem))
local inv = meta:get_inventory()
inv:set_size('fuel', 1)
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
local mem = tubelib2.get_mem(pos)
mem.liquid = mem.liquid or {}
mem.liquid.amount = mem.liquid.amount or 0
oilburner.on_metadata_inventory_put(pos, listname, index, stack, player)
end,
liquid = {
capa = oilburner.CAPACITY,
peek = liquid.srv_peek,
put = liquid.srv_put,
take = liquid.srv_take,
},
networks = oilburner.networks,
})
minetest.register_node("techage:furnace_firebox_on", {
description = S("TA3 Furnace Firebox"),
description = S("TA3 Furnace Oil Burner"),
tiles = {
-- up, down, right, left, back, front
"techage_concrete.png^techage_frame_ta3.png",
@ -134,11 +158,33 @@ minetest.register_node("techage:furnace_firebox_on", {
drop = "techage:furnace_firebox",
on_timer = node_timer,
can_dig = firebox.can_dig,
allow_metadata_inventory_put = firebox.allow_metadata_inventory_put,
allow_metadata_inventory_take = firebox.allow_metadata_inventory_take,
on_receive_fields = firebox.on_receive_fields,
on_rightclick = firebox.on_rightclick,
can_dig = oilburner.can_dig,
allow_metadata_inventory_put = oilburner.allow_metadata_inventory_put,
allow_metadata_inventory_take = oilburner.allow_metadata_inventory_take,
on_receive_fields = oilburner.on_receive_fields,
on_rightclick = oilburner.on_rightclick,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
local mem = tubelib2.get_mem(pos)
mem.liquid = mem.liquid or {}
mem.liquid.amount = mem.liquid.amount or 0
start_firebox(pos, mem)
oilburner.on_metadata_inventory_put(pos, listname, index, stack, player)
end,
liquid = {
capa = oilburner.CAPACITY,
peek = liquid.srv_peek,
put = function(pos, indir, name, amount)
liquid.srv_put(pos, indir, name, amount)
local mem = tubelib2.get_mem(pos)
mem.liquid = mem.liquid or {}
mem.liquid.amount = mem.liquid.amount or 0
start_firebox(pos, mem)
end,
take = liquid.srv_take,
},
networks = oilburner.networks,
})
minetest.register_craft({
@ -151,25 +197,6 @@ minetest.register_craft({
})
techage.register_node({"techage:furnace_firebox", "techage:furnace_firebox_on"}, {
on_pull_item = function(pos, in_dir, num)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
return techage.get_items(inv, "fuel", num)
end,
on_push_item = function(pos, in_dir, stack)
if firebox.Burntime[stack:get_name()] then
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local mem = tubelib2.get_mem(pos)
return techage.put_items(inv, "fuel", stack)
end
return false
end,
on_unpull_item = function(pos, in_dir, stack)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
return techage.put_items(inv, "fuel", stack)
end,
on_recv_message = function(pos, src, topic, payload)
local mem = tubelib2.get_mem(pos)
if topic == "state" then
@ -179,9 +206,7 @@ techage.register_node({"techage:furnace_firebox", "techage:furnace_firebox_on"},
return "stopped"
end
elseif topic == "fuel" then
local inv = M(pos):get_inventory()
local stack = inv:get_stack("fuel", 1)
return stack:get_count()
return mem.liquid and mem.liquid.amount and mem.liquid.amount
else
return "unsupported"
end
@ -201,6 +226,9 @@ techage.register_node({"techage:furnace_firebox", "techage:furnace_firebox_on"},
end
})
Pipe:add_secondary_node_names({"techage:furnace_firebox", "techage:furnace_firebox_on"})
minetest.register_lbm({
label = "[techage] Furnace firebox",
name = "techage:furnace",

View File

@ -45,6 +45,8 @@ local function formspec(self, pos, mem)
"image[2,0.5;1,1;techage_form_arrow_bg.png^[lowpart:"..
(mem.item_percent or 0)..":techage_form_arrow_fg.png^[transformR270]"..
"image_button[2,2;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"tooltip[2,2;1,1;"..self:get_state_tooltip(mem).."]"..
"list[context;dst;3,0;2,2;]"..
"label[6,0;"..S("Outp")..": "..idx.."/"..num.."]"..
@ -78,13 +80,13 @@ end
local function cooking(pos, crd, mem, elapsed)
if firebox_cmnd(pos, "fuel") then
local state = smelting(pos, mem, elapsed)
local state, err = smelting(pos, mem, elapsed)
if state == techage.RUNNING then
crd.State:keep_running(pos, mem, COUNTDOWN_TICKS)
elseif state == techage.BLOCKED then
crd.State:blocked(pos, mem)
elseif state == techage.FAULT then
crd.State:fault(pos, mem)
crd.State:fault(pos, mem, err)
elseif state == techage.STANDBY then
crd.State:idle(pos, mem)
end
@ -167,7 +169,10 @@ end
local function can_start(pos, mem, state)
if D.dbg2 then D.dbg("can_start", state, firebox_cmnd(pos, "fuel")) end
return firebox_cmnd(pos, "fuel")
if not firebox_cmnd(pos, "fuel") then
return S("no fuel or no power")
end
return true
end
local function on_node_state_change(pos, old_state, new_state)

View File

@ -214,8 +214,8 @@ else
dofile(MP.."/energy_storage/nodes.lua")
-- Chemistry
dofile(MP.."/chemistry/ta4_reactor.lua")
dofile(MP.."/chemistry/ta4_doser.lua")
--dofile(MP.."/chemistry/ta4_reactor.lua")
--dofile(MP.."/chemistry/ta4_doser.lua")
-- Hydrogen
dofile(MP.."/hydrogen/hydrogen.lua")

View File

@ -243,7 +243,23 @@ minetest.register_craftitem("techage:river_water", {
})
minetest.register_craftitem("techage:barrel_water", {
description = S("Water Barrel"),
inventory_image = "techage_barrel_water_inv.png",
stack_max = 1,
})
minetest.register_craftitem("techage:barrel_river_water", {
description = S("River Water Barrel"),
inventory_image = "techage_barrel_water_inv.png",
stack_max = 1,
})
techage.register_liquid("bucket:bucket_water", "bucket:bucket_empty", 1, "techage:water")
techage.register_liquid("bucket:bucket_river_water", "bucket:bucket_empty", 1, "techage:river_water")
techage.register_liquid("techage:barrel_water", "techage:ta3_barrel_empty", 10, "techage:water")
techage.register_liquid("techage:barrel_river_water", "techage:ta3_barrel_empty", 10, "techage:river_water")
techage.register_liquid("bucket:bucket_lava", "bucket:bucket_empty", 1, "default:lava_source")

View File

@ -181,9 +181,9 @@ minetest.register_craft({
minetest.register_craft({
output = "techage:ta3_pipeS 6",
recipe = {
{'', '', "default:steel_ingot"},
{'dye:yellow', 'techage:meridium_ingot', ''},
{"default:steel_ingot", '', ''},
{'', '', "techage:iron_ingot"},
{'dye:yellow', 'default:steel_ingot', ''},
{"techage:iron_ingot", '', ''},
},
})

View File

@ -54,14 +54,6 @@ local function formspec_oil(x, y, mem)
if mem.running then
fuel_percent = ((mem.burn_cycles or 1) * 100) / (mem.burn_cycles_total or 1)
end
-- return "container["..x..","..y.."]"..
-- "background[0,0;2,2.05;techage_form_grey.png]"..
-- "image[0,0;1,1;techage_form_input_arrow.png]"..
-- "image[1,0;1,1;default_furnace_fire_bg.png^[lowpart:"..
-- fuel_percent..":default_furnace_fire_fg.png]"..
-- techage.item_image(1, 1, itemname)..
-- "list[context;fuel;0,1;1,1;]"..
-- "container_end[]"
return "container["..x..","..y.."]"..
"background[0,0;3,1.05;techage_form_grey.png]"..
"list[context;fuel;0,0;1,1;]"..
@ -71,6 +63,9 @@ local function formspec_oil(x, y, mem)
"container_end[]"
end
techage.oilburner.formspec_oil = formspec_oil
function techage.oilburner.formspec(mem)
local update = ((mem.countdown or 0) > 0 and mem.countdown) or S("Update")
return "size[8,5]"..
@ -123,6 +118,17 @@ local function move_item(pos, stack)
M(pos):set_string("formspec", techage.oilburner.formspec(mem))
end
function techage.oilburner.move_item(pos, stack, formspec)
local mem = tubelib2.get_mem(pos)
local inv = M(pos):get_inventory()
if liquid.is_container_empty(stack:get_name()) then
fill_container(pos, inv, mem)
else
empty_container(pos, inv, mem)
end
M(pos):set_string("formspec", formspec(pos, mem))
end
function techage.oilburner.allow_metadata_inventory_put(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0

View File

@ -293,4 +293,20 @@ Pipe:add_secondary_node_names({
"techage:t4_pump", "techage:t4_pump_on",
})
minetest.register_craft({
output = "techage:t3_pump 2",
recipe = {
{"group:wood", "techage:iron_ingot", "group:wood"},
{"techage:ta3_pipeS", "techage:usmium_nuggets", "techage:ta3_pipeS"},
{"group:wood", "techage:iron_ingot", "group:wood"},
},
})
minetest.register_craft({
output = "techage:t4_pump",
recipe = {
{"default:tin_ingot", "dye:blue", "default:steel_ingot"},
{"", "techage:t3_pump", ""},
{"", "", ""},
},
})

View File

@ -20,7 +20,7 @@ local LQD = function(pos) return (minetest.registered_nodes[techage.get_node_lvm
local Pipe = techage.LiquidPipe
local liquid = techage.liquid
local CAPACITY = 1000
local CAPACITY = 500
local function formspec_tank(x, y, mem)
@ -224,78 +224,80 @@ minetest.register_node("techage:ta3_tank", {
sounds = default.node_sound_metal_defaults(),
})
Pipe:add_secondary_node_names({"techage:ta3_tank"})
--minetest.register_node("techage:ta4_tank", {
-- description = S("TA4 Tank"),
-- 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_hole_pipe.png",
-- "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_hole_tube.png",
-- "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_tank.png",
-- "techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_tank.png",
-- },
-- on_construct = function(pos)
-- local meta = minetest.get_meta(pos)
-- local inv = meta:get_inventory()
-- inv:set_size('src', 1)
-- inv:set_size('dst', 1)
-- end,
-- liquid = {
-- peek = function(pos, indir)
-- if indir == M(pos):get_int("indir") then
-- return liquid.srv_peek(pos, "main")
-- end
-- end,
-- put = function(pos, indir, name, amount)
-- if indir == M(pos):get_int("indir") then
-- return liquid.srv_put(pos, "main", name, amount)
-- end
-- end,
-- take = function(pos, indir, name, amount)
-- if indir == M(pos):get_int("indir") then
-- return liquid.srv_take(pos, "main", name, amount)
-- end
-- end,
-- },
-- on_rightclick = on_rightclick,
-- can_dig = can_dig,
-- allow_metadata_inventory_put = allow_metadata_inventory_put,
-- allow_metadata_inventory_take = allow_metadata_inventory_take,
-- paramtype2 = "facedir",
-- on_rotate = screwdriver.disallow,
-- groups = {cracky=2},
-- is_ground_content = false,
-- sounds = default.node_sound_metal_defaults(),
--})
---- for mechanical pipe connections
--techage.power.register_node({"techage:ta4_tank"}, {
-- conn_sides = {"R"},
-- power_network = Pipe,
-- after_place_node = function(pos, placer)
-- local meta = M(pos)
-- local mem = tubelib2.init_mem(pos)
-- mem.liquid = mem.liquid or {}
-- local number = techage.add_node(pos, "techage:ta4_tank")
-- meta:set_string("node_number", number)
-- meta:set_string("owner", placer:get_player_name())
-- local node = minetest.get_node(pos)
-- local indir = techage.side_to_indir("R", node.param2)
-- meta:set_int("indir", indir) -- from liquid point of view
-- meta:set_string("formspec", formspec(mem))
-- meta:set_string("infotext", S("TA4 Tank").." "..number)
-- end,
-- after_dig_node = function(pos, oldnode, oldmetadata, digger)
-- techage.remove_node(pos)
-- end,
--})
minetest.register_node("techage:ta4_tank", {
description = S("TA4 Tank"),
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_tank.png",
"techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_tank.png",
"techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_tank.png",
"techage_filling_ta4.png^techage_frame_ta4.png^techage_appl_tank.png",
},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
inv:set_size('src', 1)
inv:set_size('dst', 1)
end,
after_place_node = function(pos, placer)
local meta = M(pos)
local mem = tubelib2.init_mem(pos)
mem.liquid = {}
local number = techage.add_node(pos, "techage:ta4_tank")
meta:set_string("node_number", number)
meta:set_string("owner", placer:get_player_name())
meta:set_string("formspec", formspec(mem))
meta:set_string("infotext", S("TA4 Tank").." "..number)
Pipe:after_place_node(pos)
end,
tubelib2_on_update2 = function(pos, dir, tlib2, node)
liquid.update_network(pos)
end,
on_timer = function(pos, elapsed)
local mem = tubelib2.get_mem(pos)
mem.countdown = mem.countdown - 1
M(pos):set_string("formspec", formspec(mem))
return mem.countdown > 0
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
Pipe:after_dig_node(pos)
techage.remove_node(pos)
end,
liquid = {
capa = CAPACITY * 2,
peek = liquid.srv_peek,
put = function(pos, indir, name, amount)
local leftover = liquid.srv_put(pos, indir, name, amount)
local inv = M(pos):get_inventory()
if not inv:is_empty("src") and inv:is_empty("dst") then
fill_container(pos, inv)
end
return leftover
end,
take = liquid.srv_take,
},
networks = {
pipe = {
sides = techage.networks.AllSides, -- Pipe connection sides
ntype = "tank",
},
},
on_rightclick = on_rightclick,
on_receive_fields = on_receive_fields,
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_take = allow_metadata_inventory_take,
allow_metadata_inventory_move = allow_metadata_inventory_move,
on_metadata_inventory_put = on_metadata_inventory_put,
paramtype2 = "facedir",
on_rotate = screwdriver.disallow,
groups = {cracky=2},
is_ground_content = false,
sounds = default.node_sound_metal_defaults(),
})
techage.register_node({"techage:ta3_tank", "techage:ta4_tank"}, {
on_pull_item = function(pos, in_dir, num)
@ -336,3 +338,23 @@ techage.register_node({"techage:ta3_tank", "techage:ta4_tank"}, {
end
end,
})
Pipe:add_secondary_node_names({"techage:ta3_tank", "techage:ta4_tank"})
minetest.register_craft({
output = "techage:ta3_tank 2",
recipe = {
{"techage:iron_ingot", "techage:ta3_barrel_empty", "group:wood"},
{"techage:tubeS", "techage:ta3_barrel_empty", "techage:ta3_pipeS"},
{"group:wood", "techage:ta3_barrel_empty", "techage:iron_ingot"},
},
})
minetest.register_craft({
output = "techage:ta4_tank",
recipe = {
{"default:tin_ingot", "dye:blue", "default:steel_ingot"},
{"", "techage:ta3_tank", ""},
{"", "", ""},
},
})

View File

@ -74,8 +74,10 @@ Power=Energie
Primary available=Primär verfügbar
Primary needed=Primär benötigt
Pusher=Schieber
Recipe=Rezepte
Remove derrick=Entferne Ölturm
Rinsing=Waschen
River Water Barrel=Flusswasserfass
Save=Speichern
Secondary available=Sekundär verfügbar
Secondary needed=Sekundär benötigt
@ -91,10 +93,14 @@ TA Ceiling Lamp=TA Deckenlampe
TA Construction Board=TA Konstruktionsplan
TA Electric Cable=TA Stromkabel
TA Electric Junction Box=TA Verteilerdose
TA Empty Barrel=TA leeres Fass
TA Industrial Lamp 1=TA Industrielampe 1
TA Industrial Lamp 2=TA Industrielampe 2
TA Industrial Lamp 3=TA Industrielampe 3
TA Junction Pipe=TA Leitungskupplung
TA Lamp=TA Lampe
TA Oil=TA Öl
TA Pipe=TA Leitung (Flüssigkeiten)
TA Power Line=TA Stromleitung
TA Power Pole=TA Strommast
TA Power Pole Top (for up to 6 connections)=TA Strommastkopf (für bis zu 6 Verbindungen)
@ -142,20 +148,24 @@ TA3 Detector=TA3 Detektor
TA3 Drill Bit=TA3 Bohrgestänge
TA3 Ele Fab=TA3 E-Fabrik
TA3 Funnel=TA3 Trichter
TA3 Furnace Firebox=TA3 Ofen-Feuerkiste
TA3 Furnace Oil Burner=TA3 Ofen-Ölbrenner
TA3 Generator=TA3 Generator
TA3 Gravel Sieve=TA3 Kiessieb
TA3 Logic Block=TA3 Logikblock
TA3 Melting=TA3 Schmelzen
TA3 Node Detector=TA3 Block Detektor
TA3 Oil Barrel=TA3 Ölfass
TA3 Oil Explorer=TA3 Ölexplorer
TA3 Oil Storage=TA3 Öl Speicher
TA3 Player Detector=TA3 Spieler Detektor
TA3 Power Station Firebox=TA3 Kraftwerks-Feuerbox
TA3 Power Station Oil Burner=TA3 Kraftwerks-Ölbrenner
TA3 Power Terminal=TA3 Strom Terminal
TA3 Protected Chest=TA3 Gesicherte Kiste
TA3 Pump=TA3 Pumpe
TA3 Repeater=TA3 Wiederholer
TA3 Sequencer=TA3 Sequenzer
TA3 Tank=TA3 Tank
TA3 Terminal=TA3 Terminal
TA3 Timer=TA3 Timer
TA3 Tiny Power Generator=TA3 Kleiner Stromgenerator
@ -163,6 +173,7 @@ TA3 Turbine=TA3 Turbine
TA3 Vacuum Tube=TA3 Vakuumröhre
TA4 Carbon Fiber=TA4 Kohlefaser
TA4 Derrick=TA4 Bohrturm
TA4 Doser=TA4 Dosierer
TA4 Electrolyzer=TA4 Elektrolyseur
TA4 Energy Storage=TA4 Energiespeicher
TA4 Epoxide Resin=TA4 Epoxidharz
@ -178,10 +189,11 @@ TA4 Junction Pipe=TA4 Verbindungsrohr
TA4 Low Power Box==TA4 Niederspannungsverteilerbox
TA4 Low Power Cable=TA4 Niederspannungskabel
TA4 Pillar=TA4 Säule
TA4 Pipe=TA4 Röhre
TA4 Pipe Inlet=TA4 Rohrzulauf
TA4 Protected Chest=TA4 Gesicherte Kiste
TA4 Pump=TA4 Pumpe
TA4 Reactor=Reaktor
TA4 Reactor Filler Pipe=TA4 Reaktor Einfüllstutzen
TA4 Rotor Blade=TA4 Rotorblatt
TA4 Silicon Wafer=TA4 Silizium-Wafer
TA4 Solar Carrier Module=TA4 Solar Trägermodul
@ -192,6 +204,7 @@ TA4 Solar Inverter AC=TA4 Solar Wechselrichter AC
TA4 Solar Inverter DC=TA4 Solar Wechselrichter DC
TA4 Solar Module=TA4 Solarmodul
TA4 Streetlamp Solar Cell=TA4 Straßenlampen-Solarzelle
TA4 Tank=TA4 Tank
TA4 Turbine=TA4 Turbine
TA4 WLAN Chip=TA4 WLAN Chip
TA4 Wind Turbine=TA4 Windkraftanlage
@ -214,6 +227,8 @@ Time=Zeit
Update=Update
Usmium Nuggets=Usmium Nuggets
WLAN Chip=WLAN Chip
Water=Wasser
Water Barrel=Wasserfass
Wrong place for wind turbines!=Falscher Ort für Windkraftanlagen
[TA4 Wind Turbine]=[TA4 Windkraftanlage]
[TA] Area is protected!=[TA] Bereich ist geschützt
@ -233,8 +248,14 @@ added=hinzugefügt wird
added or removed=hinzugefügt oder entfernt wird
commands like: help=Kommandos wie: help
connected with=verbunden mit
empty=leer
input missing=Zufuhr fehlt
light=Licht
no fuel or no power=kein Strom oder Brennstoff
output blocked=Ausgang blockiert
power=Strom
reactor defect=Reaktor defekt
reactor has no power=Reaktor hat keinen Strom
removed=entfernt
stopped=gestoppt
##### not used anymore #####
##### not used anymore #####

View File

@ -72,8 +72,10 @@ Power=
Primary available=
Primary needed=
Pusher=
Recipe=
Remove derrick=
Rinsing=
River Water Barrel=
Save=
Secondary available=
Secondary needed=
@ -89,10 +91,14 @@ TA Ceiling Lamp=
TA Construction Board=
TA Electric Cable=
TA Electric Junction Box=
TA Empty Barrel=
TA Industrial Lamp 1=
TA Industrial Lamp 2=
TA Industrial Lamp 3=
TA Junction Pipe=
TA Lamp=
TA Oil=
TA Pipe=
TA Power Line=
TA Power Pole=
TA Power Pole Top (for up to 6 connections)=
@ -140,20 +146,24 @@ TA3 Detector=
TA3 Drill Bit=
TA3 Ele Fab=
TA3 Funnel=
TA3 Furnace Firebox=
TA3 Furnace Oil Burner=
TA3 Generator=
TA3 Gravel Sieve=
TA3 Logic Block=
TA3 Melting=
TA3 Node Detector=
TA3 Oil Barrel=
TA3 Oil Explorer=
TA3 Oil Storage=
TA3 Player Detector=
TA3 Power Station Firebox=
TA3 Power Station Oil Burner=
TA3 Power Terminal=
TA3 Protected Chest=
TA3 Pump=
TA3 Repeater=
TA3 Sequencer=
TA3 Tank=
TA3 Terminal=
TA3 Timer=
TA3 Tiny Power Generator=
@ -161,6 +171,7 @@ TA3 Turbine=
TA3 Vacuum Tube=
TA4 Carbon Fiber=
TA4 Derrick=
TA4 Doser=
TA4 Electrolyzer=
TA4 Energy Storage=
TA4 Epoxide Resin=
@ -176,10 +187,11 @@ TA4 Junction Pipe=
TA4 Low Power Box=
TA4 Low Power Cable=
TA4 Pillar=
TA4 Pipe=
TA4 Pipe Inlet=
TA4 Protected Chest=
TA4 Pump=
TA4 Reactor=
TA4 Reactor Filler Pipe=
TA4 Rotor Blade=
TA4 Silicon Wafer=
TA4 Solar Carrier Module=
@ -190,6 +202,7 @@ TA4 Solar Inverter AC=
TA4 Solar Inverter DC=
TA4 Solar Module=
TA4 Streetlamp Solar Cell=
TA4 Tank=
TA4 Turbine=
TA4 WLAN Chip=
TA4 Wind Turbine=
@ -212,6 +225,8 @@ Time=
Update=
Usmium Nuggets=
WLAN Chip=
Water=
Water Barrel=
Wrong place for wind turbines!=
[TA4 Wind Turbine]=
[TA] Area is protected!=
@ -231,7 +246,13 @@ added=
added or removed=
commands like: help=
connected with=
empty=
input missing=
light=
no fuel or no power=
output blocked=
power=
reactor defect=
reactor has no power=
removed=
stopped=

View File

@ -9,15 +9,18 @@ Das Industrielle Zeitalter ist auf seinem Höhepunkt.
[techage_ta3|image]
## Kohlekraftwerk
## Kohlekraftwerk / Ölkraftwerk
Das Kohlekraftwerk besteht aus mehreren Blöcken und muss wie im Plan rechts abgebildet, zusammen gebaut werden. Dazu werden die Blöcke TA3 Kraftwerks-Feuerbox, TA3 Boiler oben, TA3 Boiler unten, TA3 Turbine, TA3 Generator und TA3 Kühler benötigt.
Der Boiler muss mit Wasser gefüllt werden. Dazu bis zu 10 Eimer Wasser in den Boiler füllen.
Die Feuerbox muss mit Kohle, Holzkohle oder Erdöl gefüllt werden.
Die Feuerbox muss mit Kohle oder Holzkohle gefüllt werden.
Wenn das Wasser heiß ist, kann das Ventil am Boiler geöffnet und anschließend die Generator gestartet werden.
Das Kraftwerk liefert eine Leistung von 80 ku und kann mit Kohle, Holzkohle oder Erdöl betrieben werden.
Das Kraftwerk kann alternativ auch mit einem Ölbrenner ausgestattet und dann mit Öl betrieben werden.
Das Öl kann über eine Pumpe und Ölleitung nachgefüllt werden.
Das Kraftwerk liefert eine Leistung von 80 ku.
[coalpowerstation|plan]
@ -30,6 +33,14 @@ Die Feuerbox muss mit Kohle, Holzkohle oder Erdöl gefüllt werden. Die Brenndau
[ta3_firebox|image]
### TA3 Kraftwerks-Ölbrenner / TA3 Power Station Oil Burner
Teil des Kraftwerks.
Der Ölbrenner kann nur mit Öl gefüllt werden. Die Brenndauer ist abhängig von der Leistung, die vom Kraftwerk angefordert wird. Unter Volllast brennt Öl 20 s. Unter Teillast entsprechend länger (50% Last = doppelte Zeit).
[ta3_oilbox|image]
### TA3 Boiler unten/oben
Teil des Kraftwerk. Muss mit Wasser gefüllt werden. Wem kein Wasser mehr vorhanden ist oder die Temperatur zu weit absinkt, schaltet sich der Boiler ab.
@ -179,16 +190,16 @@ Die Daten des Terminals werden beim Öffnen des Menüs und dann nur durch Anklic
Der TA3 Industrieofen dient als Ergänzung zu normalen Ofen (furnace). Damit können alle Waren mit "Koch" Rezepte, auch im Industrieofen hergestellt werden. Es gibt aber auch spezielle Rezepte, die nur im Industrieofen hergestellt werden können.
Der Industrieofen hat sein eigenes Menü zur Rezeptauswahl. Abhängig von den Waren im Industrieofen Inventar links kann rechts das Ausgangsprodukt gewählt werden.
Der Industrieofen benötigt Strom (für das Gebläse) sowie Kohle, Holzkohle oder Erdöl für die Befeuerung. Der Industrieofens und muss wie im Plan rechts abgebildet, zusammen gebaut werden.
Der Industrieofen benötigt Strom (für das Gebläse) sowie Öl für den Brenner. Der Industrieofens und muss wie im Plan rechts abgebildet, zusammen gebaut werden.
Die Brennzeit für Kohle und Erdöl beträgt 80 s und für Holzkohle 240 s.
Die Brennzeit für Öl beträgt 80 s.
[ta3_furnace|plan]
### TA3 Ofen-Feuerkiste / Furnace Firebox
### TA3 Ofen-Ölbrenner / Furnace Oil Burner
Ist Teil des TA3 Industrieofen. Muss mit Kohle, Holzkohle oder Erdöl befeuert werden.
Ist Teil des TA3 Industrieofen. Muss mit Öl befeuert werden.
[ta3_furnacefirebox|image]
@ -248,7 +259,7 @@ Wurde das Ölfeld erreicht, kann der Bohrturm abgebaut und die Kiste entfernt we
### TA3 Ölpumpe / Oil Pumpjack
An die Stelle der Ölbohrkiste muss nun die Ölpumpe platziert werden. Auch die Ölpumpe benötigt Strom (16 ku) und liefert alle 8 s ein Erdöl-Item, das in einer Kiste gesammelt werden muss. Dazu muss die Ölpumpe über eine Röhre mit der Kiste verbunden werden.
An die Stelle der Ölbohrkiste muss nun die Ölpumpe platziert werden. Auch die Ölpumpe benötigt Strom (16 ku) und liefert alle 8 s ein Einheit Erdöl. Das Erdöl muss in einem Tank gesammelt werden. Dazu muss die Ölpumpe über eine Leitung (gelbe Röhre) mit dem Tank verbunden werden.
Ist alles Öl abgepumpt, kann auch die Ölpumpe wieder entfernt werden.
[ta3_pumpjack|image]
@ -515,6 +526,41 @@ Die Verarbeitungsleistung ist 2 Items alle 8 s. Der Block benötigt 5 ku Strom.
[ta3_liquidsampler|image]
## Flüssigkeiten
Flüssigkeiten wie Wasser oder Öl können nur die spezielle Leitungen gepumpt und in Tanks gespeichert werden. Wie auch bei Wasser gibt es aber Behälter (Eimer, Kanister, Fässer), in denen die Flüssig gelagert und transportiert werden kann.
[ta3_tank|plan]
### TA3 Tank / TA3 Tank
In einem Tank können Flüssigkeiten gespeichert werden. Ein Tank kann über eine Pumpe gefüllt bzw. geleert werden. Dazu muss die Pumpe über einer Leitung (gelbe Röhre) mit dem Tank verbunden sein.
Ein Tank kann aber auch über Eimer/Fässer gefüllt bzw. geleert werden:
- werden leere Fässer mit einem Schieber oder von Hand in den Tank gegeben, werden diese gefüllt und können ausgangsseitig wieder entnommen werden
- werden volle Fässer mit einem Schieber oder von Hand in den Tank gegeben, werden diese geleert und können ausgangsseitig wieder entnommen werden
Dabei ist zu beachten, dass Fässer nur komplett gefüllt oder entleert werden können. Sind bspw. weniger als 10 Einheiten im Tank, muss dieser Rest mit Eimern entnommen oder leergepumpt werden.
In einen TA3 Tank passen 500 Einheiten oder 50 Fässer einer Flüssigkeit.
[ta3_tank|image]
### TA3 Pumpe / TA3 Pump
Mit der Pumpe können Flüssigkeiten von Tanks oder Behältern zu anderen Tanks oder Behältern gepumpt werden. Bei der Pumpe muss die Pumprichtung (Pfeil) beachtet werden. Über die gelben Leitungen und Verbindungsstücke ist es auch möglich, mehrere Tanks auf jeder Seite der Pumpe anzuordnen. Allerdings müssen die Tanks den selben Inhalt haben.
- zum Füllen, oder volle Fässer zul Leeren
- in einen Eimer oder einen Kanister passt eine Einheit einer Flüssigkeit, bspw. Wasser
- in ein Fass passen 10 Einheiten Flüssigkeit, bspw. Öl
Die TA3 Pumpe pumpt 4 Einheiten Flüssigkeit alle zwei Sekunden.
[ta3_pump|image]
## Werkzeuge

View File

@ -210,6 +210,26 @@ Die Brennstoffzelle kann bis zu 40 ku an Strom abgeben und benötigt dazu alle 6
[ta4_fuelcell|image]
## Weitere TA4 Blöcke
### TA4 Tank / TA4 Tank
Siehe TA3 Tank.
In einen TA4 Tank passen 1000 Einheiten oder 100 Fässer einer Flüssigkeit.
[ta4_tank|image]
### TA4 Pumpe / TA4 Pump
Siehe TA3 Pumpe.
Die TA4 Pumpe pumpt 8 Einheiten Flüssigkeit alle zwei Sekunden.
[ta4_pump|image]

View File

@ -36,8 +36,9 @@
- [TA2 Gesicherte Kiste / Protected Chest](./manual_ta2_DE.md#ta2-gesicherte-kiste--protected-chest)
- [Techage Forceload Block](./manual_ta2_DE.md#techage-forceload-block)
- [TA3: Ölzeitalter](./manual_ta3_DE.md#ta3:-Ölzeitalter)
- [Kohlekraftwerk](./manual_ta3_DE.md#kohlekraftwerk)
- [Kohlekraftwerk / Ölkraftwerk](./manual_ta3_DE.md#kohlekraftwerk--Ölkraftwerk)
- [TA3 Kraftwerks-Feuerbox / Power Station Firebox](./manual_ta3_DE.md#ta3-kraftwerks-feuerbox--power-station-firebox)
- [TA3 Kraftwerks-Ölbrenner / TA3 Power Station Oil Burner](./manual_ta3_DE.md#ta3-kraftwerks-Ölbrenner--ta3-power-station-oil-burner)
- [TA3 Boiler unten/oben](./manual_ta3_DE.md#ta3-boiler-untenoben)
- [TA3 Turbine](./manual_ta3_DE.md#ta3-turbine)
- [TA3 Generator](./manual_ta3_DE.md#ta3-generator)
@ -56,7 +57,7 @@
- [TA3 Akku Block / Akku Box](./manual_ta3_DE.md#ta3-akku-block---akku-box)
- [TA3 Strom Terminal / Power Terminal](./manual_ta3_DE.md#ta3-strom-terminal--power-terminal)
- [TA3 Industrieofen](./manual_ta3_DE.md#ta3-industrieofen)
- [TA3 Ofen-Feuerkiste / Furnace Firebox](./manual_ta3_DE.md#ta3-ofen-feuerkiste--furnace-firebox)
- [TA3 Ofen-Ölbrenner / Furnace Oil Burner](./manual_ta3_DE.md#ta3-ofen-Ölbrenner--furnace-oil-burner)
- [TA3 Ofenoberteil / Furnace Top](./manual_ta3_DE.md#ta3-ofenoberteil--furnace-top)
- [TA3 Gebläse / Booster](./manual_ta3_DE.md#ta3-gebläse--booster)
- [Öl-Anlagen](./manual_ta3_DE.md#Öl-anlagen)
@ -87,6 +88,9 @@
- [TA3 Kiessieb / Gravel Sieve](./manual_ta3_DE.md#ta3-kiessieb--gravel-sieve)
- [TA3 Mühle / Grinder](./manual_ta3_DE.md#ta3-mühle--grinder)
- [TA3 Flüssigkeitensammler / Liquid Sampler](./manual_ta3_DE.md#ta3-flüssigkeitensammler--liquid-sampler)
- [Flüssigkeiten](./manual_ta3_DE.md#flüssigkeiten)
- [TA3 Tank / TA3 Tank](./manual_ta3_DE.md#ta3-tank--ta3-tank)
- [TA3 Pumpe / TA3 Pump](./manual_ta3_DE.md#ta3-pumpe--ta3-pump)
- [Werkzeuge](./manual_ta3_DE.md#werkzeuge)
- [Techage Info Tool](./manual_ta3_DE.md#techage-info-tool)
- [TechAge Programmer](./manual_ta3_DE.md#techage-programmer)
@ -111,4 +115,7 @@
- [TA4 Röhre / Pipe](./manual_ta4_DE.md#ta4-röhre--pipe)
- [Wasserstoff](./manual_ta4_DE.md#wasserstoff)
- [Elektrolyseur](./manual_ta4_DE.md#elektrolyseur)
- [Brennstoffzelle](./manual_ta4_DE.md#brennstoffzelle)
- [Brennstoffzelle](./manual_ta4_DE.md#brennstoffzelle)
- [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)

View File

@ -19,6 +19,9 @@ local S = techage.S
local Power = techage.ElectricCable
local firebox = techage.firebox
local power = techage.power
local oilburner = techage.oilburner
local Pipe = techage.LiquidPipe
local liquid = techage.liquid
local CYCLE_TIME = 2
local PWR_CAPA = 12
@ -26,31 +29,30 @@ local BURN_CYCLE_FACTOR = 2.5
local function formspec(self, pos, mem)
local fuel_percent = 0
if mem.generating then
if mem.running then
fuel_percent = ((mem.burn_cycles or 1) * 100) / (mem.burn_cycles_total or 1)
end
return "size[8,7]"..
return "size[8,6]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[current_name;fuel;0.5,1;1,1;]"..
"image[1.5,1;1,1;default_furnace_fire_bg.png^[lowpart:"..
fuel_percent..":default_furnace_fire_fg.png]"..
"button[3,1;1.8,1;update;"..S("Update").."]"..
"image_button[5.5,1;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"image[6.5,0.5;1,2;"..power.formspec_power_bar(PWR_CAPA, mem.provided).."]"..
"list[current_player;main;0,3;8,4;]"..
oilburner.formspec_oil(1, 0, mem)..
"button[1.6,1;1.8,1;update;"..S("Update").."]"..
"image_button[5.5,0.5;1,1;".. self:get_state_button_image(mem) ..";state_button;]"..
"image[6.5,0;1,2;"..power.formspec_power_bar(PWR_CAPA, mem.provided).."]"..
"list[current_player;main;0,2.3;8,4;]"..
default.get_hotbar_bg(0, 3)
end
local function can_start(pos, mem, state)
if mem.burn_cycles > 0 then return true end
local inv = M(pos):get_inventory()
return not inv:is_empty("fuel")
if mem.burn_cycles > 0 or (mem.liquid and mem.liquid.amount and mem.liquid.amount > 0) then
return true
end
return false
end
local function start_node(pos, mem, state)
mem.generating = true
mem.running = true
power.generator_start(pos, mem, PWR_CAPA)
minetest.sound_play("techage_generator", {
pos = pos,
@ -59,7 +61,7 @@ local function start_node(pos, mem, state)
end
local function stop_node(pos, mem, state)
mem.generating = false
mem.running = false
mem.provided = 0
power.generator_stop(pos, mem)
end
@ -79,12 +81,13 @@ local State = techage.NodeStates:new({
local function burning(pos, mem)
local ratio = math.max((mem.provided or PWR_CAPA) / PWR_CAPA, 0.02)
mem.liquid = mem.liquid or {}
mem.liquid.amount = mem.liquid.amount or 0
mem.burn_cycles = (mem.burn_cycles or 0) - ratio
if mem.burn_cycles <= 0 then
local taken = firebox.get_fuel(pos)
if taken then
mem.burn_cycles = (firebox.Burntime[taken:get_name()] or 1) / CYCLE_TIME * BURN_CYCLE_FACTOR
if mem.liquid.amount > 0 then
mem.liquid.amount = mem.liquid.amount - 1
mem.burn_cycles = (oilburner.Oilburntime or 1) / CYCLE_TIME * BURN_CYCLE_FACTOR
mem.burn_cycles_total = mem.burn_cycles
return true
else
@ -98,7 +101,7 @@ end
local function node_timer(pos, elapsed)
local mem = tubelib2.get_mem(pos)
if mem.generating and burning(pos, mem) then
if mem.running and burning(pos, mem) then
mem.provided = power.generator_alive(pos, mem)
minetest.sound_play("techage_generator", {
pos = pos,
@ -118,19 +121,29 @@ local function on_receive_fields(pos, formname, fields, player)
local mem = tubelib2.get_mem(pos)
State:state_button_event(pos, mem, fields)
if fields.update then
M(pos):set_string("formspec", formspec(State, pos, mem))
end
M(pos):set_string("formspec", formspec(State, pos, mem))
end
local function allow_metadata_inventory(pos, listname, index, stack, player)
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
if stack:get_name() == "techage:oil_source" then
return stack:get_count()
return 1
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return 0
return stack:get_count()
end
local function formspec_clbk(pos, mem)
return formspec(State, pos, mem)
end
local function on_metadata_inventory_put(pos, listname, index, stack, player)
minetest.after(0.5, oilburner.move_item, pos, stack, formspec_clbk)
end
local function on_rightclick(pos)
@ -157,7 +170,7 @@ minetest.register_node("techage:tiny_generator", {
on_construct = function(pos)
local mem = tubelib2.init_mem(pos)
local number = techage.add_node(pos, "techage:tiny_generator")
mem.generating = false
mem.running = false
mem.burn_cycles = 0
State:node_init(pos, mem, number)
local meta = M(pos)
@ -166,12 +179,21 @@ minetest.register_node("techage:tiny_generator", {
inv:set_size('fuel', 1)
end,
allow_metadata_inventory_put = allow_metadata_inventory,
allow_metadata_inventory_take = allow_metadata_inventory,
liquid = {
capa = oilburner.CAPACITY,
peek = liquid.srv_peek,
put = liquid.srv_put,
take = liquid.srv_take,
},
networks = oilburner.networks,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_take = allow_metadata_inventory_take,
on_metadata_inventory_put = on_metadata_inventory_put,
on_receive_fields = on_receive_fields,
on_rightclick = on_rightclick,
on_timer = node_timer,
can_dig = techage.firebox.can_dig,
can_dig = oilburner.can_dig,
})
minetest.register_node("techage:tiny_generator_on", {
@ -203,6 +225,15 @@ minetest.register_node("techage:tiny_generator_on", {
},
},
},
liquid = {
capa = oilburner.CAPACITY,
peek = liquid.srv_peek,
put = liquid.srv_put,
take = liquid.srv_take,
},
networks = oilburner.networks,
paramtype = "light",
paramtype2 = "facedir",
groups = {not_in_creative_inventory=1},
@ -211,14 +242,17 @@ minetest.register_node("techage:tiny_generator_on", {
on_rotate = screwdriver.disallow,
is_ground_content = false,
allow_metadata_inventory_put = allow_metadata_inventory,
allow_metadata_inventory_take = allow_metadata_inventory,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_take = allow_metadata_inventory_take,
on_metadata_inventory_put = on_metadata_inventory_put,
on_receive_fields = on_receive_fields,
on_rightclick = on_rightclick,
on_timer = node_timer,
can_dig = techage.firebox.can_dig,
can_dig = oilburner.can_dig,
})
Pipe:add_secondary_node_names({"techage:tiny_generator", "techage:tiny_generator_on"})
techage.power.register_node({"techage:tiny_generator", "techage:tiny_generator_on"}, {
conn_sides = {"R"},
power_network = Power,

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB