http://spaceengineerswiki.com/api.php?action=feedcontributions&user=CheronoLord&feedformat=atomSpace Engineers Wiki - User contributions [en]2024-03-29T11:20:13ZUser contributionsMediaWiki 1.28.0http://spaceengineerswiki.com/index.php?title=Laser_Antenna&diff=22265Laser Antenna2018-04-14T21:26:20Z<p>CheronoLord: /* Establishing a connection */</p>
<hr />
<div>{{itembox<br />
| item = Laser Antenna<br />
| description = Used to broadcast a communication between two ship or station.<br />
| tool = no<br />
| largeship = yes<br />
| smallship = yes<br />
| component = no<br />
| rawmaterial = no<br />
| material = no<br />
<br />
| lbuildtime = 50<br />
| lpowerconsumption = 0.576<br />
| lpowerstandby = 0.186<br />
| lresourcesinkgroup = Utility<br />
| lairtightness = sometimes<br />
| lcomponentstructure = 3<br />
| lcomponent1 = Steel Plate<br />
| lcomponent1amt = 10<br />
| lcomponent2 = Bulletproof Glass<br />
| lcomponent2amt = 4<br />
| lcomponent3 = Computer<br />
| lcomponent3amt = 50<br />
| lcomponent4 = Superconductor Component<br />
| lcomponent4amt = 100<br />
| lcomponent5 = Radio-Communication Components<br />
| lcomponent5amt = 20<br />
| lcomponent6 = Detector Components<br />
| lcomponent6amt = 30<br />
| lcomponent7 = Motor<br />
| lcomponent7amt = 16<br />
| lcomponent8 = Construction Component<br />
| lcomponent8amt = 40<br />
| lcomponent9 = Steel Plate<br />
| lcomponent9amt = 40<br />
| lwidth = 1<br />
| lheight = 2<br />
| ldepth = 1<br />
<br />
| sbuildtime = 20<br />
| spowerconsumption = 0.18<br />
| spowerstandby = 0.06<br />
| sresourcesinkgroup = Utility<br />
| sairtightness = no<br />
| scomponentstructure = 3<br />
| scomponent1 = Steel Plate<br />
| scomponent1amt = 4<br />
| scomponent2 = Bulletproof Glass<br />
| scomponent2amt = 2<br />
| scomponent3 = Computer<br />
| scomponent3amt = 30<br />
| scomponent4 = Superconductor Component<br />
| scomponent4amt = 10<br />
| scomponent5 = Radio-Communication Components<br />
| scomponent5amt = 5<br />
| scomponent6 = Motor<br />
| scomponent6amt = 5<br />
| scomponent7 = Construction Component<br />
| scomponent7amt = 10<br />
| scomponent8 = Small Steel Tube<br />
| scomponent8amt = 10<br />
| scomponent9 = Steel Plate<br />
| scomponent9amt = 6<br />
| swidth = 3<br />
| sheight = 3<br />
| sdepth = 3<br />
<br />
| version = 01.105<br />
}}<br />
{{stub}}<br />
<br />
== Overview ==<br />
The Laser Antenna is a block capable of establishing a communication link between two units. Contrary to the [[Antenna]], it does not broadcast the ship/station name of the specific systems it is on, giving an advantage on PvP servers - communication between two different locations without revealing the position of either. However, as their name would suggest, Laser Antennae must have a clear line of sight between them, at a maximum range of 200km (this allows secret communications between Earth and the Moon, for example, which are approximately 160km apart on [[Scenarios|Easy Start Earth]]). Players, Ships, Stations and Asteroid present in the direction of two Laser Antenna facing each other will disrupt the communication until the path is cleared.<br />
<br />
The Laser Antenna can also relay the signal of other antennae within its range as long as another Antenna or Laser Antenna are present within the same system.<br />
<br />
== Usage ==<br />
Unlike the [[Antenna]], the Laser Antenna does not broadcast its location. The maximum power demand on the large ships and stations for the Laser Antenna is 300x higher compared to the antenna. The ability to not publicly broadcast its location comes at a cost; with lesser range, direction limitation, more power usage and a requirement of a clear line of sight; The laser Antenna can only connect itself with another one to establish a link, reducing the amount of controlled remote system to one, the path between two linked Laser Antennae must be clear and the direction is limited by it own base, making it impossible to broadcast at full 360 degree range.<br />
You also cannot control remote structure directly from the control panel, you must sit in a cockpit or control station.<br />
<br />
{| class="wikitable"<br />
| scope="col" rowspan="2" style="text-align:center;"| '''Type'''<br />
| scope="col" rowspan="2" style="text-align:center;"| '''Maximum Range'''<br />
| scope="row" colspan="3" style="text-align:center;"|'''Power usage'''<br />
|-<br />
| style="text-align:center;"| Connection established<br />
| style="text-align:center;"| Idle<br />
| style="text-align:center;"| Turning to face connection<br />
|-<br />
| style="text-align:center;"| Small Ship<br />
| style="text-align:center;"| 20000 m<br />
| style="text-align:center;"| 180 kW<br />
| style="text-align:center;"| 60 kW<br />
| style="text-align:center;"| 1 kW<br />
|-<br />
| style="text-align:center;"| Large Ship / Station<br />
| style="text-align:center;"| 200000 m<br />
| style="text-align:center;"| 576 kW<br />
| style="text-align:center;"| 186 kW<br />
| style="text-align:center;"| 1 kW<br />
|}<br />
<br />
=== Establishing a connection ===<br />
In order to connect two grids, both have to be powered and both laser antennas need to be within direct line of sight.<br />
There are two ways to connect:<br />
<br />
1. <br />
Via the termial block, player simply paste the coordinates of the antenna to connect to, and press connect.<br />
If both are in direct line of sight and range then they will face each other and connect.<br />
The same terminal allow to copy the antenna's coordinates.<br />
<br />
2) <br />
Via in-game script it is possible to automate option one and let the script do the job.<br />
Antennas must still be within range and direct line of sight.<br />
<br />
A permanent connection can be made by ticking the corresponding checkbox in the terminal (or if a script set it to true).<br />
In which case if connection is lost both antennas will try to reconnect.<br />
Do note that if the connection was lost because one of the grids moved away then the antennas cannot move the grid back to position.<br />
Here too, a script can be used to detect that the antenna is out of range, and attempt to move closer to the last known location of the other antenna.<br />
The moment both antennas are in range and line of sight they will automatically reconnect without the need of plyer intervation or script.<br />
<br />
=== Remote Access ===<br />
The laser antenna functions similar to that of [[Antenna]] block in which you can control ships and stations remotely from extreme distances, provided you have a direct line of sight connection between both laser antenna blocks. After a connection is made, similar to how control over a regular antenna, the player simply scrolls down and locates the [[Remote Control Block]]. The only condition to this is that the player must be seated on the ship or station with the laser antenna in order to gain access to the other ship it is connected to.<br />
<br />
== Tips ==<br />
<br />
<br />
== Media ==<br />
[[File:Laser antenna.jpg|none|thumb|350px|Large laser antenna (left), and Small laser antenna (right)]]<br />
<br />
== Known Issues ==<br />
<br />
== Programming ==<br />
<br />
== Related Items ==<br />
* [[Antenna]]<br />
* [[Beacon]]<br />
<br />
== Update History ==<br />
<div style="-webkit-border-image: none;-webkit-box-shadow: rgba(0, 0, 0, 0.046875) 0px 1px 1px 0px inset;background-color: #eeeeee;border-bottom-color: #AFAFAF;border-bottom-left-radius: 3px;border-bottom-right-radius: 3px;border-bottom-style: solid;border-bottom-width: 1px;border-left-color: #AFAFAF;border-left-style: solid;border-left-width: 1px;border-right-color: #AFAFAF;border-right-style: solid;border-right-width: 1px;border-top-color: #AFAFAF;border-top-left-radius: 3px;border-top-right-radius: 3px;border-top-style: solid;border-top-width: 1px;box-shadow: rgba(0, 0, 0, 0.046875) 0px 1px 1px 0px inset;color: #333;display: block;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 1em;height: auto;line-height: 20px;margin-bottom: 5px;margin-left: 8px;margin-right: 8px;margin-top: 0px;min-height: 20px;padding-bottom: 4px;padding-left: 4px;padding-right: 4px;padding-top: 4px;width: auto;"><br />
{| class="wikitable" style="width: 100%"<br />
|style="text-align: center;width: 8%"| [[Update 01.072]] ||style="padding-left: 10px;padding-right: 10px;"| Laser Antenna introduced.<br />
|}<br />
<br />
</div></div>CheronoLordhttp://spaceengineerswiki.com/index.php?title=Programming_Guide/API_List&diff=20928Programming Guide/API List2017-05-06T14:07:45Z<p>CheronoLord: /* Properties */</p>
<hr />
<div>{{tocright}}<br />
== API List ==<br />
<br />
This is a list of all API functions currently available<ref>http://steamcommunity.com/sharedfiles/filedetails/?id=360966557</ref>.<br />
<br />
=== GridTerminalSystem ===<br />
<br />
Currently only following “built-in” variable that user can use: GridTerminalSystem. This is entry point of entire grid terminal system.<br />
<br />
==== Properties ====<br />
<br />
{| class="wikitable"<br />
! Property<br />
! Return Type<br />
! Description<br />
! get<br />
! set<br />
|-<br />
| Blocks<br />
| List<IMyTerminalBlock><br />
| Returns a list of all blocks on the grid<br />
| V<br />
| X<br />
|-<br />
| BlockGroups<br />
| List<IMyBlockGroup><br />
| Returns a list of all groups in the grid.<br />
| V<br />
| X<br />
|}<br />
<br />
==== Methods ====<br />
<br />
{| class="wikitable"<br />
! Method<br />
! Return Type<br />
! Description<br />
|-<br />
| GetBlocksOfType<T>(List<IMyTerminalBlock> blocks, Func<IMyTerminalBlock, bool> collect = null)<br />
| void<br />
| Puts all found blocks of provided type in the list that are connected to the grid<br />
|-<br />
| SearchBlocksOfName(string name,List<IMyTerminalBlock> blocks, Func<IMyTerminalBlock, bool> collect = null)<br />
| void<br />
| Puts all found blocks of provided name in the list that are connected to the grid<br />
|-<br />
| GetBlockWithName(string name)<br />
| IMyTerminalBlock<br />
| Returns a block with provided name<br />
|}<br />
<br />
=== IMyCubeBlock ===<br />
<br />
IMyCubeBlock is base class for every terminal block.<br />
<br />
==== Properties ====<br />
<br />
{| class="wikitable"<br />
! Property<br />
! Return Type<br />
! Description<br />
! get<br />
! set<br />
|-<br />
| IsBeingHacked<br />
| boolean<br />
| Returns true if block is being hacked<br />
| V<br />
| X<br />
|-<br />
| IsFunctional <br />
| boolean <br />
| Returns true if current block is operational<br />
| V<br />
| X<br />
|-<br />
| IsWorking <br />
| boolean<br />
| Returns true if current block is powered/working<br />
| V<br />
| X<br />
|-<br />
| Position <br />
| VRageMath.Vector3I<br />
| Returns current position<br />
| V<br />
| X<br />
|}<br />
<br />
=== IMyTerminalBlock ===<br />
<br />
MyTerminalBlock is base class for every terminal block.<br />
<br />
==== Properties ====<br />
<br />
{| class="wikitable"<br />
! Property<br />
! Return Type<br />
! Description<br />
! get<br />
! set<br />
|-<br />
| CustomName <br />
| String<br />
| Returns name of the block<br />
| V<br />
| X<br />
|-<br />
| CustomNameWithFaction <br />
| String<br />
| ...<br />
| V<br />
| X<br />
|-<br />
| DetailedInfo <br />
| String<br />
| ...<br />
| V<br />
| X<br />
|-<br />
| ShowOnHUD <br />
| boolean<br />
| Whether block shows up on hud<br />
| V<br />
| X<br />
|}<br />
<br />
==== Methods ====<br />
<br />
{| class="wikitable"<br />
! Method<br />
! Return Type<br />
! Description<br />
|-<br />
| HasLocalPlayerAccess()<br />
| boolean<br />
| ...<br />
|-<br />
| HasPlayerAccess(long playerId)<br />
| boolean<br />
| ...<br />
|-<br />
| RequestShowOnHUD(bool enable)<br />
| void<br />
| ...<br />
|-<br />
| SetCustomName(string text)<br />
| void<br />
| Set the name of the block<br />
|-<br />
| SetCustomName(StringBuilder text)<br />
| void<br />
| Set the name of the block<br />
|-<br />
| GetActions(List<ITerminalAction> resultList, Func<ITerminalAction, bool> collect = null)<br />
| void<br />
| Populates list with available actions<br />
|-<br />
| SearchActionsOfName(string name,List<ITerminalAction> resultList, Func<ITerminalAction, bool> collect = null)<br />
| void<br />
| Populates list with available actions matching the name (Case Insensitive)<br />
|-<br />
| GetActionWithName(string name)<br />
| ITerminalAction <br />
| Returns action with specified name (Case Sensitive)<br />
|-<br />
| SetValue(string propertyName, object value)<br />
| void <br />
| Sets the specified property name to the given value<br />
|}<br />
<br />
=== ITerminalAction ===<br />
<br />
ITerminal action is representation of concrete action that can be triggered.<br />
<br />
==== Properties ====<br />
<br />
{| class="wikitable"<br />
! Property<br />
! Return Type<br />
! Description<br />
! get<br />
! set<br />
|-<br />
| Id <br />
| String<br />
| Returns id of the action<br />
| V<br />
| X<br />
|-<br />
| Name <br />
| StringBuilder <br />
| Returns the name of the action<br />
| V<br />
| X<br />
|}<br />
<br />
==== Methods ====<br />
<br />
{| class="wikitable"<br />
! Method<br />
! Return Type<br />
! Description<br />
|-<br />
| Apply(IMyCubeBlock block)<br />
| void<br />
| Apply the action on a block<br />
|}<br />
<br />
=== IMyFunctionalBlock ===<br />
<br />
IMyFunctionalBlock is base class for every block that can be turned on or off, it’s derived from IMyTerminal block e.g. every Functional block is Terminal block but not all terminal blocks can be turned on or off.<br />
<br />
==== Properties ====<br />
<br />
{| class="wikitable"<br />
! Property<br />
! Return Type<br />
! Description<br />
! get<br />
! set<br />
|-<br />
| Enabled <br />
| boolean<br />
| Returns true if the block is turned on<br />
| V<br />
| X<br />
|}<br />
<br />
== References ==<br />
<references/></div>CheronoLordhttp://spaceengineerswiki.com/index.php?title=Programming_Guide&diff=20927Programming Guide2017-05-06T14:04:57Z<p>CheronoLord: /* Script execution */</p>
<hr />
<div>== Introduction ==<br />
<br />
<br />
=== Editor access ===<br />
Only one player can edit the same script at time. If someone else has an editor for the current block open and someone else tries to open that block's editor, a notification will be shown that the editor is already open.<br />
<br />
=== Main method ===<br />
When the editor is opened for first time, void Main() method is present inside the code editor.<br />
This is entry point that will be called when executing script. If Main method is removed / renamed, the script will not run and you will be notified in the programmable block details area. <br />
Custom methods/variables can be defined and used, but only the Main method will be called without reference.<br />
<br />
=== Variables life ===<br />
There are two types of variables for scripting:<br />
Local (inside the methods) – these variables will keep their value only during execution of a method.<br />
Value will be “lost” when the method ends.<br />
Global (outside the methods) - these variables will keep their values during the lifetime of script. E.g.<br />
If the variable needs to keep value between separate runs of program, it needs to be defined outside the methods.<br />
After pressing “Remember & Exit” or “Remember” buttons, the previous script will be overwritten and all Global variables will be lost.<br />
All variables, local and global except for the built-in Storage variable will lose their value or return to their default value when recompiling the code and between saved game loads.<br />
The Storage variable is unique in that that it store data as string between saved seasons and recompile.<br />
<br />
=== Compiling ===<br />
When the “Check code” button is pressed, the code will be compiled and the result of the compilation will be shown.<br />
There are two steps of the compilation process:<br />
First the code inside editor is compiled by c# compiler for language errors.<br />
If there are any errors during compilation the following dialog is shown:<br />
It this case “aaa” string is placed before Main method. This is the wrong language construction and the compilation failed.<br />
In the error dialog the Line number error and description of the error is shown.<br />
<br />
After compilation, the code is checked for usage of disallowed namespaces and types. In case that check fails,<br />
the following dialog is shown:<br />
In this case System.IO.Directory was used to delete some directory. This is forbidden and error is shown that “Not allowed type was used in script”.<br />
<br />
If compilation and checks pass, a dialog is shown, confirming the checks passed, and the code is saved.<br />
<br />
=== Script execution ===<br />
When “Run” button is pressed or “Run” is assigned as terminal action, script is executed. Currently “Run” needs to be called manually e.g. user need to click on “Run” button or attach it as terminal action.<br />
Script is executed only on server even if it’s triggered from client. If there is any exception during script execution, all clients will be notified in programmable block details area about failure.<br />
In case of exception during script execution, script will not run again unless User opens editor and change script.<br />
A timer can also continuesly run the script by having a run action (you may be prompt to input an argument) and then starting/triggering itself or being started/triggered via script code (if going by the letter the timer will stop if the script crash).<br />
<br />
=== Counting of instructions ===<br />
Every time script is executed, every instruction of script is counted. If script executes more instruction than limit, execution is stopped and user is notified that script is too complex for execution. This prevents scripts to “freeze” game.<br />
<br />
<br />
<br />
== Available interfaces ==<br />
<br />
=== Possible Actions ===<br />
Currently only terminal actions can be triggered inside scripts. User can access terminal system for grid on which programmable block is located and trigger any terminal action on any block at grid.<br />
:* [[Programming_Guide/API_List|API List]]<br />
<br />
=== Block Classes (Action List) ===<br />
:* [[Programming_Guide/Action_List|Block Action List]]<br />
<br />
=== Same block class for different SubTypeID ===<br />
Some blocks have same parent (e.g. <TypeId> in cubeblocks.sbc) and differs only by subtype (e.g. <SubtypeId>). This means there is no distinction between these block in code. <br /><br />
Example of these blocks is the Cargo Container: there are 3 types of cargo containers in the game: small, medium and large. These three types differ only by subtype and Type is same for them e.g. large cargo container id is: <br /><br />
<Id><br /><br />
<TypeId>CargoContainer</TypeId><br /><br />
<SubtypeId>LargeBlockLargeContainer</SubtypeId><br /><br />
</Id><br /><br />
Medium is:<br /><br />
<Id><br /><br />
<TypeId>CargoContainer</TypeId><br /><br />
<SubtypeId>SmallBlockMediumContainer</SubtypeId><br /><br />
</Id><br /><br />
And small is:<br /><br />
<Id><br /><br />
<TypeId>CargoContainer</TypeId><br /><br />
<SubtypeId>LargeBlockSmallContainer</SubtypeId><br /><br />
</Id><br /><br />
<br />
In this case there is only one class IMyCargoContainer for all types of cargo containers.<br />
<br />
==Whitelist==<br />
The types and classes allowed in scripts are restricted. Refer to the [[Scripting Whitelist]] to see what you are allowed to use.<br />
<br />
[[Category:Game Mechanics]]</div>CheronoLordhttp://spaceengineerswiki.com/index.php?title=Programming_Guide&diff=20926Programming Guide2017-05-06T13:59:29Z<p>CheronoLord: /* Variables life */</p>
<hr />
<div>== Introduction ==<br />
<br />
<br />
=== Editor access ===<br />
Only one player can edit the same script at time. If someone else has an editor for the current block open and someone else tries to open that block's editor, a notification will be shown that the editor is already open.<br />
<br />
=== Main method ===<br />
When the editor is opened for first time, void Main() method is present inside the code editor.<br />
This is entry point that will be called when executing script. If Main method is removed / renamed, the script will not run and you will be notified in the programmable block details area. <br />
Custom methods/variables can be defined and used, but only the Main method will be called without reference.<br />
<br />
=== Variables life ===<br />
There are two types of variables for scripting:<br />
Local (inside the methods) – these variables will keep their value only during execution of a method.<br />
Value will be “lost” when the method ends.<br />
Global (outside the methods) - these variables will keep their values during the lifetime of script. E.g.<br />
If the variable needs to keep value between separate runs of program, it needs to be defined outside the methods.<br />
After pressing “Remember & Exit” or “Remember” buttons, the previous script will be overwritten and all Global variables will be lost.<br />
All variables, local and global except for the built-in Storage variable will lose their value or return to their default value when recompiling the code and between saved game loads.<br />
The Storage variable is unique in that that it store data as string between saved seasons and recompile.<br />
<br />
=== Compiling ===<br />
When the “Check code” button is pressed, the code will be compiled and the result of the compilation will be shown.<br />
There are two steps of the compilation process:<br />
First the code inside editor is compiled by c# compiler for language errors.<br />
If there are any errors during compilation the following dialog is shown:<br />
It this case “aaa” string is placed before Main method. This is the wrong language construction and the compilation failed.<br />
In the error dialog the Line number error and description of the error is shown.<br />
<br />
After compilation, the code is checked for usage of disallowed namespaces and types. In case that check fails,<br />
the following dialog is shown:<br />
In this case System.IO.Directory was used to delete some directory. This is forbidden and error is shown that “Not allowed type was used in script”.<br />
<br />
If compilation and checks pass, a dialog is shown, confirming the checks passed, and the code is saved.<br />
<br />
=== Script execution ===<br />
When “Run” button is pressed or “Run” is assigned as terminal action, script is executed. Currently “Run” needs to be called manually e.g. user need to click on “Run” button or attach it as terminal action.<br />
Script is executed only on server even if it’s triggered from client. If there is any exception during script execution, all clients will be notified in programmable block details area about failure.<br />
In case of exception during script execution, script will not run again unless User opens editor and change script.<br />
<br />
=== Counting of instructions ===<br />
Every time script is executed, every instruction of script is counted. If script executes more instruction than limit, execution is stopped and user is notified that script is too complex for execution. This prevents scripts to “freeze” game.<br />
<br />
<br />
<br />
== Available interfaces ==<br />
<br />
=== Possible Actions ===<br />
Currently only terminal actions can be triggered inside scripts. User can access terminal system for grid on which programmable block is located and trigger any terminal action on any block at grid.<br />
:* [[Programming_Guide/API_List|API List]]<br />
<br />
=== Block Classes (Action List) ===<br />
:* [[Programming_Guide/Action_List|Block Action List]]<br />
<br />
=== Same block class for different SubTypeID ===<br />
Some blocks have same parent (e.g. <TypeId> in cubeblocks.sbc) and differs only by subtype (e.g. <SubtypeId>). This means there is no distinction between these block in code. <br /><br />
Example of these blocks is the Cargo Container: there are 3 types of cargo containers in the game: small, medium and large. These three types differ only by subtype and Type is same for them e.g. large cargo container id is: <br /><br />
<Id><br /><br />
<TypeId>CargoContainer</TypeId><br /><br />
<SubtypeId>LargeBlockLargeContainer</SubtypeId><br /><br />
</Id><br /><br />
Medium is:<br /><br />
<Id><br /><br />
<TypeId>CargoContainer</TypeId><br /><br />
<SubtypeId>SmallBlockMediumContainer</SubtypeId><br /><br />
</Id><br /><br />
And small is:<br /><br />
<Id><br /><br />
<TypeId>CargoContainer</TypeId><br /><br />
<SubtypeId>LargeBlockSmallContainer</SubtypeId><br /><br />
</Id><br /><br />
<br />
In this case there is only one class IMyCargoContainer for all types of cargo containers.<br />
<br />
==Whitelist==<br />
The types and classes allowed in scripts are restricted. Refer to the [[Scripting Whitelist]] to see what you are allowed to use.<br />
<br />
[[Category:Game Mechanics]]</div>CheronoLordhttp://spaceengineerswiki.com/index.php?title=Hydrogen_Tank&diff=18144Hydrogen Tank2016-05-18T22:50:13Z<p>CheronoLord: Updated wiki info about small grid tank capacity</p>
<hr />
<div>{{itembox<br />
| item = Hydrogen Tank<br />
| description = <br />
| tool = no<br />
| largeship = yes<br />
| smallship = yes<br />
| component = no<br />
| rawmaterial = no<br />
| material = no<br />
<br />
| sbuildtime = 45<br />
| spowerconsumption = 0.001<br />
| spowerstandby = 0.000001<br />
| sgascapacity = 80000<br />
| sairtightness = sometimes<br />
| sresourcesinkgroup = Factory<br />
<br />
| scomponentstructure = 3<br />
| scomponent1 = Steel Plate<br />
| scomponent1amt = 20<br />
| scomponent2 = Construction Component<br />
| scomponent2amt = 40<br />
| scomponent3 = Computer<br />
| scomponent3amt = 8<br />
| scomponent4 = Small Steel Tube<br />
| scomponent4amt = 60<br />
| scomponent5 = Large Steel Tube<br />
| scomponent5amt = 40<br />
| scomponent6 = Steel Plate<br />
| scomponent6amt = 60<br />
<br />
| swidth = 5<br />
| sheight = 5<br />
| sdepth = 5<br />
<br />
| lbuildtime = 45<br />
| lpowerconsumption = 0.001<br />
| lpowerstandby = 0.000001<br />
| lgascapacity = 2500000<br />
| lairtightness = sometimes<br />
| lresourcesinkgroup = Factory<br />
<br />
| lcomponentstructure = 3<br />
| lcomponent1 = Steel Plate<br />
| lcomponent1amt = 120<br />
| lcomponent2 = Construction Component<br />
| lcomponent2amt = 40<br />
| lcomponent3 = Computer<br />
| lcomponent3amt = 8<br />
| lcomponent4 = Small Steel Tube<br />
| lcomponent4amt = 60<br />
| lcomponent5 = Large Steel Tube<br />
| lcomponent5amt = 80<br />
| lcomponent6 = Steel Plate<br />
| lcomponent6amt = 160<br />
<br />
| lwidth = 3<br />
| lheight = 3<br />
| ldepth = 3<br />
<br />
| version = 01.110<br />
}}<br />
<br />
== Overview ==<br />
The Hydrogen Tank is a block used to store and distribute [[Hydrogen]]. Its main use however is in conjunction with the [[Large Hydrogen Thruster]] and the [[Small Hydrogen Thruster]], where it is used as fuel. <br />
<br />
It can also be used to refill [[Hydrogen Bottle]]s by placing it into the tank's inventory and clicking on Refill Bottles, assuming that auto-refill isn't checked.<br />
<br />
== Usage ==<br />
The hydrogen can be produced from [[Ice]] much the same as [[Oxygen]] inside [[Oxygen Generator]]s. The hydogen tank must be directly connected via [[Conveyor]] blocks in order to receive hydrogen from the generator, and also to send the fuel to the hydrogen thrusters.<br />
=== Indicator ===<br />
The colored indicators on the tank show at a glance the current hydrogen level inside the tank.<br />
<br />
Game version: 1.107<br />
{| class="wikitable"<br />
|-<br />
|style="width: 140px;"|[[File:Air_Vent_Front_Indicator_Green.png]] [[File:Air_Vent_Front_Indicator_Green.png]] [[File:Air_Vent_Front_Indicator_Green.png]] [[File:Air_Vent_Front_Indicator_Green.png]]||Hydrogen Tank is not stockpiling and can be drained.<br />
'''0:''' H2 level < 25%<br />
<br />'''1:''' 25% <= H2 level < 50%<br />
<br />'''2:''' 50% <= H2 level < 75%<br />
<br />'''3:''' H2 level > 75%<br />
<br />'''4:''' Tank full.<br />
|-<br />
|[[File:Air_Vent_Front_Indicator_Blue.png]] [[File:Air_Vent_Front_Indicator_Blue.png]] [[File:Air_Vent_Front_Indicator_Blue.png]] [[File:Air_Vent_Front_Indicator_Blue.png]]||Hydrogen Tank is set to Stockpile. The tank will not release any hydrogen and will drain other tanks that are not stockpiling.<br />
'''0:''' H2 level < 25%<br />
<br />'''1:''' 25% <= H2 level < 50%<br />
<br />'''2:''' 50% <= H2 level < 75%<br />
<br />'''3:''' H2 level > 75%<br />
<br />'''4:''' Tank full.<br />
|-<br />
|[[File:Air_Vent_Front_Indicator_Red.png]] [[File:Air_Vent_Front_Indicator_Red.png]] [[File:Air_Vent_Front_Indicator_Red.png]] [[File:Air_Vent_Front_Indicator_Red.png]]||Hydrogen Tank deactivated or unpowered.<br />
|}<br />
<br />
== Tips ==<br />
*Using a [[Connector]] block, you can vent the hydrogen out of the tanks by switching it to [[Connector#Control_Panel|Throw Out]] mode much the same way you can with oxygen tanks.<br />
<br />
== Media ==<br />
[[File:Hydrogen_Tank_HydroTank01.jpg|none|500px]]<br />
<br />
== Programming ==<br />
<br />
[[Programming Guide|Programming]] in the [[Programmable Block|program block]].<br><br />
<br />
'''Interface name:''' IMyOxygenTank<br />
<br />
== Known Issues ==<br />
* Unlike [[Small Cargo Container|cargo containers]] the actual cargo of the hydrogen tank does not in anyway influence it's mass. Therefore the large block tank will ALWAYS have a mass of 8.1 tons whether its completely full of hydrogen or not.<br />
<br />
== See Also ==<br />
* [[Large Hydrogen Thruster]]<br />
* [[Small Hydrogen Thruster]]<br />
* [[Oxygen Tank]]<br />
<br />
== Update History ==<br />
<div style="-webkit-border-image: none;-webkit-box-shadow: rgba(0, 0, 0, 0.046875) 0px 1px 1px 0px inset;background-color: #eeeeee;border-bottom-color: #AFAFAF;border-bottom-left-radius: 3px;border-bottom-right-radius: 3px;border-bottom-style: solid;border-bottom-width: 1px;border-left-color: #AFAFAF;border-left-style: solid;border-left-width: 1px;border-right-color: #AFAFAF;border-right-style: solid;border-right-width: 1px;border-top-color: #AFAFAF;border-top-left-radius: 3px;border-top-right-radius: 3px;border-top-style: solid;border-top-width: 1px;box-shadow: rgba(0, 0, 0, 0.046875) 0px 1px 1px 0px inset;color: #333;display: block;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 1em;height: auto;line-height: 20px;margin-bottom: 5px;margin-left: 8px;margin-right: 8px;margin-top: 0px;min-height: 20px;padding-bottom: 4px;padding-left: 4px;padding-right: 4px;padding-top: 4px;width: auto;"><br />
{| class="wikitable" style="width: 100%"<br />
|style="text-align: left;width: 8%"| [[Update 01.105]] ||style="padding-left: 10px;padding-right: 10px;"|<br />
*Hydrogen Tanks introduced<br />
|-<br />
|style="text-align: left;width: 8%"| [[Update 01.106]] ||style="padding-left: 10px;padding-right: 10px;"|<br />
*Hydrogen Tank capacity increased.<br />
|}</div>CheronoLord