new power terminal added

This commit is contained in:
Joachim Stolberg 2020-04-11 10:14:52 +02:00
parent 5146d50d4b
commit 7e40b18cf1
15 changed files with 459 additions and 37 deletions

View File

@ -33,6 +33,16 @@ function techage.set_activeformspec(pos, player)
end end
end end
function techage.reset_activeformspec(pos, player)
local name = player and player:get_player_name()
if name then
if ActivePlayer[name] then
ActiveFormspecs[ActivePlayer[name]] = nil
ActivePlayer[name] = nil
end
end
end
minetest.register_on_leaveplayer(function(player) minetest.register_on_leaveplayer(function(player)
local name = player:get_player_name() local name = player:get_player_name()
if ActivePlayer[name] then if ActivePlayer[name] then

View File

@ -22,7 +22,7 @@ local Networks = {} -- cache for networks
techage.networks = {} -- name space techage.networks = {} -- name space
local MAX_NUM_NODES = 500 local MAX_NUM_NODES = 1000
local BEST_BEFORE = 5 * 60 -- 5 minutes local BEST_BEFORE = 5 * 60 -- 5 minutes
local Route = {} -- Used to determine the already passed nodes while walking local Route = {} -- Used to determine the already passed nodes while walking
local NumNodes = 0 local NumNodes = 0
@ -343,3 +343,5 @@ end
-- Get node tubelib2 connections as table of outdirs -- Get node tubelib2 connections as table of outdirs
-- techage.networks.get_node_connections(pos, net_name) -- techage.networks.get_node_connections(pos, net_name)
techage.networks.get_node_connections = get_node_connections techage.networks.get_node_connections = get_node_connections
techage.networks.MAX_NUM_NODES = MAX_NUM_NODES

View File

@ -238,5 +238,3 @@ minetest.register_craft({
{"default:wood", "techage:iron_ingot", "basic_materials:steel_bar"}, {"default:wood", "techage:iron_ingot", "basic_materials:steel_bar"},
}, },
}) })

View File

@ -574,12 +574,12 @@ techage.manual_DE.aText = {
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",
"Hat bis zu vier Arme und erlaubt damit\\, Strom in bis zu 6 Richtungen weiter zu verteilen.\n".. "Hat bis zu vier Arme und erlaubt damit\\, Strom in bis zu 6 Richtungen weiter zu verteilen. \n"..
"Der Strommastkopf schützt Stromleitungen und Masten in einem Radius von 8 m.\n".. "Der Strommastkopf schützt Stromleitungen und Masten in einem Radius von 8 m.\n"..
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",
"Dieser Strommastkopf hat nur 2 Arme und wird für die Überlandleitungen genutzt. \n".. "Dieser Strommastkopf hat zwei feste Arme und wird für die Überlandleitungen genutzt. Er kann aber auch Strom nach unten und oben weiterleiten.\n"..
"Der Strommastkopf schützt Stromleitungen und Masten in einem Radius von 8 m.\n".. "Der Strommastkopf schützt Stromleitungen und Masten in einem Radius von 8 m.\n"..
"\n".. "\n"..
"\n".. "\n"..
@ -609,10 +609,11 @@ techage.manual_DE.aText = {
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",
"Das Strom-Terminal muss mit dem Stromnetz verbunden werden. Es zeigt Daten aus dem Stromnetz an wie:\n".. "Das Strom-Terminal muss mit dem Stromnetz verbunden werden. Es zeigt Daten aus dem Stromnetz an.\n"..
"\n".. "\n"..
" - Anzahl und Leistung der verschiedenen Generatoren und Akkus (aktuell/maximal)\n".. "In der oberen Hälfte werden nur die Daten eines ausgewählten Typs ausgegeben. Wird als Typ bspw. \"Kraftwerk\" gewählt\\, so werden nur die Daten von Öl- und Kohlekraftwerken gesammelt und ausgegeben. Links werden die Daten von Generatoren (Stromabgabe) und rechts die Daten von Energiespeichern (Stromaufnahme) ausgegeben. Beim Akkublocks bspw. wird beides ausgegeben\\, da der Akku Strom aufnehmen und abgeben kann.\n"..
" - Anzahl der Netzwerk-Blöcke (max. 1000)\n".. "\n"..
"In der unteren Hälfte werden die Daten aller Generatoren und Speichersystemen des ganzen Stromnetzen zusammengefasst ausgegeben.\n"..
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",
@ -983,7 +984,7 @@ techage.manual_DE.aText = {
"\n".. "\n"..
"Der Strom muss vom Rotor-Block durch den Mast nach unten geführt werden. Dazu zuerst die Stromleitung nach oben ziehen und das Stromkabel dann mit TA4 Säulenblöcke \"verputzen\". Unten kann eine Arbeitsplattform errichtet werden. Der Plan rechts zeigt den Aufbau im oberen Teil.\n".. "Der Strom muss vom Rotor-Block durch den Mast nach unten geführt werden. Dazu zuerst die Stromleitung nach oben ziehen und das Stromkabel dann mit TA4 Säulenblöcke \"verputzen\". Unten kann eine Arbeitsplattform errichtet werden. Der Plan rechts zeigt den Aufbau im oberen Teil.\n"..
"\n".. "\n"..
"Die Windkraftanlage liefert eine Leistung von 80 ku\\, aber dies nur 8 Stunden am Tag (siehe oben).\n".. "Die Windkraftanlage liefert eine Leistung von 70 ku\\, aber dies nur 8 Stunden am Tag (siehe oben).\n"..
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",
@ -1024,7 +1025,7 @@ techage.manual_DE.aText = {
"\n".. "\n"..
"Solarmodule liefern Gleichspannung\\, welcher nicht direkt in das Stromnetz eingespeist werden kann. Daher müssen zuerst die Solareinheiten über das rote Kabel mit dem Wechselrichter verbunden werden. Dieser besteht aus zwei Blöcken\\, einen für das rote Kabel zu den Solarmodulen (DC) und einen für das graue Stromkabel ins Stromnetz (AC).\n".. "Solarmodule liefern Gleichspannung\\, welcher nicht direkt in das Stromnetz eingespeist werden kann. Daher müssen zuerst die Solareinheiten über das rote Kabel mit dem Wechselrichter verbunden werden. Dieser besteht aus zwei Blöcken\\, einen für das rote Kabel zu den Solarmodulen (DC) und einen für das graue Stromkabel ins Stromnetz (AC).\n"..
"\n".. "\n"..
"Der Kartenbereich\\, wo die Solaranlage steht\\, muss komplett geladen sein. Es empfiehlt sich daher\\, zuerst einen Forceload Block zu setzen\\, und dann innerhalb dieses Bereiches die Module zu platzieren.\n".. "Der Kartenbereich\\, wo die Solaranlage steht\\, muss komplett geladen sein. Die gilt auch für die direkte Position über dem Solarmodul\\, denn dort wird regelmäßig die Lichtstärke gemessen. Es empfiehlt sich daher\\, zuerst einen Forceload Block zu setzen\\, und dann innerhalb dieses Bereiches die Module zu platzieren.\n"..
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",

View File

@ -194,12 +194,12 @@ local net_def = {
sides = {F = 1, B = 1}, sides = {F = 1, B = 1},
ntype = "con2", ntype = "con2",
nominal = PWR_PERF, nominal = PWR_PERF,
on_power = on_power,
on_nopower = on_nopower,
}, },
pipe2 = { pipe2 = {
sides = {L = 1, R = 1}, sides = {L = 1, R = 1},
ntype = "con1", ntype = "con1",
on_power = on_power,
on_nopower = on_nopower,
}, },
} }

View File

@ -59,6 +59,7 @@ else
dofile(MP.."/power/electric_cable.lua") dofile(MP.."/power/electric_cable.lua")
dofile(MP.."/power/junctionbox.lua") dofile(MP.."/power/junctionbox.lua")
dofile(MP.."/power/power_terminal.lua") dofile(MP.."/power/power_terminal.lua")
dofile(MP.."/power/power_terminal2.lua")
dofile(MP.."/power/powerswitchbox.lua") dofile(MP.."/power/powerswitchbox.lua")
dofile(MP.."/power/powerswitch.lua") dofile(MP.."/power/powerswitch.lua")
dofile(MP.."/power/protection.lua") dofile(MP.."/power/protection.lua")

View File

@ -1,6 +1,7 @@
# textdomain: techage # textdomain: techage
#### TA3 Terminal ####@n@nSend commands to your machines@nand output text messages from your@nmachines to the Terminal.@n@nCommand syntax:@n cmd <num> <cmnd>@n@nexample: cmd 181 on@n<num> is the number of the node to which the command is sent@n'on' is the command to turn machines/nodes on@nFurther commands can be retrieved by clicking on@nmachines/nodes with the Techage Info Tool.@n@nLocal commands:@n- clear @= clear screen@n- help @= this message@n- pub @= switch to public use@n- priv @= switch to private use@nTo program a user button with a command:@n set <button-num> <button-text> <command>@ne.g. 'set 1 ON cmd 123 on'@n= #### TA3 Terminal ####@n@nSend commands to your machines@nand output text messages from your@nmachines to the Terminal.@n@nCommand syntax:@n cmd <num> <cmnd>@n@nexample: cmd 181 on@n<num> is the number of the node to which the command is sent@n'on' is the command to turn machines/nodes on@nFurther commands can be retrieved by clicking on@nmachines/nodes with the Techage Info Tool.@n@nLocal commands:@n- clear @= clear screen@n- help @= this message@n- pub @= switch to public use@n- priv @= switch to private use@nTo program a user button with a command:@n set <button-num> <button-text> <command>@ne.g. 'set 1 ON cmd 123 on'@n=
Accu Box=Akkublock
Active:=Aktiv: Active:=Aktiv:
All nodes:=Alle Blöcke: All nodes:=Alle Blöcke:
Allow to dig/place Techage power lines nearby power poles=Erlaubt TODO Allow to dig/place Techage power lines nearby power poles=Erlaubt TODO
@ -34,6 +35,7 @@ Build derrick=Errichte Ölturm
Compressed Gravel=Komprimiertes Kies Compressed Gravel=Komprimiertes Kies
Consum. 1=Konsum. 1 Consum. 1=Konsum. 1
Consum. 2=Konsum. 2 Consum. 2=Konsum. 2
Current power:=Aktueller Verbrauch:
Depth=Tiefe Depth=Tiefe
Digging depth=Grabungstiefe Digging depth=Grabungstiefe
Dirt with Ash=Erde mit Asche Dirt with Ash=Erde mit Asche
@ -46,6 +48,8 @@ Ele Power Source=Ele Kraftquelle
Electricity=Strom Electricity=Strom
Electrolyzer=Eletrolyseur Electrolyzer=Eletrolyseur
Electronic Fab=Elektronikfabrik Electronic Fab=Elektronikfabrik
Energy storage=Engergiespeicher
Energy stored:=Energie gespeichert
Enter=Eingeben Enter=Eingeben
Epoxide Resin=Epoxidharz Epoxide Resin=Epoxidharz
Epoxide Resin Barrel=Epoxidharz Fass Epoxide Resin Barrel=Epoxidharz Fass
@ -58,12 +62,14 @@ Flywheel=Schwungrad
Force order of filter items=Erzwinge Reihenfolge Force order of filter items=Erzwinge Reihenfolge
Fuel Cell=Brennstoffzelle Fuel Cell=Brennstoffzelle
Fuel Menu=Brennstoff Menü Fuel Menu=Brennstoff Menü
Fuel cell=Brennstoffzelle
Furnace Top=Ofenoberteil Furnace Top=Ofenoberteil
Gas Cylinder Large=Gasflasche groß Gas Cylinder Large=Gasflasche groß
Gas Cylinder Small=Gasflasche klein Gas Cylinder Small=Gasflasche klein
Genera. 1=Genera. 1 Genera. 1=Genera. 1
Genera. 2=Genera. 2 Genera. 2=Genera. 2
Generator=Generator Generator=Generator
Generators=Generatoren
Gibbsite Powder=Gibbsit Pulver Gibbsite Powder=Gibbsit Pulver
Gravel Rinser=Kiesspüler Gravel Rinser=Kiesspüler
Gravel Sieve=Kiessieb Gravel Sieve=Kiessieb
@ -77,6 +83,7 @@ Hydrogen Cylinder Small=Wasserstoffflasche klein
In use:=In Benutzung: In use:=In Benutzung:
Insert destination node number(s)=Gebe Zielnummer(n) ein Insert destination node number(s)=Gebe Zielnummer(n) ein
Insert door/gate block number(s)=Gebe Tür-/Tornummer(n) ein Insert door/gate block number(s)=Gebe Tür-/Tornummer(n) ein
Intake=Stromaufnahme
Inverter=Wechselrichter Inverter=Wechselrichter
Leave Powder=Laub Pulver Leave Powder=Laub Pulver
Liquid Filler=Einfülltrichter Liquid Filler=Einfülltrichter
@ -87,6 +94,7 @@ Load=Ladung
Lye=Lauge Lye=Lauge
Lye Barrel=Lauge Fass Lye Barrel=Lauge Fass
Lye Canister=Lauge Kanister Lye Canister=Lauge Kanister
Maximum power:=Maximalstrom:
Melting Guide=Schmelzführer Melting Guide=Schmelzführer
Melting Pot active (heat@==Schmelztiegel aktiv (Hitze@= Melting Pot active (heat@==Schmelztiegel aktiv (Hitze@=
Melting Pot inactive (heat@==Schmelztiegel inaktiv (Hitze@= Melting Pot inactive (heat@==Schmelztiegel inaktiv (Hitze@=
@ -103,11 +111,14 @@ Needle Powder=Nadel Pulver
Network Data=Netzwerkdaten Network Data=Netzwerkdaten
No network or active generator available!=Kein Stromnetz oder aktiver Generator verfügbar No network or active generator available!=Kein Stromnetz oder aktiver Generator verfügbar
No plan available=Kein Plan verfügar No plan available=Kein Plan verfügar
No power grid or running generator!=Kein Stromnetz oder Generator verfügbar!
No wind at this altitude!=Kein Wind auf dieser Höhe No wind at this altitude!=Kein Wind auf dieser Höhe
Node number to send the events to=Knotennummer zum Senden der Events Node number to send the events to=Knotennummer zum Senden der Events
Node numbers to read the states from=Knotennummern zum Lesen der Zustände Node numbers to read the states from=Knotennummern zum Lesen der Zustände
Node owner=Blockbesitzer Node owner=Blockbesitzer
Number blocks:=Anzahl Blöcke:
Number of all nodes=Anzahl aller Blöcke Number of all nodes=Anzahl aller Blöcke
Number of power grid blocks=Anzahl der Stromnetz Blöcke
Oil=Öl Oil=Öl
Oil Drill Box=Ölbohrkiste Oil Drill Box=Ölbohrkiste
Oil Pumpjack=Ölpumpe Oil Pumpjack=Ölpumpe
@ -116,6 +127,7 @@ Oil Tank=Öltank
Oil amount=Ölmenge Oil amount=Ölmenge
Optionally configure@nthe pusher with one item=Der Schieber kann optional@nmit einem Gegenstand@nkonfiguriert werden Optionally configure@nthe pusher with one item=Der Schieber kann optional@nmit einem Gegenstand@nkonfiguriert werden
Outp=Ergeb. Outp=Ergeb.
Output=Stromabgabe
Plan=Plan Plan=Plan
Plastic Granules=Plastikgranulat Plastic Granules=Plastikgranulat
Position=Position Position=Position
@ -123,6 +135,8 @@ Position temperature=Positionstemperatur
Power AC=Wechselstrom Power AC=Wechselstrom
Power DC=Gleichstrom Power DC=Gleichstrom
Power Source=Stromquelle Power Source=Stromquelle
Power grid total=Stromnetz gesammt
Power station=Kraftwerk
Priv missing=Rechte fehlen Priv missing=Rechte fehlen
Propane Cylinder Large=Propangasflasche groß Propane Cylinder Large=Propangasflasche groß
Propane Cylinder Small=Propangasflasche klein Propane Cylinder Small=Propangasflasche klein
@ -141,14 +155,17 @@ Remove derrick=Entferne Ölturm
Rinsing=Waschen Rinsing=Waschen
River Water Barrel=Flusswasserfass River Water Barrel=Flusswasserfass
Save=Speichern Save=Speichern
Select type=Wähle Typ
Send an event if state is equal or larget than=Senden ein Event wenn Status größer oder gleich als Send an event if state is equal or larget than=Senden ein Event wenn Status größer oder gleich als
Send signal if nodes have been:=Sende ein Signal falls Blöcke: Send signal if nodes have been:=Sende ein Signal falls Blöcke:
Show all forceload blocks in a 64x64x64 range=Zeige alle Forceload Blöcke im Umkreis von 64x64x64 Blöcken Show all forceload blocks in a 64x64x64 range=Zeige alle Forceload Blöcke im Umkreis von 64x64x64 Blöcken
Sieved Basalt Gravel=Basaltkies gesiebt Sieved Basalt Gravel=Basaltkies gesiebt
Sieved Gravel=Gesiebtes Kies Sieved Gravel=Gesiebtes Kies
Solar system=Solaranlage
Start level=Startebene Start level=Startebene
Start level @= 0@nmeans the same level@nas the quarry is placed=Startebene @= 0@nbedeutet gleiche Ebene@nwie der Steinbrecher Start level @= 0@nmeans the same level@nas the quarry is placed=Startebene @= 0@nbedeutet gleiche Ebene@nwie der Steinbrecher
Steam Power Source=Dampfenergiequelle Steam Power Source=Dampfenergiequelle
Storage systems=Speichersysteme
Store=Speichern Store=Speichern
Switched to private use!=Zur privaten Nutzung umgeschaltet Switched to private use!=Zur privaten Nutzung umgeschaltet
Switched to public use!=Zur öffentlichen Nutzung umgeschaltet Switched to public use!=Zur öffentlichen Nutzung umgeschaltet
@ -250,6 +267,7 @@ TA3 Player Detector=TA3 Spieler Detektor
TA3 Power Station Firebox=TA3 Kraftwerks-Feuerbox TA3 Power Station Firebox=TA3 Kraftwerks-Feuerbox
TA3 Power Station Oil Burner=TA3 Kraftwerks-Ölbrenner TA3 Power Station Oil Burner=TA3 Kraftwerks-Ölbrenner
TA3 Power Terminal=TA3 Strom Terminal TA3 Power Terminal=TA3 Strom Terminal
TA3 Power Terminal Old=TA3 Strom Terminal Alt
TA3 Propane=TA3 Propan TA3 Propane=TA3 Propan
TA3 Protected Chest=TA3 Gesicherte Kiste TA3 Protected Chest=TA3 Gesicherte Kiste
TA3 Pump=TA3 Pumpe TA3 Pump=TA3 Pumpe
@ -337,10 +355,13 @@ The wind turbines are too close together!=Die Windkraftanlagen stehen zu eng bei
Thermal=Wärme Thermal=Wärme
Time=Zeit Time=Zeit
Tiny Generator=Kleingenerator Tiny Generator=Kleingenerator
Tiny generator=Kleingenerator
To add fuel punch@nthis block@nwith a fuel container=Um Brennstoff nachzufüllen,@nschlage mit einem Kraftstoffbehälter@nauf den Block To add fuel punch@nthis block@nwith a fuel container=Um Brennstoff nachzufüllen,@nschlage mit einem Kraftstoffbehälter@nauf den Block
To add liquids punch@nthe tank@nwith a liquid container=Um Flüssigkeit nachzufüllen,@nschlage mit einem Flüssigkeitsbehälter@nauf den Block To add liquids punch@nthe tank@nwith a liquid container=Um Flüssigkeit nachzufüllen,@nschlage mit einem Flüssigkeitsbehälter@nauf den Block
To add water punch@nthe boiler@nwith a water bucket=Um Wasser nachzufüllen,@nschlage mit einem Wassereimer@nauf den Block To add water punch@nthe boiler@nwith a water bucket=Um Wasser nachzufüllen,@nschlage mit einem Wassereimer@nauf den Block
To many blocks in the power grid!=Zu viele Blöcke im Stromnetz!
Turned on:=Eingeschaltet: Turned on:=Eingeschaltet:
Type=Typ
Update=Update Update=Update
Usmium Nuggets=Usmium Nuggets Usmium Nuggets=Usmium Nuggets
Usmium Powder=Usmium Pulver Usmium Powder=Usmium Pulver
@ -349,6 +370,7 @@ Water=Wasser
Water Barrel=Wasserfass Water Barrel=Wasserfass
Water Boiler=Wasserboiler Water Boiler=Wasserboiler
Water Pump=Wasserpumpe Water Pump=Wasserpumpe
Wind turbine=Windkraftanlage
[Bucket] Lava can only be placed below sea level!=Lava kann nur unterhalb der Meerehöhe platziert werden! [Bucket] Lava can only be placed below sea level!=Lava kann nur unterhalb der Meerehöhe platziert werden!
[TA4 Wind Turbine]=[TA4 Windkraftanlage] [TA4 Wind Turbine]=[TA4 Windkraftanlage]
[TA] Area is protected!=[TA] Bereich ist geschützt [TA] Area is protected!=[TA] Bereich ist geschützt
@ -396,4 +418,4 @@ stopped=gestoppt
storage empty?=Speicher leer? storage empty?=Speicher leer?
water temperature=Wassertemperatur water temperature=Wassertemperatur
wrong storage diameter=Falscher Wärmespeicher-Durchmesser wrong storage diameter=Falscher Wärmespeicher-Durchmesser
##### not used anymore ##### ##### not used anymore #####

View File

@ -1,4 +1,5 @@
#### TA3 Terminal ####@n@nSend commands to your machines@nand output text messages from your@nmachines to the Terminal.@n@nCommand syntax:@n cmd <num> <cmnd>@n@nexample: cmd 181 on@n<num> is the number of the node to which the command is sent@n'on' is the command to turn machines/nodes on@nFurther commands can be retrieved by clicking on@nmachines/nodes with the Techage Info Tool.@n@nLocal commands:@n- clear @= clear screen@n- help @= this message@n- pub @= switch to public use@n- priv @= switch to private use@nTo program a user button with a command:@n set <button-num> <button-text> <command>@ne.g. 'set 1 ON cmd 123 on'@n= #### TA3 Terminal ####@n@nSend commands to your machines@nand output text messages from your@nmachines to the Terminal.@n@nCommand syntax:@n cmd <num> <cmnd>@n@nexample: cmd 181 on@n<num> is the number of the node to which the command is sent@n'on' is the command to turn machines/nodes on@nFurther commands can be retrieved by clicking on@nmachines/nodes with the Techage Info Tool.@n@nLocal commands:@n- clear @= clear screen@n- help @= this message@n- pub @= switch to public use@n- priv @= switch to private use@nTo program a user button with a command:@n set <button-num> <button-text> <command>@ne.g. 'set 1 ON cmd 123 on'@n=
Accu Box=
Active:= Active:=
All nodes:= All nodes:=
Allow to dig/place Techage power lines nearby power poles= Allow to dig/place Techage power lines nearby power poles=
@ -32,6 +33,7 @@ Build derrick=
Compressed Gravel= Compressed Gravel=
Consum. 1= Consum. 1=
Consum. 2= Consum. 2=
Current power:=
Depth= Depth=
Digging depth= Digging depth=
Dirt with Ash= Dirt with Ash=
@ -44,6 +46,8 @@ Ele Power Source=
Electricity= Electricity=
Electrolyzer= Electrolyzer=
Electronic Fab= Electronic Fab=
Energy storage=
Energy stored:=
Enter= Enter=
Epoxide Resin= Epoxide Resin=
Epoxide Resin Barrel= Epoxide Resin Barrel=
@ -56,12 +60,14 @@ Flywheel=
Force order of filter items= Force order of filter items=
Fuel Cell= Fuel Cell=
Fuel Menu= Fuel Menu=
Fuel cell=
Furnace Top= Furnace Top=
Gas Cylinder Large= Gas Cylinder Large=
Gas Cylinder Small= Gas Cylinder Small=
Genera. 1= Genera. 1=
Genera. 2= Genera. 2=
Generator= Generator=
Generators=
Gibbsite Powder= Gibbsite Powder=
Gravel Rinser= Gravel Rinser=
Gravel Sieve= Gravel Sieve=
@ -75,6 +81,7 @@ Hydrogen Cylinder Small=
In use:= In use:=
Insert destination node number(s)= Insert destination node number(s)=
Insert door/gate block number(s)= Insert door/gate block number(s)=
Intake=
Inverter= Inverter=
Leave Powder= Leave Powder=
Liquid Filler= Liquid Filler=
@ -85,6 +92,7 @@ Load=
Lye= Lye=
Lye Barrel= Lye Barrel=
Lye Canister= Lye Canister=
Maximum power:=
Melting Guide= Melting Guide=
Melting Pot active (heat@== Melting Pot active (heat@==
Melting Pot inactive (heat@== Melting Pot inactive (heat@==
@ -101,11 +109,14 @@ Needle Powder=
Network Data= Network Data=
No network or active generator available!= No network or active generator available!=
No plan available= No plan available=
No power grid or running generator!=
No wind at this altitude!= No wind at this altitude!=
Node number to send the events to= Node number to send the events to=
Node numbers to read the states from= Node numbers to read the states from=
Node owner= Node owner=
Number blocks:=
Number of all nodes= Number of all nodes=
Number of power grid blocks=
Oil= Oil=
Oil Drill Box= Oil Drill Box=
Oil Pumpjack= Oil Pumpjack=
@ -114,6 +125,7 @@ Oil Tank=
Oil amount= Oil amount=
Optionally configure@nthe pusher with one item= Optionally configure@nthe pusher with one item=
Outp= Outp=
Output=
Plan= Plan=
Plastic Granules= Plastic Granules=
Position= Position=
@ -121,6 +133,8 @@ Position temperature=
Power AC= Power AC=
Power DC= Power DC=
Power Source= Power Source=
Power grid total=
Power station=
Priv missing= Priv missing=
Propane Cylinder Large= Propane Cylinder Large=
Propane Cylinder Small= Propane Cylinder Small=
@ -139,14 +153,17 @@ Remove derrick=
Rinsing= Rinsing=
River Water Barrel= River Water Barrel=
Save= Save=
Select type=
Send an event if state is equal or larget than= Send an event if state is equal or larget than=
Send signal if nodes have been:= Send signal if nodes have been:=
Show all forceload blocks in a 64x64x64 range= Show all forceload blocks in a 64x64x64 range=
Sieved Basalt Gravel= Sieved Basalt Gravel=
Sieved Gravel= Sieved Gravel=
Solar system=
Start level= Start level=
Start level @= 0@nmeans the same level@nas the quarry is placed= Start level @= 0@nmeans the same level@nas the quarry is placed=
Steam Power Source= Steam Power Source=
Storage systems=
Store= Store=
Switched to private use!= Switched to private use!=
Switched to public use!= Switched to public use!=
@ -248,6 +265,7 @@ TA3 Player Detector=
TA3 Power Station Firebox= TA3 Power Station Firebox=
TA3 Power Station Oil Burner= TA3 Power Station Oil Burner=
TA3 Power Terminal= TA3 Power Terminal=
TA3 Power Terminal Old=
TA3 Propane= TA3 Propane=
TA3 Protected Chest= TA3 Protected Chest=
TA3 Pump= TA3 Pump=
@ -335,10 +353,13 @@ The wind turbines are too close together!=
Thermal= Thermal=
Time= Time=
Tiny Generator= Tiny Generator=
Tiny generator=
To add fuel punch@nthis block@nwith a fuel container= To add fuel punch@nthis block@nwith a fuel container=
To add liquids punch@nthe tank@nwith a liquid container= To add liquids punch@nthe tank@nwith a liquid container=
To add water punch@nthe boiler@nwith a water bucket= To add water punch@nthe boiler@nwith a water bucket=
To many blocks in the power grid!=
Turned on:= Turned on:=
Type=
Update= Update=
Usmium Nuggets= Usmium Nuggets=
Usmium Powder= Usmium Powder=
@ -347,6 +368,7 @@ Water=
Water Barrel= Water Barrel=
Water Boiler= Water Boiler=
Water Pump= Water Pump=
Wind turbine=
[Bucket] Lava can only be placed below sea level!= [Bucket] Lava can only be placed below sea level!=
[TA4 Wind Turbine]= [TA4 Wind Turbine]=
[TA] Area is protected!= [TA] Area is protected!=

View File

@ -132,7 +132,7 @@ Dient zum Bauen von Strommasten. Ist durch den Strommast-Kopf vor Zerstörung ge
### TA Strommastkopf / Power Pole Top ### TA Strommastkopf / Power Pole Top
Hat bis zu vier Arme und erlaubt damit, Strom in bis zu 6 Richtungen weiter zu verteilen. Hat bis zu vier Arme und erlaubt damit, Strom in bis zu 6 Richtungen weiter zu verteilen.
Der Strommastkopf schützt Stromleitungen und Masten in einem Radius von 8 m. Der Strommastkopf schützt Stromleitungen und Masten in einem Radius von 8 m.
[ta3_powerpole4|image] [ta3_powerpole4|image]
@ -140,7 +140,7 @@ Der Strommastkopf schützt Stromleitungen und Masten in einem Radius von 8 m.
### TA Strommastkopf 2 / Power Pole Top 2 ### TA Strommastkopf 2 / Power Pole Top 2
Dieser Strommastkopf hat nur 2 Arme und wird für die Überlandleitungen genutzt. Dieser Strommastkopf hat zwei feste Arme und wird für die Überlandleitungen genutzt. Er kann aber auch Strom nach unten und oben weiterleiten.
Der Strommastkopf schützt Stromleitungen und Masten in einem Radius von 8 m. Der Strommastkopf schützt Stromleitungen und Masten in einem Radius von 8 m.
[ta3_powerpole2|image] [ta3_powerpole2|image]
@ -189,9 +189,11 @@ Bei Volllast kann ein Akku 400 s lang Strom aufnehmen und wenn er voll ist, auch
### TA3 Strom Terminal / Power Terminal ### TA3 Strom Terminal / Power Terminal
Das Strom-Terminal muss mit dem Stromnetz verbunden werden. Es zeigt Daten aus dem Stromnetz an wie: Das Strom-Terminal muss mit dem Stromnetz verbunden werden. Es zeigt Daten aus dem Stromnetz an.
- Anzahl und Leistung der verschiedenen Generatoren und Akkus (aktuell/maximal)
- Anzahl der Netzwerk-Blöcke (max. 1000) In der oberen Hälfte werden nur die Daten eines ausgewählten Typs ausgegeben. Wird als Typ bspw. "Kraftwerk" gewählt, so werden nur die Daten von Öl- und Kohlekraftwerken gesammelt und ausgegeben. Links werden die Daten von Generatoren (Stromabgabe) und rechts die Daten von Energiespeichern (Stromaufnahme) ausgegeben. Beim Akkublocks bspw. wird beides ausgegeben, da der Akku Strom aufnehmen und abgeben kann.
In der unteren Hälfte werden die Daten aller Generatoren und Speichersystemen des ganzen Stromnetzen zusammengefasst ausgegeben.
[ta3_powerterminal|image] [ta3_powerterminal|image]

View File

@ -14,7 +14,7 @@ Der Rotor muss in einer Höhe (Y-Koordinate) von 12 bis maximal 20 m platziert w
Der Strom muss vom Rotor-Block durch den Mast nach unten geführt werden. Dazu zuerst die Stromleitung nach oben ziehen und das Stromkabel dann mit TA4 Säulenblöcke "verputzen". Unten kann eine Arbeitsplattform errichtet werden. Der Plan rechts zeigt den Aufbau im oberen Teil. Der Strom muss vom Rotor-Block durch den Mast nach unten geführt werden. Dazu zuerst die Stromleitung nach oben ziehen und das Stromkabel dann mit TA4 Säulenblöcke "verputzen". Unten kann eine Arbeitsplattform errichtet werden. Der Plan rechts zeigt den Aufbau im oberen Teil.
Die Windkraftanlage liefert eine Leistung von 80 ku, aber dies nur 8 Stunden am Tag (siehe oben). Die Windkraftanlage liefert eine Leistung von 70 ku, aber dies nur 8 Stunden am Tag (siehe oben).
[ta4_windturbine|plan] [ta4_windturbine|plan]
@ -70,7 +70,7 @@ Der Plan rechts zeigt 3 Einheiten mit je zwei Solarmodulen und einem Trägermodu
Solarmodule liefern Gleichspannung, welcher nicht direkt in das Stromnetz eingespeist werden kann. Daher müssen zuerst die Solareinheiten über das rote Kabel mit dem Wechselrichter verbunden werden. Dieser besteht aus zwei Blöcken, einen für das rote Kabel zu den Solarmodulen (DC) und einen für das graue Stromkabel ins Stromnetz (AC). Solarmodule liefern Gleichspannung, welcher nicht direkt in das Stromnetz eingespeist werden kann. Daher müssen zuerst die Solareinheiten über das rote Kabel mit dem Wechselrichter verbunden werden. Dieser besteht aus zwei Blöcken, einen für das rote Kabel zu den Solarmodulen (DC) und einen für das graue Stromkabel ins Stromnetz (AC).
Der Kartenbereich, wo die Solaranlage steht, muss komplett geladen sein. Es empfiehlt sich daher, zuerst einen Forceload Block zu setzen, und dann innerhalb dieses Bereiches die Module zu platzieren. Der Kartenbereich, wo die Solaranlage steht, muss komplett geladen sein. Die gilt auch für die direkte Position über dem Solarmodul, denn dort wird regelmäßig die Lichtstärke gemessen. Es empfiehlt sich daher, zuerst einen Forceload Block zu setzen, und dann innerhalb dieses Bereiches die Module zu platzieren.
[ta4_solarplant|plan] [ta4_solarplant|plan]

View File

@ -80,12 +80,12 @@ local function trigger_network(pos, outdir, Cable)
local nvm = techage.get_nvm(pos) local nvm = techage.get_nvm(pos)
local netID = nvm[Cable.tube_type] and nvm[Cable.tube_type]["netID"] local netID = nvm[Cable.tube_type] and nvm[Cable.tube_type]["netID"]
if not netID then if not netID then
print("determine_netID !!!!!!!!!!!!!!!!!!!!") --print("determine_netID !!!!!!!!!!!!!!!!!!!!")
netID = determine_netID(pos, outdir, Cable) netID = determine_netID(pos, outdir, Cable)
store_netID(pos, outdir, netID, Cable) store_netID(pos, outdir, netID, Cable)
networks.build_network(pos, outdir, Cable, netID) networks.build_network(pos, outdir, Cable, netID)
elseif not networks.get_network(Cable.tube_type, netID) then elseif not networks.get_network(Cable.tube_type, netID) then
print("build_network !!!!!!!!!!!!!!!!!!!!") --print("build_network !!!!!!!!!!!!!!!!!!!!")
delete_netID(pos, outdir, Cable) delete_netID(pos, outdir, Cable)
networks.build_network(pos, outdir, Cable, netID) networks.build_network(pos, outdir, Cable, netID)
end end
@ -163,6 +163,11 @@ function techage.power.consumer_alive(pos, Cable, cycle_time)
local rv = (cycle_time / 2) + 1 local rv = (cycle_time / 2) + 1
if def["netID"] and def["calive"] and def["calive"] < rv then -- network available if def["netID"] and def["calive"] and def["calive"] < rv then -- network available
def["calive"] = rv def["calive"] = rv
def["still_runing"] = true
return def["taken"] or 0
elseif def["still_runing"] then
def["calive"] = rv
def["still_runing"] = false
return def["taken"] or 0 return def["taken"] or 0
elseif not def["cstate"] or def["cstate"] == RUNNING then elseif not def["cstate"] or def["cstate"] == RUNNING then
local ndef = net_def(pos, Cable.tube_type) local ndef = net_def(pos, Cable.tube_type)

View File

@ -8,7 +8,7 @@
GPL v3 GPL v3
See LICENSE.txt for more information See LICENSE.txt for more information
TA3 Power Terminal TA3 Power Terminal Old
]]-- ]]--
@ -155,7 +155,7 @@ local function formspec(pos, nvm)
end end
minetest.register_node("techage:power_terminal", { minetest.register_node("techage:power_terminal", {
description = S("TA3 Power Terminal"), description = S("TA3 Power Terminal Old"),
inventory_image = "techage_power_terminal_front.png", inventory_image = "techage_power_terminal_front.png",
tiles = { tiles = {
"techage_power_terminal_top.png", "techage_power_terminal_top.png",
@ -212,19 +212,9 @@ minetest.register_node("techage:power_terminal", {
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
groups = {cracky = 2, level = 2}, groups = {cracky = 2, level = 2, not_in_creative_inventory = 1},
sounds = default.node_sound_metal_defaults(), sounds = default.node_sound_metal_defaults(),
}) })
Cable:add_secondary_node_names({"techage:power_terminal"}) Cable:add_secondary_node_names({"techage:power_terminal"})
minetest.register_alias("techage:ta3_power_terminal", "techage:power_terminal")
minetest.register_craft({
output = "techage:power_terminal",
recipe = {
{"", "techage:usmium_nuggets", "default:steel_ingot"},
{"", "techage:basalt_glass_thin", "default:copper_ingot"},
{"", "techage:vacuum_tube", "default:steel_ingot"},
},
})

368
power/power_terminal2.lua Normal file
View File

@ -0,0 +1,368 @@
--[[
TechAge
=======
Copyright (C) 2019-2020 Joachim Stolberg
GPL v3
See LICENSE.txt for more information
TA3 Power Terminal
]]--
-- for lazy programmers
local S2P = minetest.string_to_pos
local P2S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local M = minetest.get_meta
local N = function(pos) return minetest.get_node(pos).name end
local S = techage.S
local CYCLE_TIME = 2
local Cable = techage.ElectricCable
local power = techage.power
local networks = techage.networks
local STOPPED = techage.power.STOPPED
local NOPOWER = techage.power.NOPOWER
local RUNNING = techage.power.RUNNING
local Generators = {
S("Power station"),
S("Tiny generator"),
S("Solar system") ,
S("Wind turbine"),
S("Accu Box"),
S("Energy storage"),
S("Fuel cell"),
S("Electrolyzer"),
}
local Storage = {
[S("Accu Box")] = true,
[S("Energy storage")] = true,
[S("Fuel cell")] = true,
[S("Electrolyzer")] = true,
}
local GeneratorPerformances = {
80, -- S("Power station")
12, -- S("Tiny generator")
100, -- S("Solar system")
70, -- S("Wind turbine")
10, -- S("Accu Box")
60, -- S("Energy storage")
25, -- S("Fuel cell")
30, -- S("Electrolyzer")
}
--
-- Generate the needed tables for the formspec
--
local Gentypes = table.concat(Generators, ",")
local Gentype2Idx = {}
local Gentype2Maxvalue = {}
for idx,name in ipairs(Generators) do
Gentype2Idx[name] = idx
Gentype2Maxvalue[name] = GeneratorPerformances[idx]
end
local function generator_data(gen_tbl, nominal)
local pow_max = 0
local pow_curr = 0
local num_nodes = 0
for i,gen in ipairs(gen_tbl or {}) do
if gen.nominal == nominal then
local nvm = techage.get_nvm(gen.pos)
if nvm.ele1 and nvm.ele1.gstate and nvm.ele1.galive and nvm.ele1.given then
num_nodes = num_nodes + 1
if nvm.ele1.gstate == RUNNING then
pow_max = pow_max + (nvm.ele1.curr_power or nominal)
if nvm.ele1.galive > 0 and nvm.ele1.given > 0 then
pow_curr = pow_curr + nvm.ele1.given
end
end
end
end
end
return pow_max, pow_curr, num_nodes
end
local function consumer_data(gen_tbl, nominal)
local pow_max = 0
local pow_curr = 0
local num_nodes = 0
for i,gen in ipairs(gen_tbl or {}) do
if gen.nominal == nominal then
local nvm = techage.get_nvm(gen.pos)
if nvm.ele1 and nvm.ele1.cstate and nvm.ele1.calive and nvm.ele1.taken then
num_nodes = num_nodes + 1
if nvm.ele1.cstate == RUNNING then
pow_max = pow_max + nominal
if nvm.ele1.calive > 0 and nvm.ele1.taken > 0 then
pow_curr = pow_curr + nvm.ele1.taken
end
end
end
end
end
return pow_max, pow_curr, num_nodes
end
local function storage_load(gen_tbl, nominal)
local load_curr = 0 -- percentage
local num = 0
for i,gen in ipairs(gen_tbl or {}) do
if gen.nominal == nominal then
local ndef = techage.NodeDef[techage.get_node_lvm(gen.pos).name]
if ndef and ndef.on_recv_message then
local resp = ndef.on_recv_message(gen.pos, "0", "load")
if type(resp) == "number" then
load_curr = load_curr + resp
num = num + 1
end
end
end
end
if num > 0 then
return math.floor(load_curr / num)
else
return 0
end
end
local function calc_network_data_type(pos, nvm, gentype)
local pow_max1, pow_curr1, num_nodes1, pow_stored1
local pow_max2, pow_curr2, num_nodes2, pow_stored2
local nominal = Gentype2Maxvalue[gentype]
local netw = techage.networks.has_network("ele1", nvm.ele1 and nvm.ele1.netID) or {}
if gentype == S("Accu Box") or gentype == S("Energy storage") then
pow_max1, pow_curr1, num_nodes1 = generator_data(netw.gen2, nominal)
pow_max2, pow_curr2, num_nodes2 = consumer_data(netw.con2, nominal)
pow_stored1 = storage_load(netw.con2, Gentype2Maxvalue[gentype]).." %"
pow_stored2 = pow_stored1
elseif gentype == S("Fuel cell") then
pow_max1, pow_curr1, num_nodes1 = generator_data(netw.gen2, nominal)
pow_max2, pow_curr2, num_nodes2 = 0, 0, 0
pow_stored1 = storage_load(netw.gen2, Gentype2Maxvalue[gentype]).." %"
pow_stored2 = "-"
elseif gentype == S("Electrolyzer") then
pow_max1, pow_curr1, num_nodes1 = 0, 0, 0
pow_max2, pow_curr2, num_nodes2 = consumer_data(netw.con2, nominal)
pow_stored2 = storage_load(netw.con2, Gentype2Maxvalue[gentype]).." %"
pow_stored1 = "-"
else -- gen1 generators
pow_max1, pow_curr1, num_nodes1 = generator_data(netw.gen1, nominal)
pow_max2, pow_curr2, num_nodes2 = 0, 0, 0
pow_stored1 = "-"
pow_stored2 = "-"
end
return netw,
{pow_max = pow_max1, pow_curr = pow_curr1, num_nodes = num_nodes1, pow_stored = pow_stored1},
{pow_max = pow_max2, pow_curr = pow_curr2, num_nodes = num_nodes2, pow_stored = pow_stored2}
end
local function calc_network_data_total(pos, nvm)
local netw = techage.networks.has_network("ele1", nvm.ele1 and nvm.ele1.netID) or {}
local pow_max1 = netw.available1 or 0
local pow_max2 = netw.available2 or 0
local pow_used1 = netw.on and math.min(netw.needed1 + netw.needed2, netw.available1) or 0
local pow_used2 = netw.on and math.max(netw.needed1 - pow_used1, -netw.available2) or 0
local num_nodes1 = #(netw.gen1 or {})
local num_nodes2 = #(netw.gen2 or {})
return netw,
{pow_max = pow_max1, pow_curr = pow_used1, num_nodes = num_nodes1},
{pow_max = pow_max2, pow_curr = pow_used2, num_nodes = num_nodes2}
end
local function get_state(netw)
local state = ""
if #(netw.gen1 or {}) + #(netw.gen2 or {}) == 0 then
state = S("No power grid or running generator!")
elseif (netw.num_nodes or 0) < techage.networks.MAX_NUM_NODES then
state = S("Number of power grid blocks")..": "..(netw.num_nodes or 0)
else
state = S("To many blocks in the power grid!")
end
return state
end
local function column(x,y, data)
if data.pow_stored then
return
"label["..x..","..(y+0.0)..";"..data.num_nodes.. "]"..
"label["..x..","..(y+0.5)..";"..data.pow_max.. " ku]"..
"label["..x..","..(y+1.0)..";"..data.pow_curr.. " ku]"..
"label["..x..","..(y+1.5)..";"..data.pow_stored.."]"
else
return
"label["..x..","..(y+0.0)..";"..data.num_nodes.. "]"..
"label["..x..","..(y+0.5)..";"..data.pow_max.. " ku]"..
"label["..x..","..(y+1.0)..";"..data.pow_curr.. " ku]"
end
end
local function formspec_type(pos, nvm)
return "size[5,4]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"box[0,-0.1;4.8,0.5;#c6e8ff]"..
"label[1.5,-0.1;"..minetest.colorize( "#000000", S("Select type")).."]"..
"dropdown[0,1;5.2;gentype;"..Gentypes..";"..(nvm.gentype_idx or 1).."]"..
"style_type[button;bgcolor=#395c74]"..
"button[0,2.4;5,1;set;"..S("Store").."]"
end
local function formspec(pos, nvm)
local gentype = nvm.gentype or S("Power station")
local netw, gen1, gen2 = calc_network_data_type(pos, nvm, gentype)
local _, sum1, sum2 = calc_network_data_total(pos, nvm)
netw.prop = ((netw.prop or 0) + 1) % 2
local star = netw.prop == 1 and "*" or ""
local state = get_state(netw)
return "size[9,7]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"box[0,-0.1;8.8,0.5;#c6e8ff]"..
"label[3.5,-0.1;"..minetest.colorize( "#000000", S("Network Data")).."]"..
"label[8.5,-0.1;"..minetest.colorize( "#000000", star).."]"..
"style_type[button;bgcolor=#395c74]"..
"button[0,0.7;3,1;config;"..S("Type").."]"..
"box[0,1.6;8.8,0.4;#c6e8ff]"..
"box[0,2.15;8.8,0.4;#395c74]"..
"box[0,2.65;8.8,0.4;#395c74]"..
"box[0,3.15;8.8,0.4;#395c74]"..
"box[0,3.65;8.8,0.4;#395c74]"..
"label[0.1,1.55;"..minetest.colorize( "#000000", gentype).."]"..
"label[3.7,1.55;"..minetest.colorize( "#000000", S("Output")).."]"..
"label[6.2,1.55;"..minetest.colorize( "#000000", S("Intake")).."]"..
"label[0.1,2.1;"..S("Number blocks:").."]"..
"label[0.1,2.6;"..S("Maximum power:").."]"..
"label[0.1,3.1;"..S("Current power:").."]"..
"label[0.1,3.6;"..S("Energy stored:").."]"..
column(3.7, 2.1, gen1)..
column(6.2, 2.1, gen2)..
--"box[0,5.3;8.8,0.4;#c6e8ff]"..
"box[0,4.5;8.8,0.4;#c6e8ff]"..
"box[0,5.05;8.8,0.4;#395c74]"..
"box[0,5.55;8.8,0.4;#395c74]"..
"box[0,6.05;8.8,0.4;#395c74]"..
"label[0.1,4.45;"..minetest.colorize( "#000000", S("Power grid total")).."]"..
"label[3.7,4.45;"..minetest.colorize( "#000000", S("Generators")).."]"..
"label[6.2,4.45;"..minetest.colorize( "#000000", S("Storage systems")).."]"..
"label[0.1,5.0;"..S("Number blocks:").."]"..
"label[0.1,5.5;"..S("Maximum power:").."]"..
"label[0.1,6.0;"..S("Current power:").."]"..
column(3.7, 5.0, sum1)..
column(6.2, 5.0, sum2)..
"box[0,6.75;8.8,0.4;#000000]"..
"label[0.1,6.7;"..state.."]"
end
minetest.register_node("techage:ta3_power_terminal", {
description = S("TA3 Power Terminal"),
inventory_image = "techage_power_terminal_front.png",
tiles = {
"techage_power_terminal_top.png",
"techage_power_terminal_top.png",
"techage_power_terminal_side.png",
"techage_power_terminal_side.png",
"techage_power_terminal_back.png",
"techage_power_terminal_front.png",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, 0/16, 8/16, 8/16, 8/16},
},
},
after_place_node = function(pos)
local nvm = techage.get_nvm(pos)
M(pos):set_int("outdir", networks.side_to_outdir(pos, "B"))
Cable:after_place_node(pos)
M(pos):set_string("formspec", formspec(pos, nvm))
end,
after_dig_node = function(pos)
Cable:after_dig_node(pos)
techage.del_mem(pos)
end,
tubelib2_on_update2 = function(pos, outdir, tlib2, node)
power.update_network(pos, outdir, tlib2)
end,
on_rightclick = function(pos, node, clicker)
techage.set_activeformspec(pos, clicker)
minetest.get_node_timer(pos):start(CYCLE_TIME)
local nvm = techage.get_nvm(pos)
M(pos):set_string("formspec", formspec(pos, nvm))
end,
on_timer = function(pos, elapsed)
local nvm = techage.get_nvm(pos)
if techage.is_activeformspec(pos) then
M(pos):set_string("formspec", formspec(pos, nvm))
end
return true
end,
on_receive_fields = function(pos, formname, fields, player)
if minetest.is_protected(pos, player:get_player_name()) then
return
end
local nvm = techage.get_nvm(pos)
if fields.config then
techage.reset_activeformspec(pos, player)
M(pos):set_string("formspec", formspec_type(pos, nvm))
elseif fields.set then
nvm.gentype = fields.gentype
nvm.gentype_idx = Gentype2Idx[fields.gentype] or 1
techage.set_activeformspec(pos, player)
M(pos):set_string("formspec", formspec(pos, nvm))
end
end,
networks = {
ele1 = {
sides = {B = 1}, -- Cable connection side
ntype = "term",
},
},
paramtype2 = "facedir",
paramtype = "light",
on_rotate = screwdriver.disallow,
sunlight_propagates = true,
is_ground_content = false,
groups = {cracky = 2, level = 2},
sounds = default.node_sound_metal_defaults(),
})
Cable:add_secondary_node_names({"techage:ta3_power_terminal"})
minetest.register_craft({
output = "techage:ta3_power_terminal",
recipe = {
{"", "techage:usmium_nuggets", "default:steel_ingot"},
{"", "techage:basalt_glass_thin", "default:copper_ingot"},
{"", "techage:vacuum_tube", "default:steel_ingot"},
},
})

View File

@ -222,7 +222,8 @@ minetest.register_node("techage:powerswitchsmall_on", {
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
}) })
techage.register_node({"techage:powerswitch", "techage:powerswitch_on"}, { techage.register_node({"techage:powerswitch", "techage:powerswitch_on",
"techage:powerswitchsmall", "techage:powerswitchsmall_on"}, {
on_recv_message = function(pos, src, topic, payload) on_recv_message = function(pos, src, topic, payload)
local node = techage.get_node_lvm(pos) local node = techage.get_node_lvm(pos)
if topic == "on" and node.name == "techage:powerswitch" then if topic == "on" and node.name == "techage:powerswitch" then

View File

@ -22,7 +22,7 @@ local M = minetest.get_meta
local S = techage.S local S = techage.S
local CYCLE_TIME = 2 local CYCLE_TIME = 2
local PWR_PERF = 80 local PWR_PERF = 70
local Cable = techage.ElectricCable local Cable = techage.ElectricCable
local power = techage.power local power = techage.power