<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ocr.michiyo.me/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SoraFirestorm</id>
	<title>OpenComputers: Rebooted - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://ocr.michiyo.me/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SoraFirestorm"/>
	<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/wiki/Special:Contributions/SoraFirestorm"/>
	<updated>2026-10-10T04:31:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.4</generator>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1832</id>
		<title>Component/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1832"/>
		<updated>2026-09-15T22:01:34Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Remove link to Tunnel (page is now unified)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | [[Component|Components]]&lt;br /&gt;
|-&lt;br /&gt;
! Core Components&lt;br /&gt;
| [[Component/access point|Access Point]] - [[Component/computer|Computer]] - [[Component/drone|Drone]] - [[Component/drive|Drive]] - [[Component/EEPROM|EEPROM]] - [[Component/filesystem|Filesystem]] - [[Component/GPU|GPU]] - [[Component/microcontroller|Microcontroller]] - [[Component/modem|Modem]] - [[Component/redstone|Redstone]] - [[Component/robot|Robot]] - [[Component/transposer|Transposer]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Component/component access|Component Access]] - [[Component/signals|Signals]]&lt;br /&gt;
|-&lt;br /&gt;
! Cross-Mod Integration&lt;br /&gt;
| [[Component/applied energistics|Applied Energistics]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/expansion_card&amp;diff=1831</id>
		<title>Item/expansion card</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/expansion_card&amp;diff=1831"/>
		<updated>2026-09-15T22:00:45Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/linked card&amp;quot; to &amp;quot;Linked Card&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Expansion Cards =&lt;br /&gt;
&lt;br /&gt;
Expansion cards are components used to add functionalities to a device, for example a graphics card allows a computer to display content on a screen.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Expansion cards can be inserted in the expansion cards slots present in all devices, once added they provide the computer a new component with functions you can access using the [[API/component|Component API]]&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
There are 8 types of expansion cards in OpenComputers, Some of them with more than one tier:&lt;br /&gt;
&lt;br /&gt;
* [[Item/graphics card|Graphics Card]]&lt;br /&gt;
* [[Item/redstone card|Redstone Card]]&lt;br /&gt;
* [[Item/network card|Network Card]]&lt;br /&gt;
* [[Item/wireless network card|Wireless Network Card]]&lt;br /&gt;
* [[Linked Card|Linked Card]]&lt;br /&gt;
* [[Internet Card|Internet Card]]&lt;br /&gt;
* [[Data Card]]&lt;br /&gt;
* [[Debug Card|Debug Card]] (Creative Item)&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/materials&amp;diff=1830</id>
		<title>Item/materials</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/materials&amp;diff=1830"/>
		<updated>2026-09-15T22:00:45Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/linked card&amp;quot; to &amp;quot;Linked Card&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Crafting Materials =&lt;br /&gt;
&lt;br /&gt;
The following items are used to create basic and intermediate components for many of the components used to build [[Block/computer case|Computers]], [[Block/server rack|Servers]], [[Block/robot|Robots]], and [[Item/drone|Drones]].&lt;br /&gt;
&lt;br /&gt;
=== Basic Components ===&lt;br /&gt;
&lt;br /&gt;
Basic components are made of vanilla Minecraft components, and are used in creating intermediate components. A combination of basic and intermediate components are used in creating all of the various blocks and items available in OpenComputers.&lt;br /&gt;
&lt;br /&gt;
= ==== Raw Circuit Board =&lt;br /&gt;
&lt;br /&gt;
Raw Circuit Boards (8x) are made using:&lt;br /&gt;
&lt;br /&gt;
* 1 x Clay&lt;br /&gt;
* 1 x Gold Ingot&lt;br /&gt;
* 1 x Cactus Green&lt;br /&gt;
&lt;br /&gt;
[[File:rawcircuitboard.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= ==== Printed Circuit Board =&lt;br /&gt;
&lt;br /&gt;
Printed Circuit Boards are made from smelting Raw Circuit Boards in a furnace.&lt;br /&gt;
&lt;br /&gt;
[[File:printedcircuitboard.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= ==== Transistor =&lt;br /&gt;
&lt;br /&gt;
Transistors (8x) are crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 3 x Iron Ingot&lt;br /&gt;
* 2 x Gold nugget/oreberry&lt;br /&gt;
* 1 x Redstone&lt;br /&gt;
* 1 x Paper&lt;br /&gt;
&lt;br /&gt;
[[File:transistor.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= ==== Interweb =&lt;br /&gt;
&lt;br /&gt;
The Interweb is made using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 1 x Ender pearl&lt;br /&gt;
* 8 x String&lt;br /&gt;
&lt;br /&gt;
[[File:interweb.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= ==== End Stone =&lt;br /&gt;
&lt;br /&gt;
End Stone (OpenComputers version) is made using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 5 x Ender pearl&lt;br /&gt;
* 4 x Chamelium block&lt;br /&gt;
&lt;br /&gt;
[[File:endstone.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= ==== Disk Platter =&lt;br /&gt;
&lt;br /&gt;
The Disk Platter is made using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Iron nugget/oreberry&lt;br /&gt;
&lt;br /&gt;
[[File:diskplatter.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= ==== Cutting Wire =&lt;br /&gt;
&lt;br /&gt;
Cutting Wire is made using:&lt;br /&gt;
&lt;br /&gt;
* 2 x Stick&lt;br /&gt;
* 1 x Iron Ingot&lt;br /&gt;
&lt;br /&gt;
[Stick, Iron Nugget, Stick]&lt;br /&gt;
&lt;br /&gt;
= ==== Diamond Chip =&lt;br /&gt;
&lt;br /&gt;
Diamond Chips (6x) are made using:&lt;br /&gt;
&lt;br /&gt;
* 1 x [[Item/materials#cutting_wire|Cutting Wire]]&lt;br /&gt;
* 1 x Diamond&lt;br /&gt;
&lt;br /&gt;
= ==== Keyboard Arrow Keys/Button Group/Numeric Keypad =&lt;br /&gt;
&lt;br /&gt;
All of the following recipes use Stone buttons to create the [[Block/keyboard|Keyboard]] components.&lt;br /&gt;
&lt;br /&gt;
Arrow keys:&lt;br /&gt;
&lt;br /&gt;
[[File:kbarrows.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Button group:&lt;br /&gt;
&lt;br /&gt;
[[File:kbbuttons.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Numeric keypad:&lt;br /&gt;
&lt;br /&gt;
[[File:kbnumpad.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= ==== Chamelium =&lt;br /&gt;
&lt;br /&gt;
Chamelium is a material used in 3D Printers, and is made using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Gravel&lt;br /&gt;
* 1 x Charoal&lt;br /&gt;
* 3 x Redstone&lt;br /&gt;
* 1 x Bucket of Water&lt;br /&gt;
&lt;br /&gt;
[[File:chamelium.png|200px]]&lt;br /&gt;
&lt;br /&gt;
=== Intermediate Components ===&lt;br /&gt;
&lt;br /&gt;
Intermediate components are made from basic components, as well as vanilla Minecraft components.&lt;br /&gt;
&lt;br /&gt;
= ==== Microchips =&lt;br /&gt;
&lt;br /&gt;
The Tier 1 Microchip is crafted (8x) using the following recipe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  * 1 x [[Item/materials#transistor|Transistor]]&lt;br /&gt;
  * 2 x Redstone&lt;br /&gt;
  * 6 x Iron nugget/oreberry&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:t1microchip.png|200px]]&lt;br /&gt;
&lt;br /&gt;
The Tier 2 Microchip is crafted (4x) using the following recipe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  * 1 x [[Item/materials#transistor|Transistor]]&lt;br /&gt;
  * 2 x Redstone&lt;br /&gt;
  * 6 x Gold nugget/oreberry&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:t2microchip.png|200px]]&lt;br /&gt;
&lt;br /&gt;
The Tier 3 Microchip is crafted (2x) using the following recipe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  * 1 x [[Item/materials#transistor|Transistor]]&lt;br /&gt;
  * 2 x Redstone&lt;br /&gt;
  * 6 x [[Item/materials#diamond_chip|Diamond Chip]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:tier3microchip.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= ==== Card Base =&lt;br /&gt;
&lt;br /&gt;
The Card Base is a key component in making various expansion cards, such as [[Item/graphics card|Graphics Cards]], [[Item/network card|Network Cards]], [[Linked Card|Linked Cards]], etc.&lt;br /&gt;
&lt;br /&gt;
The following recipe is used in crafting the Card Base:&lt;br /&gt;
&lt;br /&gt;
* 1 x [[Item/materials#printed circuit board|Printed Circuit Board]]&lt;br /&gt;
* 3 x Iron nugget/oreberry&lt;br /&gt;
* 1 x Gold nugget/oreberry&lt;br /&gt;
&lt;br /&gt;
[[File:cardbase.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= ==== Control Unit (CU) =&lt;br /&gt;
&lt;br /&gt;
The Control Unit is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  * 1 x Clock&lt;br /&gt;
  * 1 x Redstone&lt;br /&gt;
  * 3 x [[Item/materials#transistor|Transistor]]&lt;br /&gt;
  * 4 x Gold nugget/oreberry&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:controlunit.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= ==== Arithmetic Logic Unit =&lt;br /&gt;
&lt;br /&gt;
The Arithmetic Logic Unit is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 1 x [[Item/materials#microchips|Microchip (Tier 1)]]&lt;br /&gt;
* 1 x Redstone&lt;br /&gt;
* 3 x [[Item/materials#transistor|Transistor]]&lt;br /&gt;
* 4 x Iron nugget/oreberry&lt;br /&gt;
&lt;br /&gt;
[[File:logicunit.png|200px]]&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1829</id>
		<title>Item/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1829"/>
		<updated>2026-09-15T22:00:45Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/linked card&amp;quot; to &amp;quot;Linked Card&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Items&lt;br /&gt;
|-&lt;br /&gt;
! Components&lt;br /&gt;
| [[Data Card]] - [[Debug Card|Debug Card]] - [[Item/graphics card|Graphics Card]] - [[Internet Card|Internet Card]] - [[Linked Card|Linked Card]] - [[Item/network card|Network Card]] - [[Item/redstone card|Redstone Card]] - [[Item/wireless network card|Wireless Network Card]]&lt;br /&gt;
|-&lt;br /&gt;
! Storage Devices&lt;br /&gt;
| [[Item/floppy disk|Floppy Disk]] - [[Item/EEPROM|EEPROM]] - [[Item/hard disk drive|Hard Disk Drive]] - [[Item/memory|Memory]]&lt;br /&gt;
|-&lt;br /&gt;
! Upgrades&lt;br /&gt;
| [[Item/angel upgrade|Angel Upgrade]] - [[Item/battery upgrade|Battery Upgrade]] - [[Chunkloader Upgrade]] - [[Database Upgrade]] - [[Experience Upgrade|Experience Upgrade]] - [[Generator Upgrade|Generator Upgrade]] - [[Item/hover upgrade|Hover Upgrade]] - [[Inventory Controller Upgrade|Inventory Controller Upgrade]] - [[Item/inventory upgrade|Inventory Upgrade]] - [[Leash Upgrade|Leash Upgrade]] - [[Navigation Upgrade|Navigation Upgrade]] - [[Piston Upgrade|Piston Upgrade]] - [[Sign I/O Upgrade|Sign I/O Upgrade]] - [[Item/solar generator upgrade|Solar Generator Upgrade]] - [[Tank Upgrade|Tank Upgrade]] - [[Item/tank controller upgrade|Tank Controller Upgrade]] - [[Tractor Beam Upgrade|Tractor Beam Upgrade]]&lt;br /&gt;
|-&lt;br /&gt;
! Containers&lt;br /&gt;
| [[Item/card container|Card Container]] - [[Item/upgrade container|Upgrade Container]] - [[Block/disk drive|Disk Drive]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Item/analyzer|Analyzer]] - [[Item/texture picker|Texture Picker]] - [[Item/component bus|Component Bus]] - [[Item/CPU|CPU]] - [[Item/apu|APU]] - [[Item/dronecase|Drone Case]] - [[Item/manual|Manual]] - [[Item/microcontrollercase|Microcontroller Case]] - [[Item/nanomachines|Nanomachines]] - [[Item/terminal|Remote Terminal]] - [[Item/terminal server|Terminal Server]] - [[Item/server|Server]] - [[Item/tablet case|Tablet Case]] - [[Item/tablet|Tablet]] - [[Item/materials|Crafting Materials]] - [[Item/ink cartridge|Ink Cartridge]] - [[Item/scrench|Scrench]] - [[Item/hover boots|Hover Boots]] - [[Item/grog|Grog]] - [[Item/loot disks|Loot Disks]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Linked_Card&amp;diff=1828</id>
		<title>Linked Card</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Linked_Card&amp;diff=1828"/>
		<updated>2026-09-15T21:58:52Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: SoraFirestorm moved page Item/linked card to Linked Card without leaving a redirect: Page has been unified&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Linked Card =&lt;br /&gt;
&lt;br /&gt;
[[File:linked_card.png|128px]]&lt;br /&gt;
&lt;br /&gt;
This card is crafted in pairs. The two resulting cards are &amp;quot;linked&amp;quot;, and can communicate with each other over any distance, even across dimensions. They behave similar to network cards, but as it is only point-to-point, no ports can be configured, and the connection is always open. They also consume more energy per sent packet.&lt;br /&gt;
&lt;br /&gt;
You can recraft any 2 linked card and pair them together, creating a new link channel. You can get the current channel of a linked card either via its component api &amp;lt;code&amp;gt;getChannel&amp;lt;/code&amp;gt;, or from the item data &amp;lt;code&amp;gt;linkChannel&amp;lt;/code&amp;gt; using an [[Inventory Controller Upgrade]].&lt;br /&gt;
&lt;br /&gt;
The Linked Card is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 2 x Eye of Ender&lt;br /&gt;
* 2 x [[Item/network card|Network Card]]&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 3)]]&lt;br /&gt;
* 1 x [[Item/materials|Interweb]]&lt;br /&gt;
&lt;br /&gt;
[[File:linkedcard.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;tunnel&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This card generates &amp;lt;code&amp;gt;modem_message&amp;lt;/code&amp;gt; signals of the same format network cards do.&lt;br /&gt;
&lt;br /&gt;
Callbacks:&lt;br /&gt;
{{APICallback|name=send|signature=(data...)|description=&lt;br /&gt;
Sends the specified data to the card this one is linked to.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=maxPacketSize|signature=():number|description=&lt;br /&gt;
Gets the maximum packet size (config setting).&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getChannel|signature=():string|description=&lt;br /&gt;
Gets the tunnel address of the link card. This is also available in linkChannel using an inventory controller and getting the stack from an inventory slot.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getWakeMessage|signature=():string|description=&lt;br /&gt;
Gets the current wake-up message. When the network card detects the wake message (a string in the first argument of a network packet), on any port and the machine is off, the machine is started. This is the same functionality also provided by robots, cases, servers, drones, and tablets.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=setWakeMessage|signature=(message: string, [fuzzy: boolean]):string|description=&lt;br /&gt;
Sets the wake-up message to the specified &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt;. The message matching can be fuzzy (default is &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). A fuzzy match ignores additional trailing arguments in the network packet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Linked_Card&amp;diff=1827</id>
		<title>Linked Card</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Linked_Card&amp;diff=1827"/>
		<updated>2026-09-15T21:58:11Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Unify item and component API pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Linked Card =&lt;br /&gt;
&lt;br /&gt;
[[File:linked_card.png|128px]]&lt;br /&gt;
&lt;br /&gt;
This card is crafted in pairs. The two resulting cards are &amp;quot;linked&amp;quot;, and can communicate with each other over any distance, even across dimensions. They behave similar to network cards, but as it is only point-to-point, no ports can be configured, and the connection is always open. They also consume more energy per sent packet.&lt;br /&gt;
&lt;br /&gt;
You can recraft any 2 linked card and pair them together, creating a new link channel. You can get the current channel of a linked card either via its component api &amp;lt;code&amp;gt;getChannel&amp;lt;/code&amp;gt;, or from the item data &amp;lt;code&amp;gt;linkChannel&amp;lt;/code&amp;gt; using an [[Inventory Controller Upgrade]].&lt;br /&gt;
&lt;br /&gt;
The Linked Card is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 2 x Eye of Ender&lt;br /&gt;
* 2 x [[Item/network card|Network Card]]&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 3)]]&lt;br /&gt;
* 1 x [[Item/materials|Interweb]]&lt;br /&gt;
&lt;br /&gt;
[[File:linkedcard.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;tunnel&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This card generates &amp;lt;code&amp;gt;modem_message&amp;lt;/code&amp;gt; signals of the same format network cards do.&lt;br /&gt;
&lt;br /&gt;
Callbacks:&lt;br /&gt;
{{APICallback|name=send|signature=(data...)|description=&lt;br /&gt;
Sends the specified data to the card this one is linked to.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=maxPacketSize|signature=():number|description=&lt;br /&gt;
Gets the maximum packet size (config setting).&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getChannel|signature=():string|description=&lt;br /&gt;
Gets the tunnel address of the link card. This is also available in linkChannel using an inventory controller and getting the stack from an inventory slot.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getWakeMessage|signature=():string|description=&lt;br /&gt;
Gets the current wake-up message. When the network card detects the wake message (a string in the first argument of a network packet), on any port and the machine is off, the machine is started. This is the same functionality also provided by robots, cases, servers, drones, and tablets.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=setWakeMessage|signature=(message: string, [fuzzy: boolean]):string|description=&lt;br /&gt;
Sets the wake-up message to the specified &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt;. The message matching can be fuzzy (default is &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). A fuzzy match ignores additional trailing arguments in the network packet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1826</id>
		<title>Item/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1826"/>
		<updated>2026-09-15T21:46:59Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Remove link to World Sensor (old integration that is unlikely to return)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Items&lt;br /&gt;
|-&lt;br /&gt;
! Components&lt;br /&gt;
| [[Data Card]] - [[Debug Card|Debug Card]] - [[Item/graphics card|Graphics Card]] - [[Internet Card|Internet Card]] - [[Item/linked card|Linked Card]] - [[Item/network card|Network Card]] - [[Item/redstone card|Redstone Card]] - [[Item/wireless network card|Wireless Network Card]]&lt;br /&gt;
|-&lt;br /&gt;
! Storage Devices&lt;br /&gt;
| [[Item/floppy disk|Floppy Disk]] - [[Item/EEPROM|EEPROM]] - [[Item/hard disk drive|Hard Disk Drive]] - [[Item/memory|Memory]]&lt;br /&gt;
|-&lt;br /&gt;
! Upgrades&lt;br /&gt;
| [[Item/angel upgrade|Angel Upgrade]] - [[Item/battery upgrade|Battery Upgrade]] - [[Chunkloader Upgrade]] - [[Database Upgrade]] - [[Experience Upgrade|Experience Upgrade]] - [[Generator Upgrade|Generator Upgrade]] - [[Item/hover upgrade|Hover Upgrade]] - [[Inventory Controller Upgrade|Inventory Controller Upgrade]] - [[Item/inventory upgrade|Inventory Upgrade]] - [[Leash Upgrade|Leash Upgrade]] - [[Navigation Upgrade|Navigation Upgrade]] - [[Piston Upgrade|Piston Upgrade]] - [[Sign I/O Upgrade|Sign I/O Upgrade]] - [[Item/solar generator upgrade|Solar Generator Upgrade]] - [[Tank Upgrade|Tank Upgrade]] - [[Item/tank controller upgrade|Tank Controller Upgrade]] - [[Tractor Beam Upgrade|Tractor Beam Upgrade]]&lt;br /&gt;
|-&lt;br /&gt;
! Containers&lt;br /&gt;
| [[Item/card container|Card Container]] - [[Item/upgrade container|Upgrade Container]] - [[Block/disk drive|Disk Drive]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Item/analyzer|Analyzer]] - [[Item/texture picker|Texture Picker]] - [[Item/component bus|Component Bus]] - [[Item/CPU|CPU]] - [[Item/apu|APU]] - [[Item/dronecase|Drone Case]] - [[Item/manual|Manual]] - [[Item/microcontrollercase|Microcontroller Case]] - [[Item/nanomachines|Nanomachines]] - [[Item/terminal|Remote Terminal]] - [[Item/terminal server|Terminal Server]] - [[Item/server|Server]] - [[Item/tablet case|Tablet Case]] - [[Item/tablet|Tablet]] - [[Item/materials|Crafting Materials]] - [[Item/ink cartridge|Ink Cartridge]] - [[Item/scrench|Scrench]] - [[Item/hover boots|Hover Boots]] - [[Item/grog|Grog]] - [[Item/loot disks|Loot Disks]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1825</id>
		<title>Component/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1825"/>
		<updated>2026-09-15T21:45:54Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Remove link to Abstract Bus and World Sensor (old integrations that are unlikely to return)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | [[Component|Components]]&lt;br /&gt;
|-&lt;br /&gt;
! Core Components&lt;br /&gt;
| [[Component/access point|Access Point]] - [[Component/computer|Computer]] - [[Component/drone|Drone]] - [[Component/drive|Drive]] - [[Component/EEPROM|EEPROM]] - [[Component/filesystem|Filesystem]] - [[Component/GPU|GPU]] - [[Component/microcontroller|Microcontroller]] - [[Component/modem|Modem]] - [[Component/redstone|Redstone]] - [[Component/robot|Robot]] - [[Component/transposer|Transposer]] - [[Component/tunnel|Tunnel]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Component/component access|Component Access]] - [[Component/signals|Signals]]&lt;br /&gt;
|-&lt;br /&gt;
! Cross-Mod Integration&lt;br /&gt;
| [[Component/applied energistics|Applied Energistics]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1824</id>
		<title>Component/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1824"/>
		<updated>2026-09-15T21:26:39Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Remove link to Tractor Beam Upgrade (page is now unified)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | [[Component|Components]]&lt;br /&gt;
|-&lt;br /&gt;
! Core Components&lt;br /&gt;
| [[Component/abstract bus|Abstract Bus]] - [[Component/access point|Access Point]] - [[Component/computer|Computer]] - [[Component/drone|Drone]] - [[Component/drive|Drive]] - [[Component/EEPROM|EEPROM]] - [[Component/filesystem|Filesystem]] - [[Component/GPU|GPU]] - [[Component/microcontroller|Microcontroller]] - [[Component/modem|Modem]] - [[Component/redstone|Redstone]] - [[Component/robot|Robot]] - [[Component/transposer|Transposer]] - [[Component/tunnel|Tunnel]] - [[Component/world sensor|World Sensor]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Component/component access|Component Access]] - [[Component/signals|Signals]]&lt;br /&gt;
|-&lt;br /&gt;
! Cross-Mod Integration&lt;br /&gt;
| [[Component/applied energistics|Applied Energistics]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1823</id>
		<title>Item/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1823"/>
		<updated>2026-09-15T21:25:54Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/tractor beam upgrade&amp;quot; to &amp;quot;Tractor Beam Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Items&lt;br /&gt;
|-&lt;br /&gt;
! Components&lt;br /&gt;
| [[Data Card]] - [[Debug Card|Debug Card]] - [[Item/graphics card|Graphics Card]] - [[Internet Card|Internet Card]] - [[Item/linked card|Linked Card]] - [[Item/network card|Network Card]] - [[Item/redstone card|Redstone Card]] - [[Item/wireless network card|Wireless Network Card]]&lt;br /&gt;
|-&lt;br /&gt;
! Storage Devices&lt;br /&gt;
| [[Item/floppy disk|Floppy Disk]] - [[Item/EEPROM|EEPROM]] - [[Item/hard disk drive|Hard Disk Drive]] - [[Item/memory|Memory]]&lt;br /&gt;
|-&lt;br /&gt;
! Upgrades&lt;br /&gt;
| [[Item/angel upgrade|Angel Upgrade]] - [[Item/battery upgrade|Battery Upgrade]] - [[Chunkloader Upgrade]] - [[Database Upgrade]] - [[Experience Upgrade|Experience Upgrade]] - [[Generator Upgrade|Generator Upgrade]] - [[Item/hover upgrade|Hover Upgrade]] - [[Inventory Controller Upgrade|Inventory Controller Upgrade]] - [[Item/inventory upgrade|Inventory Upgrade]] - [[Leash Upgrade|Leash Upgrade]] - [[Navigation Upgrade|Navigation Upgrade]] - [[Piston Upgrade|Piston Upgrade]] - [[Sign I/O Upgrade|Sign I/O Upgrade]] - [[Item/solar generator upgrade|Solar Generator Upgrade]] - [[Tank Upgrade|Tank Upgrade]] - [[Item/tank controller upgrade|Tank Controller Upgrade]] - [[Tractor Beam Upgrade|Tractor Beam Upgrade]] - [[Item/world sensor upgrade|World Sensor Upgrade]]&lt;br /&gt;
|-&lt;br /&gt;
! Containers&lt;br /&gt;
| [[Item/card container|Card Container]] - [[Item/upgrade container|Upgrade Container]] - [[Block/disk drive|Disk Drive]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Item/analyzer|Analyzer]] - [[Item/texture picker|Texture Picker]] - [[Item/component bus|Component Bus]] - [[Item/CPU|CPU]] - [[Item/apu|APU]] - [[Item/dronecase|Drone Case]] - [[Item/manual|Manual]] - [[Item/microcontrollercase|Microcontroller Case]] - [[Item/nanomachines|Nanomachines]] - [[Item/terminal|Remote Terminal]] - [[Item/terminal server|Terminal Server]] - [[Item/server|Server]] - [[Item/tablet case|Tablet Case]] - [[Item/tablet|Tablet]] - [[Item/materials|Crafting Materials]] - [[Item/ink cartridge|Ink Cartridge]] - [[Item/scrench|Scrench]] - [[Item/hover boots|Hover Boots]] - [[Item/grog|Grog]] - [[Item/loot disks|Loot Disks]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Tractor_Beam_Upgrade&amp;diff=1822</id>
		<title>Tractor Beam Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Tractor_Beam_Upgrade&amp;diff=1822"/>
		<updated>2026-09-15T21:25:06Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: SoraFirestorm moved page Item/tractor beam upgrade to Tractor Beam Upgrade without leaving a redirect: Page has been unified&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
[[File:tractor_beam.png|128px]]&lt;br /&gt;
&lt;br /&gt;
Allows robots to pick up items in their vicinity, not just directly in front of/above/below them using the API.&lt;br /&gt;
&lt;br /&gt;
The Tractor Beam Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Gold Ingot&lt;br /&gt;
* 2 x Iron Ingot&lt;br /&gt;
* 1 x Capacitor&lt;br /&gt;
* 1 x Piston&lt;br /&gt;
* 1 x [[Item/materials|Microchip (Tier 3)]]&lt;br /&gt;
&lt;br /&gt;
[[File:tractorbeam.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;tractor_beam&amp;lt;/code&amp;gt;. Callbacks:&lt;br /&gt;
{{APICallback|name=suck|signature=(): boolean|description=&lt;br /&gt;
Tries to pick up a random item in the robots&#039; vicinity (a 9x9 area with the robot at its center).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Tractor_Beam_Upgrade&amp;diff=1821</id>
		<title>Tractor Beam Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Tractor_Beam_Upgrade&amp;diff=1821"/>
		<updated>2026-09-15T21:24:13Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Unify item and component API pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
[[File:tractor_beam.png|128px]]&lt;br /&gt;
&lt;br /&gt;
Allows robots to pick up items in their vicinity, not just directly in front of/above/below them using the API.&lt;br /&gt;
&lt;br /&gt;
The Tractor Beam Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Gold Ingot&lt;br /&gt;
* 2 x Iron Ingot&lt;br /&gt;
* 1 x Capacitor&lt;br /&gt;
* 1 x Piston&lt;br /&gt;
* 1 x [[Item/materials|Microchip (Tier 3)]]&lt;br /&gt;
&lt;br /&gt;
[[File:tractorbeam.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;tractor_beam&amp;lt;/code&amp;gt;. Callbacks:&lt;br /&gt;
{{APICallback|name=suck|signature=(): boolean|description=&lt;br /&gt;
Tries to pick up a random item in the robots&#039; vicinity (a 9x9 area with the robot at its center).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/agent&amp;diff=1820</id>
		<title>Component/agent</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/agent&amp;diff=1820"/>
		<updated>2026-09-15T21:17:34Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/tank upgrade&amp;quot; to &amp;quot;Tank Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== InventoryController Trait API ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;inventorySize():number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Returns the size of the device&#039;s internal inventory.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;select([slot:number]):number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Get the currently selected slot; set the selected slot if specified.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;count([slot:number]):number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Get the number of items in the specified slot, otherwise in the selected slot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;space([slot:number]):number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Get the remaining space in the specified slot, otherwise in the selected slot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;compareTo(otherSlot:number):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Compare the contents of the selected slot (in the robot inventory) to the contents of the specified slot (also in the robot inventory).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;transferTo(toSlot:number[, amount:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Move the specified amount of items from the selected slot into the specified slot. If no amount is specified, the entire stack is moved to the target slot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== WorldControl Trait API ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;detect(side:number):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Detects the block on the given side, relative to the robot, and returns whether or not the robot can move into the block, as well as a general description of the block. Returns true if the block will prevent the robot from moving forward, false otherwise. Drones return true even if the block is passable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;side&#039;&#039;&#039; - See the [[API/sides|Sides API]] for a list of possible sides.&lt;br /&gt;
&lt;br /&gt;
=== TankWorldControl Trait API ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;compareFluid(side:number):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Compares fluid in the selected tank (requires a [[Tank Upgrade|Tank upgrade]]) to fluid in the world or in an external tank on the specified side of the robot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;drain(side:number[, count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Extracts the specified amount of fluid from the world or a tank on the specified side of the robot. If no amount is specified, the robot will try to drain 1000mB. If the tank is unable to store the specified amount of fluid, the operation will fail (no fluid is lost in the process).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fill(side:number[, count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Fills the specified amount of fluid from the selected tank (requires a [[Tank Upgrade|Tank upgrade]]) into the world or a tank in front of the robot. If no amount is specified, the robot will try to fill the target tank with 1000mB of fluid. If there is not enough fluid to fill a block, or not enough space in the target tank, the operation will fail with no fluids lost.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Agent Trait API ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;name():string&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Get the name of the robot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;swing(side:number):boolean[, string]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Lets the robot use the currently equipped item in the tool slot against the block or space directly in front of the robot. Returns true if successful (may take time depending on block being interacted with - e.g.. Obsidian takes time to mine). Returns false if the operation fails with a description of why it failed.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;use(side: number[, sneaky: boolean[, duration: number]]): boolean[, string]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Attempts to use the item currently equipped in the tool slot in the same way as if the player would make a right-click.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;side&#039;&#039;&#039; - if given the robot will try to &#039;right-click&#039; only on the surface as specified by side, otherwise the robot will try all possible sides. See the [[API/sides|Sides API]] for a list of possible sides. &#039;&#039;&#039;sneaky&#039;&#039;&#039; - if set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; the robot will simulate a sneak-right-click (like if the player would be using shift during a right-click). Some items (like buckets) will behave differently if this is set to true. &#039;&#039;&#039;duration&#039;&#039;&#039; - how long the item is used. This is useful when using charging items like a bow. &#039;&#039;&#039;Returns:&#039;&#039;&#039; true if the robot could interact with the block or entity in front of it, false otherwise. If successful the secondary parameter describes what the robot interacted with and will be one of &#039;block_activated&#039;, &#039;item_placed&#039;, &#039;item_interacted&#039; or &#039;item_used&#039;. This function has a very broad use as the robot can simulate right-clicks with most items. The only difference to players is that the robot cannot use items that specifically require the user to be an entity as the robot is a block. So drinking potions, eating food or throwing an ender pearl will fail. This functions secondary return value can be used to determine what the result of the right-click caused. Which of the item results is returned is not always obvious and requires some testing beforehand. Also note that while robots are not affected by harmful potions they can be destroyed by explosions, so be careful when you place, throw or activate any form of explosives with this function. Possible values for the second return value:&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;code&amp;gt;block_activated&amp;lt;/code&amp;gt; - a block was activated (like levers, switches or doors). =&lt;br /&gt;
= &amp;lt;code&amp;gt;item_interacted&amp;lt;/code&amp;gt; - the equipped tool interacted with the world, for example sheers when used on a sheep. =&lt;br /&gt;
= &amp;lt;code&amp;gt;item_placed&amp;lt;/code&amp;gt; - something was placed into the world. This is not only caused by placeable blocks, but as well by items that cause blocks or entities to appear in the world (like flint and stone or mob eggs). =&lt;br /&gt;
= &amp;lt;code&amp;gt;item_used&amp;lt;/code&amp;gt; - the equipped was activated, like a splash-potion. =&lt;br /&gt;
= &amp;lt;code&amp;gt;air&amp;lt;/code&amp;gt; - the equipped item requires a target but there was none. Note that if your robot has an Angel upgrade, this will never be returned, however some actions might still cause no effect. =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;place(side: number[, sneaky: boolean]): boolean[, string]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Tries to place the block in the currently selected inventory slot on the specified side of the robot (if the side is supported). If **sneaky** is set to true, the robot will simulate a sneak-placement (shift-click). Returns true if successfully placed. Returns false if the operation fails. If an unsupported value is provided as a parameter, the operation will fail with a description of why it failed.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;getLightColor():number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Get the current color of the activity(robot) or flap(drone) light as an integer encoded RGB value (0xRRGGBB).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;setLightColor(value:number):number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Set the color of the activity(robot) or flap(drone) light to the specified integer encoded RGB value (0xRRGGBB).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== TankControl Trait API ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tankCount():number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Returns the number of tanks installed in the robot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;selectTank(tank:number)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Selects the specified tank (if robot contains more than one [[Tank Upgrade|Tank upgrade]]). Any tank operations will use this tank.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tankLevel([tank:number]):number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Returns the fluid level in the specified tank. If no tank specified, returns the fluid level in the selected tank (using selectTank()).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tankSpace([tank:number]):number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Returns the remaining fluid capacity (empty space) in the specified tank. If not tank specified, returns the  remaining capacity in the selected tank.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;compareFluidTo(tank:number):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Tests whether the fluid in the selected tank (in the robot inventory) is the same as in the specified tank (requires [[Tank Upgrade|Tank upgrade]]).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;transferFluidTo(tank:number[, count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Transfer the specified amount of fluid in the selected tank into the specified tank. If no volume is specified, the  robot will attempt to transfer 1000mB.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== InventoryWorldController trait API ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;compare(side:number[, fuzzy:boolean=false]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Compares the block on the specified side of the robot with the item in the currently selected slot and returns whether they are the same or not. Blocks are considered identical if the type and metadata match; additional ItemStack information is not checked. Empty blocks are considered as air blocks, which cannot be compared to an empty inventory slot; the detect() function can be used to determine if there is a block in front of the robot. For blocks that drop a different item, the compare() method won&#039;t work (eg: Diamond block dropping diamond items); for these cases, use silk-touch to obtain a block for comparison.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;drop(side:number[, count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Drops the specified number of items from the currently selected slot. Returns true if at least one item is dropped, false otherwise. If the block in front of the robot is an inventory, the robot will try to place the item into the inventory. If the inventory doesn&#039;t accept the item, the item is not dropped into the world (the operation will fail and return false). Robots themselves are considered blocks with an inventory, and items can be moved into them using the drop() function. The drop() function will not work on non-item inventories, such as fluid tanks (the use() function works for these cases).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;suck(side:number[, count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Tries to pick up the specified number of items and place it in the selected slot. If the selected slot is occupied, items will be placed in the first available slot. Returns the number of items sucked else false.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Robot Component API ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;durability():number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Get the durability of the currently equipped tool.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;move(direction:number):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Move in the specified direction. Valid movement sides are: front, back, top, bottom (see [[API/sides|Sides]]).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;turn(clockwise:boolean):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Rotate in the specified direction.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Drone Component API ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;getStatusText():string&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Get the status text currently being displayed in the GUI.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;setStatusText(value:string):string&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Set the status text to display in the GUI, returns new value.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;move(dx:number, dy:number, dz:number)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Change the target position by the specified offset.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;getOffset():number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Get the current distance to the target position.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;getVelocity():number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Get the current velocity in m/s.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;getMaxVelocity():number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Get the maximum velocity, in m/s.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;getAcceleration():number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Get the currently set acceleration.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;setAcceleration(value:number):number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Try to set the acceleration to the specified value and return the new acceleration.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/tank_controller_upgrade&amp;diff=1819</id>
		<title>Item/tank controller upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/tank_controller_upgrade&amp;diff=1819"/>
		<updated>2026-09-15T21:17:34Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/tank upgrade&amp;quot; to &amp;quot;Tank Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tank Controller Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:upgradetankcontroller.png|128px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Provides:&#039;&#039;&#039; [[Component/tank controller|Tank Controller]] API.&lt;br /&gt;
&lt;br /&gt;
This upgrade allows filling or draining fluid container items within the robot&#039;s inventory, as well as inspecting fluid stacks. A [[Tank Upgrade|Tank Upgrade]] is recommended for this upgrade to be of proper use, as it operates on the selected internal tanks when draining or filling fluid container items.&lt;br /&gt;
&lt;br /&gt;
The Tank Controller Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Gold Ingot&lt;br /&gt;
* 1 x Glass Bottle&lt;br /&gt;
* 1 x Dispenser&lt;br /&gt;
* 1 x Piston&lt;br /&gt;
* 1 x [[Item/materials|Microchip (Tier 2)]]&lt;br /&gt;
* 1 x [[Item/materials|Printed Circuit Board]]&lt;br /&gt;
&lt;br /&gt;
[[File:tankcontroller.png|200px]]&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1818</id>
		<title>Item/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1818"/>
		<updated>2026-09-15T21:17:31Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/tank upgrade&amp;quot; to &amp;quot;Tank Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Items&lt;br /&gt;
|-&lt;br /&gt;
! Components&lt;br /&gt;
| [[Data Card]] - [[Debug Card|Debug Card]] - [[Item/graphics card|Graphics Card]] - [[Internet Card|Internet Card]] - [[Item/linked card|Linked Card]] - [[Item/network card|Network Card]] - [[Item/redstone card|Redstone Card]] - [[Item/wireless network card|Wireless Network Card]]&lt;br /&gt;
|-&lt;br /&gt;
! Storage Devices&lt;br /&gt;
| [[Item/floppy disk|Floppy Disk]] - [[Item/EEPROM|EEPROM]] - [[Item/hard disk drive|Hard Disk Drive]] - [[Item/memory|Memory]]&lt;br /&gt;
|-&lt;br /&gt;
! Upgrades&lt;br /&gt;
| [[Item/angel upgrade|Angel Upgrade]] - [[Item/battery upgrade|Battery Upgrade]] - [[Chunkloader Upgrade]] - [[Database Upgrade]] - [[Experience Upgrade|Experience Upgrade]] - [[Generator Upgrade|Generator Upgrade]] - [[Item/hover upgrade|Hover Upgrade]] - [[Inventory Controller Upgrade|Inventory Controller Upgrade]] - [[Item/inventory upgrade|Inventory Upgrade]] - [[Leash Upgrade|Leash Upgrade]] - [[Navigation Upgrade|Navigation Upgrade]] - [[Piston Upgrade|Piston Upgrade]] - [[Sign I/O Upgrade|Sign I/O Upgrade]] - [[Item/solar generator upgrade|Solar Generator Upgrade]] - [[Tank Upgrade|Tank Upgrade]] - [[Item/tank controller upgrade|Tank Controller Upgrade]] - [[Item/tractor beam upgrade|Tractor Beam Upgrade]] - [[Item/world sensor upgrade|World Sensor Upgrade]]&lt;br /&gt;
|-&lt;br /&gt;
! Containers&lt;br /&gt;
| [[Item/card container|Card Container]] - [[Item/upgrade container|Upgrade Container]] - [[Block/disk drive|Disk Drive]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Item/analyzer|Analyzer]] - [[Item/texture picker|Texture Picker]] - [[Item/component bus|Component Bus]] - [[Item/CPU|CPU]] - [[Item/apu|APU]] - [[Item/dronecase|Drone Case]] - [[Item/manual|Manual]] - [[Item/microcontrollercase|Microcontroller Case]] - [[Item/nanomachines|Nanomachines]] - [[Item/terminal|Remote Terminal]] - [[Item/terminal server|Terminal Server]] - [[Item/server|Server]] - [[Item/tablet case|Tablet Case]] - [[Item/tablet|Tablet]] - [[Item/materials|Crafting Materials]] - [[Item/ink cartridge|Ink Cartridge]] - [[Item/scrench|Scrench]] - [[Item/hover boots|Hover Boots]] - [[Item/grog|Grog]] - [[Item/loot disks|Loot Disks]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Tank_Upgrade&amp;diff=1817</id>
		<title>Tank Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Tank_Upgrade&amp;diff=1817"/>
		<updated>2026-09-15T21:16:31Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: SoraFirestorm moved page Item/tank upgrade to Tank Upgrade without leaving a redirect: Page has been unified&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tank Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:upgradetank.png|128px]]&lt;br /&gt;
&lt;br /&gt;
This upgrade provides an internal fluid tank to the robot, one per upgrade. Each tank can only store a single type of liquid at a time. When there are multiple tanks installed, one of the tanks can be selected (similar to slots in the robots inventory), and will then be used for a large number of operations.&lt;br /&gt;
&lt;br /&gt;
For example, fluids are piped into / out of the selected tank when the robot is accessed externally (by pipes, such as the fluid pipes provided by BuildCraft, or Fluiducts in Thermal Expansion).&lt;br /&gt;
&lt;br /&gt;
There are a number of methods provided in the [[API/robot|Robot API]] that allow manipulating the fluid tanks in a similar fashion to the robot&#039;s inventory. Fluids can be sucked from or filled into tanks or the world, and can be transferred inbetween tanks, and compared against each other.&lt;br /&gt;
&lt;br /&gt;
Fluids stored in a tank upgrade are kept there when the upgrade is removed. Tank upgrades therefore act as persistent fluid storage. They do not yet act as generic fluid container items, meaning they cannot be filled/drained directly by other mods. This will be added in OC 1.4.&lt;br /&gt;
&lt;br /&gt;
The Tank Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Wood Plank&lt;br /&gt;
* 1 x Cauldron&lt;br /&gt;
* 1 x Iron bars&lt;br /&gt;
* 1 x Dispensor&lt;br /&gt;
* 1 x Piston&lt;br /&gt;
* 1 x [[Item/materials|Microchip (Tier 1)]]&lt;br /&gt;
&lt;br /&gt;
[[File:tank.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Component name:&#039;&#039;&#039; &amp;lt;code&amp;gt;tank_controller&amp;lt;/code&amp;gt;&lt;br /&gt;
Callbacks:&lt;br /&gt;
{{APICallback|name=getTankCapacity|signature=(side:number):number or nil[, string]|description=&lt;br /&gt;
Get the capacity of the tank on the specified side of the robot. Back refers to the robot&#039;s own selected tank.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getTankLevel|signature=(side:number):number or nil[,string]|description=&lt;br /&gt;
Gets amount of fluid in tank on specified side.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getFluidInTank|signature=(side:number):table|description=&lt;br /&gt;
Get a description of the fluid in the the tank on the specified side of the robot. **Note:** sides.back deprecated, use getFluidInInternalTank()&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getFluidInInternalTank|signature=(slot):table|description=&lt;br /&gt;
Get a description of fluid in the specified or selected slot of robot inventory.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=drain|signature=([amount:number]):boolean|description=&lt;br /&gt;
Transfers fluid from a tank in the selected inventory slot to the selected tank. If the amount of fluid that would be generated from the item is too large to fit into the tank (for example buckets will usually generate 1000) nothing will happen, that is no fluid is lost.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=fill|signature=([amount:number]):boolean|description=&lt;br /&gt;
Transfers fluid from the selected tank to a tank in the selected inventory slot. If the specified amount is too low (for example for buckets the minimum amount will usually be 1000) nothing will happen, that is no fluid is lost.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getTankCapacityInSlot|signature=(slot:number):number|description=&lt;br /&gt;
Gets capacity of tank in specified or selected slot of the robot inventory.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getTankLevelInSlot|signature=(slot:number):number|description=&lt;br /&gt;
Gets amount of fluid tank item in specified or selected slot of the robot inventory.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getFluidInTankInSlot|signature=(slot:number):table|description=&lt;br /&gt;
Gets description of fluid in tank item in the specified or selected slot of the robot inventory.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1816</id>
		<title>Component/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1816"/>
		<updated>2026-09-15T21:15:57Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Remove link to Tank Upgrade (page is now unified)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | [[Component|Components]]&lt;br /&gt;
|-&lt;br /&gt;
! Core Components&lt;br /&gt;
| [[Component/abstract bus|Abstract Bus]] - [[Component/access point|Access Point]] - [[Component/computer|Computer]] - [[Component/drone|Drone]] - [[Component/drive|Drive]] - [[Component/EEPROM|EEPROM]] - [[Component/filesystem|Filesystem]] - [[Component/GPU|GPU]] - [[Component/microcontroller|Microcontroller]] - [[Component/modem|Modem]] - [[Component/redstone|Redstone]] - [[Component/robot|Robot]] - [[Component/tractor beam|Tractor Beam]] - [[Component/transposer|Transposer]] - [[Component/tunnel|Tunnel]] - [[Component/world sensor|World Sensor]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Component/component access|Component Access]] - [[Component/signals|Signals]]&lt;br /&gt;
|-&lt;br /&gt;
! Cross-Mod Integration&lt;br /&gt;
| [[Component/applied energistics|Applied Energistics]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Tank_Upgrade&amp;diff=1815</id>
		<title>Tank Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Tank_Upgrade&amp;diff=1815"/>
		<updated>2026-09-15T21:13:34Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Unify item and component API pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tank Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:upgradetank.png|128px]]&lt;br /&gt;
&lt;br /&gt;
This upgrade provides an internal fluid tank to the robot, one per upgrade. Each tank can only store a single type of liquid at a time. When there are multiple tanks installed, one of the tanks can be selected (similar to slots in the robots inventory), and will then be used for a large number of operations.&lt;br /&gt;
&lt;br /&gt;
For example, fluids are piped into / out of the selected tank when the robot is accessed externally (by pipes, such as the fluid pipes provided by BuildCraft, or Fluiducts in Thermal Expansion).&lt;br /&gt;
&lt;br /&gt;
There are a number of methods provided in the [[API/robot|Robot API]] that allow manipulating the fluid tanks in a similar fashion to the robot&#039;s inventory. Fluids can be sucked from or filled into tanks or the world, and can be transferred inbetween tanks, and compared against each other.&lt;br /&gt;
&lt;br /&gt;
Fluids stored in a tank upgrade are kept there when the upgrade is removed. Tank upgrades therefore act as persistent fluid storage. They do not yet act as generic fluid container items, meaning they cannot be filled/drained directly by other mods. This will be added in OC 1.4.&lt;br /&gt;
&lt;br /&gt;
The Tank Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Wood Plank&lt;br /&gt;
* 1 x Cauldron&lt;br /&gt;
* 1 x Iron bars&lt;br /&gt;
* 1 x Dispensor&lt;br /&gt;
* 1 x Piston&lt;br /&gt;
* 1 x [[Item/materials|Microchip (Tier 1)]]&lt;br /&gt;
&lt;br /&gt;
[[File:tank.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Component name:&#039;&#039;&#039; &amp;lt;code&amp;gt;tank_controller&amp;lt;/code&amp;gt;&lt;br /&gt;
Callbacks:&lt;br /&gt;
{{APICallback|name=getTankCapacity|signature=(side:number):number or nil[, string]|description=&lt;br /&gt;
Get the capacity of the tank on the specified side of the robot. Back refers to the robot&#039;s own selected tank.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getTankLevel|signature=(side:number):number or nil[,string]|description=&lt;br /&gt;
Gets amount of fluid in tank on specified side.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getFluidInTank|signature=(side:number):table|description=&lt;br /&gt;
Get a description of the fluid in the the tank on the specified side of the robot. **Note:** sides.back deprecated, use getFluidInInternalTank()&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getFluidInInternalTank|signature=(slot):table|description=&lt;br /&gt;
Get a description of fluid in the specified or selected slot of robot inventory.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=drain|signature=([amount:number]):boolean|description=&lt;br /&gt;
Transfers fluid from a tank in the selected inventory slot to the selected tank. If the amount of fluid that would be generated from the item is too large to fit into the tank (for example buckets will usually generate 1000) nothing will happen, that is no fluid is lost.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=fill|signature=([amount:number]):boolean|description=&lt;br /&gt;
Transfers fluid from the selected tank to a tank in the selected inventory slot. If the specified amount is too low (for example for buckets the minimum amount will usually be 1000) nothing will happen, that is no fluid is lost.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getTankCapacityInSlot|signature=(slot:number):number|description=&lt;br /&gt;
Gets capacity of tank in specified or selected slot of the robot inventory.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getTankLevelInSlot|signature=(slot:number):number|description=&lt;br /&gt;
Gets amount of fluid tank item in specified or selected slot of the robot inventory.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getFluidInTankInSlot|signature=(slot:number):table|description=&lt;br /&gt;
Gets description of fluid in tank item in the specified or selected slot of the robot inventory.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1814</id>
		<title>Component/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1814"/>
		<updated>2026-09-15T21:03:06Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Remove link to Sign I/O Upgrade (page is now unified)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | [[Component|Components]]&lt;br /&gt;
|-&lt;br /&gt;
! Core Components&lt;br /&gt;
| [[Component/abstract bus|Abstract Bus]] - [[Component/access point|Access Point]] - [[Component/computer|Computer]] - [[Component/drone|Drone]] - [[Component/drive|Drive]] - [[Component/EEPROM|EEPROM]] - [[Component/filesystem|Filesystem]] - [[Component/GPU|GPU]] - [[Component/microcontroller|Microcontroller]] - [[Component/modem|Modem]] - [[Component/redstone|Redstone]] - [[Component/robot|Robot]] - [[Component/tank controller|Tank Controller]] - [[Component/tractor beam|Tractor Beam]] - [[Component/transposer|Transposer]] - [[Component/tunnel|Tunnel]] - [[Component/world sensor|World Sensor]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Component/component access|Component Access]] - [[Component/signals|Signals]]&lt;br /&gt;
|-&lt;br /&gt;
! Cross-Mod Integration&lt;br /&gt;
| [[Component/applied energistics|Applied Energistics]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/tablet&amp;diff=1813</id>
		<title>Item/tablet</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/tablet&amp;diff=1813"/>
		<updated>2026-09-15T21:02:26Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/sign upgrade&amp;quot; to &amp;quot;Sign I/O Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tablet =&lt;br /&gt;
&lt;br /&gt;
[[File:tablet.png|128px|tablet.png]]&lt;br /&gt;
&lt;br /&gt;
Tablets are built by placing a [[Item/tablet case|Tablet Case]] into an [[Block/assembler|Assembler]], configuring as desired and assembling it. Tablets act as portable computers that cannot directly interact with the world - for example [[Item/redstone card|Redstone Cards]] do &#039;&#039;not&#039;&#039; work in them. A number of upgrades, however, do, such as the [[Sign I/O Upgrade|Sign Upgrade]] or the [[Piston Upgrade|Piston Upgrade]].&lt;br /&gt;
&lt;br /&gt;
You can sneak-click with a tablet in your hand to access the disk drive slot, and the power button to toggle the power off/on.&lt;br /&gt;
&lt;br /&gt;
Tablets can be put into a [[Block/charger|Charger]] to refill their energy and to access the first hard disk built into the tablet from a computer connected to the charger - in this setup, the charger will act similar to a disk drive, with the tablet being the floppy disk. This can be very useful in case you forgot to install an OS on the hard drive built into the tablet, or after bricking a tablet&#039;s OS.&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1812</id>
		<title>Item/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1812"/>
		<updated>2026-09-15T21:02:26Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/sign upgrade&amp;quot; to &amp;quot;Sign I/O Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Items&lt;br /&gt;
|-&lt;br /&gt;
! Components&lt;br /&gt;
| [[Data Card]] - [[Debug Card|Debug Card]] - [[Item/graphics card|Graphics Card]] - [[Internet Card|Internet Card]] - [[Item/linked card|Linked Card]] - [[Item/network card|Network Card]] - [[Item/redstone card|Redstone Card]] - [[Item/wireless network card|Wireless Network Card]]&lt;br /&gt;
|-&lt;br /&gt;
! Storage Devices&lt;br /&gt;
| [[Item/floppy disk|Floppy Disk]] - [[Item/EEPROM|EEPROM]] - [[Item/hard disk drive|Hard Disk Drive]] - [[Item/memory|Memory]]&lt;br /&gt;
|-&lt;br /&gt;
! Upgrades&lt;br /&gt;
| [[Item/angel upgrade|Angel Upgrade]] - [[Item/battery upgrade|Battery Upgrade]] - [[Chunkloader Upgrade]] - [[Database Upgrade]] - [[Experience Upgrade|Experience Upgrade]] - [[Generator Upgrade|Generator Upgrade]] - [[Item/hover upgrade|Hover Upgrade]] - [[Inventory Controller Upgrade|Inventory Controller Upgrade]] - [[Item/inventory upgrade|Inventory Upgrade]] - [[Leash Upgrade|Leash Upgrade]] - [[Navigation Upgrade|Navigation Upgrade]] - [[Piston Upgrade|Piston Upgrade]] - [[Sign I/O Upgrade|Sign I/O Upgrade]] - [[Item/solar generator upgrade|Solar Generator Upgrade]] - [[Item/tank upgrade|Tank Upgrade]] - [[Item/tank controller upgrade|Tank Controller Upgrade]] - [[Item/tractor beam upgrade|Tractor Beam Upgrade]] - [[Item/world sensor upgrade|World Sensor Upgrade]]&lt;br /&gt;
|-&lt;br /&gt;
! Containers&lt;br /&gt;
| [[Item/card container|Card Container]] - [[Item/upgrade container|Upgrade Container]] - [[Block/disk drive|Disk Drive]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Item/analyzer|Analyzer]] - [[Item/texture picker|Texture Picker]] - [[Item/component bus|Component Bus]] - [[Item/CPU|CPU]] - [[Item/apu|APU]] - [[Item/dronecase|Drone Case]] - [[Item/manual|Manual]] - [[Item/microcontrollercase|Microcontroller Case]] - [[Item/nanomachines|Nanomachines]] - [[Item/terminal|Remote Terminal]] - [[Item/terminal server|Terminal Server]] - [[Item/server|Server]] - [[Item/tablet case|Tablet Case]] - [[Item/tablet|Tablet]] - [[Item/materials|Crafting Materials]] - [[Item/ink cartridge|Ink Cartridge]] - [[Item/scrench|Scrench]] - [[Item/hover boots|Hover Boots]] - [[Item/grog|Grog]] - [[Item/loot disks|Loot Disks]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Sign_I/O_Upgrade&amp;diff=1811</id>
		<title>Sign I/O Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Sign_I/O_Upgrade&amp;diff=1811"/>
		<updated>2026-09-15T21:01:14Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: SoraFirestorm moved page Item/sign upgrade to Sign I/O Upgrade without leaving a redirect: Page has been unified&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sign I/O Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:sign_upgrade.png|128px]]&lt;br /&gt;
&lt;br /&gt;
Allows the robot to read and write signs in the world.&lt;br /&gt;
&lt;br /&gt;
The Sign I/O Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Iron Ingot&lt;br /&gt;
* 1 x Stick&lt;br /&gt;
* 1 x Ink Sac&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 1)]]&lt;br /&gt;
* 1 x Sticky Piston&lt;br /&gt;
&lt;br /&gt;
[[File:signio.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;sign&amp;lt;/code&amp;gt;. Callbacks:&lt;br /&gt;
{{APICallback|name=getValue|signature=(): string or nil, string|description=&lt;br /&gt;
Gets the text currently displayed on the sign in front of the robot, or nil and an error message if there is no sign in front of the robot.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=setValue|signature=(value: string): string or nil, string|description=&lt;br /&gt;
Sets the text of the sign in front of the robot. Returns the new text on the sign (which may be a truncated version of the passed argument) or nil and an error message if there is no sign in front of the robot.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Sign_I/O_Upgrade&amp;diff=1810</id>
		<title>Sign I/O Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Sign_I/O_Upgrade&amp;diff=1810"/>
		<updated>2026-09-15T21:00:49Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Unify item and component API pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sign I/O Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:sign_upgrade.png|128px]]&lt;br /&gt;
&lt;br /&gt;
Allows the robot to read and write signs in the world.&lt;br /&gt;
&lt;br /&gt;
The Sign I/O Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Iron Ingot&lt;br /&gt;
* 1 x Stick&lt;br /&gt;
* 1 x Ink Sac&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 1)]]&lt;br /&gt;
* 1 x Sticky Piston&lt;br /&gt;
&lt;br /&gt;
[[File:signio.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;sign&amp;lt;/code&amp;gt;. Callbacks:&lt;br /&gt;
{{APICallback|name=getValue|signature=(): string or nil, string|description=&lt;br /&gt;
Gets the text currently displayed on the sign in front of the robot, or nil and an error message if there is no sign in front of the robot.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=setValue|signature=(value: string): string or nil, string|description=&lt;br /&gt;
Sets the text of the sign in front of the robot. Returns the new text on the sign (which may be a truncated version of the passed argument) or nil and an error message if there is no sign in front of the robot.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1809</id>
		<title>Component/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1809"/>
		<updated>2026-09-15T20:55:11Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Remove link to Piston Upgrade (page is now unified)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | [[Component|Components]]&lt;br /&gt;
|-&lt;br /&gt;
! Core Components&lt;br /&gt;
| [[Component/abstract bus|Abstract Bus]] - [[Component/access point|Access Point]] - [[Component/computer|Computer]] - [[Component/drone|Drone]] - [[Component/drive|Drive]] - [[Component/EEPROM|EEPROM]] - [[Component/filesystem|Filesystem]] - [[Component/GPU|GPU]] - [[Component/microcontroller|Microcontroller]] - [[Component/modem|Modem]] - [[Component/redstone|Redstone]] - [[Component/robot|Robot]] - [[Component/sign|Sign]] - [[Component/tank controller|Tank Controller]] - [[Component/tractor beam|Tractor Beam]] - [[Component/transposer|Transposer]] - [[Component/tunnel|Tunnel]] - [[Component/world sensor|World Sensor]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Component/component access|Component Access]] - [[Component/signals|Signals]]&lt;br /&gt;
|-&lt;br /&gt;
! Cross-Mod Integration&lt;br /&gt;
| [[Component/applied energistics|Applied Energistics]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/tablet&amp;diff=1807</id>
		<title>Item/tablet</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/tablet&amp;diff=1807"/>
		<updated>2026-09-15T20:52:45Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/piston upgrade&amp;quot; to &amp;quot;Piston Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tablet =&lt;br /&gt;
&lt;br /&gt;
[[File:tablet.png|128px|tablet.png]]&lt;br /&gt;
&lt;br /&gt;
Tablets are built by placing a [[Item/tablet case|Tablet Case]] into an [[Block/assembler|Assembler]], configuring as desired and assembling it. Tablets act as portable computers that cannot directly interact with the world - for example [[Item/redstone card|Redstone Cards]] do &#039;&#039;not&#039;&#039; work in them. A number of upgrades, however, do, such as the [[Item/sign upgrade|Sign Upgrade]] or the [[Piston Upgrade|Piston Upgrade]].&lt;br /&gt;
&lt;br /&gt;
You can sneak-click with a tablet in your hand to access the disk drive slot, and the power button to toggle the power off/on.&lt;br /&gt;
&lt;br /&gt;
Tablets can be put into a [[Block/charger|Charger]] to refill their energy and to access the first hard disk built into the tablet from a computer connected to the charger - in this setup, the charger will act similar to a disk drive, with the tablet being the floppy disk. This can be very useful in case you forgot to install an OS on the hard drive built into the tablet, or after bricking a tablet&#039;s OS.&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1806</id>
		<title>Item/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1806"/>
		<updated>2026-09-15T20:52:45Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/piston upgrade&amp;quot; to &amp;quot;Piston Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Items&lt;br /&gt;
|-&lt;br /&gt;
! Components&lt;br /&gt;
| [[Data Card]] - [[Debug Card|Debug Card]] - [[Item/graphics card|Graphics Card]] - [[Internet Card|Internet Card]] - [[Item/linked card|Linked Card]] - [[Item/network card|Network Card]] - [[Item/redstone card|Redstone Card]] - [[Item/wireless network card|Wireless Network Card]]&lt;br /&gt;
|-&lt;br /&gt;
! Storage Devices&lt;br /&gt;
| [[Item/floppy disk|Floppy Disk]] - [[Item/EEPROM|EEPROM]] - [[Item/hard disk drive|Hard Disk Drive]] - [[Item/memory|Memory]]&lt;br /&gt;
|-&lt;br /&gt;
! Upgrades&lt;br /&gt;
| [[Item/angel upgrade|Angel Upgrade]] - [[Item/battery upgrade|Battery Upgrade]] - [[Chunkloader Upgrade]] - [[Database Upgrade]] - [[Experience Upgrade|Experience Upgrade]] - [[Generator Upgrade|Generator Upgrade]] - [[Item/hover upgrade|Hover Upgrade]] - [[Inventory Controller Upgrade|Inventory Controller Upgrade]] - [[Item/inventory upgrade|Inventory Upgrade]] - [[Leash Upgrade|Leash Upgrade]] - [[Navigation Upgrade|Navigation Upgrade]] - [[Piston Upgrade|Piston Upgrade]] - [[Item/sign upgrade|Sign I/O Upgrade]] - [[Item/solar generator upgrade|Solar Generator Upgrade]] - [[Item/tank upgrade|Tank Upgrade]] - [[Item/tank controller upgrade|Tank Controller Upgrade]] - [[Item/tractor beam upgrade|Tractor Beam Upgrade]] - [[Item/world sensor upgrade|World Sensor Upgrade]]&lt;br /&gt;
|-&lt;br /&gt;
! Containers&lt;br /&gt;
| [[Item/card container|Card Container]] - [[Item/upgrade container|Upgrade Container]] - [[Block/disk drive|Disk Drive]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Item/analyzer|Analyzer]] - [[Item/texture picker|Texture Picker]] - [[Item/component bus|Component Bus]] - [[Item/CPU|CPU]] - [[Item/apu|APU]] - [[Item/dronecase|Drone Case]] - [[Item/manual|Manual]] - [[Item/microcontrollercase|Microcontroller Case]] - [[Item/nanomachines|Nanomachines]] - [[Item/terminal|Remote Terminal]] - [[Item/terminal server|Terminal Server]] - [[Item/server|Server]] - [[Item/tablet case|Tablet Case]] - [[Item/tablet|Tablet]] - [[Item/materials|Crafting Materials]] - [[Item/ink cartridge|Ink Cartridge]] - [[Item/scrench|Scrench]] - [[Item/hover boots|Hover Boots]] - [[Item/grog|Grog]] - [[Item/loot disks|Loot Disks]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Block/microcontroller&amp;diff=1805</id>
		<title>Block/microcontroller</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Block/microcontroller&amp;diff=1805"/>
		<updated>2026-09-15T20:52:44Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/piston upgrade&amp;quot; to &amp;quot;Piston Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Microcontroller =&lt;br /&gt;
&lt;br /&gt;
Microcontrollers are more restrictive versions of Computers. The key limitation is that they do not contain a slot for a [[Item/hard disk drive|Hard disk drive]], and rely solely on a programmed [[Item/EEPROM|EEPROM]] for specific functionality. They can &#039;&#039;&#039;not&#039;&#039;&#039; interact with external components!&lt;br /&gt;
&lt;br /&gt;
Microcontrollers can be built by placing a [[Item/microcontrollercase|Microcontroller case]] in an [[Block/assembler|Assembler]]. Higher tier [[Item/microcontrollercase|Microcontroller cases]] can take more components and upgrades (as well as higher tier components and upgrades). Microcontrollers take a limited subset of upgrades, and do not contain Upgrade or Card container slots. [[Item/graphics card|Graphics cards]] cannot be placed into the expansion slots either.&lt;br /&gt;
&lt;br /&gt;
MCUs do not automatically forward network messages. They do not distribute power. Network messages arriving on all sides will always be forwarded to the MCU. Which sides are used for sending can be controlled via the &amp;lt;code&amp;gt;microcontroller&amp;lt;/code&amp;gt; component. A computer can access its external component if it is directly adjacent to the microcontroller.&lt;br /&gt;
&lt;br /&gt;
The following code snippet illustrates one particular usage of Microcontrollers. The program detects redstone signals (requires a [[Item/redstone card|redstone card]]), and uses a [[Piston Upgrade|piston upgrade]] to push a block. &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local r,p = component.proxy(component.list(&amp;quot;redstone&amp;quot;)()), component.proxy(component.list(&amp;quot;piston&amp;quot;)())&lt;br /&gt;
&lt;br /&gt;
while true do&lt;br /&gt;
&lt;br /&gt;
  computer.pullSignal(0.5)&lt;br /&gt;
  if r.getInput(2) &amp;gt; 0 then&lt;br /&gt;
      p.push()&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:Block/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Piston_Upgrade&amp;diff=1804</id>
		<title>Piston Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Piston_Upgrade&amp;diff=1804"/>
		<updated>2026-09-15T20:51:59Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: SoraFirestorm moved page Item/piston upgrade to Piston Upgrade without leaving a redirect: Page has been unified&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Piston Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:upgradepiston.png|128px|upgradepiston.png]]&lt;br /&gt;
&lt;br /&gt;
The piston upgrade can be used to push blocks in the world, in a pretty much identical manner to the way vanilla pistons push blocks.&lt;br /&gt;
&lt;br /&gt;
The Piston Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Iron Ingot&lt;br /&gt;
* 2 x Stick&lt;br /&gt;
* 1 x Piston&lt;br /&gt;
* 1 x [[Item/materials|Printed Circuit Board]]&lt;br /&gt;
* 1 x [[Item/materials|Microchip (Tier 1)]]&lt;br /&gt;
&lt;br /&gt;
[[File:piston.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;piston&amp;lt;/code&amp;gt;. Callbacks:&lt;br /&gt;
{{APICallback|name=push|signature=(side:number):boolean|description=&lt;br /&gt;
Tries to push the block in front of the container of the upgrade.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Piston_Upgrade&amp;diff=1803</id>
		<title>Piston Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Piston_Upgrade&amp;diff=1803"/>
		<updated>2026-09-15T20:51:39Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Unify item and component API pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Piston Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:upgradepiston.png|128px|upgradepiston.png]]&lt;br /&gt;
&lt;br /&gt;
The piston upgrade can be used to push blocks in the world, in a pretty much identical manner to the way vanilla pistons push blocks.&lt;br /&gt;
&lt;br /&gt;
The Piston Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Iron Ingot&lt;br /&gt;
* 2 x Stick&lt;br /&gt;
* 1 x Piston&lt;br /&gt;
* 1 x [[Item/materials|Printed Circuit Board]]&lt;br /&gt;
* 1 x [[Item/materials|Microchip (Tier 1)]]&lt;br /&gt;
&lt;br /&gt;
[[File:piston.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;piston&amp;lt;/code&amp;gt;. Callbacks:&lt;br /&gt;
{{APICallback|name=push|signature=(side:number):boolean|description=&lt;br /&gt;
Tries to push the block in front of the container of the upgrade.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Linked_Card&amp;diff=1802</id>
		<title>Linked Card</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Linked_Card&amp;diff=1802"/>
		<updated>2026-09-15T20:46:29Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Fix link to Inventory Controller Upgrade&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Linked Card =&lt;br /&gt;
&lt;br /&gt;
[[File:linked_card.png|128px]]&lt;br /&gt;
&lt;br /&gt;
This card provides the [[Component/tunnel|tunnel]] component.&lt;br /&gt;
&lt;br /&gt;
This card is crafted in pairs. The two resulting cards are &amp;quot;linked&amp;quot;, and can communicate with each other over any distance, even across dimensions. They behave similar to network cards, except that no port has to be opened. They also consume more energy per sent packet.&lt;br /&gt;
&lt;br /&gt;
You can recraft any 2 linked card and pair them together, creating a new link channel. You can get the current channel of a linked card either via its component api &amp;lt;code&amp;gt;getChannel&amp;lt;/code&amp;gt;, or from the item data &amp;lt;code&amp;gt;linkChannel&amp;lt;/code&amp;gt; using an [[Inventory Controller Upgrade]].&lt;br /&gt;
&lt;br /&gt;
The Linked Card is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 2 x Eye of Ender&lt;br /&gt;
* 2 x [[Item/network card|Network Card]]&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 3)]]&lt;br /&gt;
* 1 x [[Item/materials|Interweb]]&lt;br /&gt;
&lt;br /&gt;
[[File:linkedcard.png|200px]]&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Block/transposer&amp;diff=1801</id>
		<title>Block/transposer</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Block/transposer&amp;diff=1801"/>
		<updated>2026-09-15T20:45:19Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Fix link to Inventory Controller Upgrade&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Transposer =&lt;br /&gt;
&lt;br /&gt;
[[File:trasnposer.png|128px]]&lt;br /&gt;
&lt;br /&gt;
The transposer bridges the gap between redstone controlled hoppers and [[Block/robot|Robot]], allowing [[Block/computer case|computer]]-controlled transferal of items and fluids between adjacent blocks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that this block has no internal inventory.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Besides moving things around, it can also be used to inspect the contents of the adjacent inventories, like an [[Block/adapter|Adapter]] with an [[Inventory Controller Upgrade]] could, and the contents of adjacent tanks, like and adapter with a [[Component/tank controller|Tank Controller]] could.&lt;br /&gt;
&lt;br /&gt;
The transposer can also interactive with player inventory when player stands next to or on it.&lt;br /&gt;
&lt;br /&gt;
The component proxy on a computer provides an api as described [[Component/transposer|here]]&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Block/waypoint&amp;diff=1800</id>
		<title>Block/waypoint</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Block/waypoint&amp;diff=1800"/>
		<updated>2026-09-15T20:42:54Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Fix link to nav upgrade component&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Waypoint =&lt;br /&gt;
&lt;br /&gt;
The waypoint block provides additional functionality for [[Block/robot|robots]] and [[Item/drone|drones]] with a [[Navigation Upgrade|navigation upgrade]]. The position of the waypoint reported is the block directly in front of the waypoint, as indicated by the particle effects. This allows the waypoint block to be placed above a chest, for instance, to be able to determine the position of the block directly above the chest.&lt;br /&gt;
&lt;br /&gt;
Waypoints can be labeled and provided with a redstone signal. This allows for finer control when writing sorting programs, for instance.&lt;br /&gt;
&lt;br /&gt;
The waypoint block can be located using the &amp;lt;code&amp;gt;findWaypoints()&amp;lt;/code&amp;gt; function in the [[Navigation Upgrade#Component API|navigation]] component. This allows the [[Block/robot|robots]] or [[Item/drone|drone]] to find all waypoints within a certain range; the function returns the label of the waypoint, the position of the waypoint in relative coordinates, as well as the redstone level of the waypoint.&lt;br /&gt;
&lt;br /&gt;
The Waypoint is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 1 x [[Item/materials|Interweb]]&lt;br /&gt;
* 1 x [[Item/materials|Printed Circuit Board]]&lt;br /&gt;
* 2 x [[Item/materials|Transistor]]&lt;br /&gt;
* 4 x Iron ingot&lt;br /&gt;
&lt;br /&gt;
[[File:waypoint.png|200px|waypoint.png]]&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:Block/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1799</id>
		<title>Component/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1799"/>
		<updated>2026-09-15T20:39:55Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Remove link to Navigation Upgrade (page is now unified)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | [[Component|Components]]&lt;br /&gt;
|-&lt;br /&gt;
! Core Components&lt;br /&gt;
| [[Component/abstract bus|Abstract Bus]] - [[Component/access point|Access Point]] - [[Component/computer|Computer]] - [[Component/drone|Drone]] - [[Component/drive|Drive]] - [[Component/EEPROM|EEPROM]] - [[Component/filesystem|Filesystem]] - [[Component/GPU|GPU]] - [[Component/microcontroller|Microcontroller]] - [[Component/modem|Modem]] - [[Component/piston|Piston]] - [[Component/redstone|Redstone]] - [[Component/robot|Robot]] - [[Component/sign|Sign]] - [[Component/tank controller|Tank Controller]] - [[Component/tractor beam|Tractor Beam]] - [[Component/transposer|Transposer]] - [[Component/tunnel|Tunnel]] - [[Component/world sensor|World Sensor]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Component/component access|Component Access]] - [[Component/signals|Signals]]&lt;br /&gt;
|-&lt;br /&gt;
! Cross-Mod Integration&lt;br /&gt;
| [[Component/applied energistics|Applied Energistics]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1798</id>
		<title>Item/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1798"/>
		<updated>2026-09-15T20:39:23Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/navigation upgrade&amp;quot; to &amp;quot;Navigation Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Items&lt;br /&gt;
|-&lt;br /&gt;
! Components&lt;br /&gt;
| [[Data Card]] - [[Debug Card|Debug Card]] - [[Item/graphics card|Graphics Card]] - [[Internet Card|Internet Card]] - [[Item/linked card|Linked Card]] - [[Item/network card|Network Card]] - [[Item/redstone card|Redstone Card]] - [[Item/wireless network card|Wireless Network Card]]&lt;br /&gt;
|-&lt;br /&gt;
! Storage Devices&lt;br /&gt;
| [[Item/floppy disk|Floppy Disk]] - [[Item/EEPROM|EEPROM]] - [[Item/hard disk drive|Hard Disk Drive]] - [[Item/memory|Memory]]&lt;br /&gt;
|-&lt;br /&gt;
! Upgrades&lt;br /&gt;
| [[Item/angel upgrade|Angel Upgrade]] - [[Item/battery upgrade|Battery Upgrade]] - [[Chunkloader Upgrade]] - [[Database Upgrade]] - [[Experience Upgrade|Experience Upgrade]] - [[Generator Upgrade|Generator Upgrade]] - [[Item/hover upgrade|Hover Upgrade]] - [[Inventory Controller Upgrade|Inventory Controller Upgrade]] - [[Item/inventory upgrade|Inventory Upgrade]] - [[Leash Upgrade|Leash Upgrade]] - [[Navigation Upgrade|Navigation Upgrade]] - [[Item/piston upgrade|Piston Upgrade]] - [[Item/sign upgrade|Sign I/O Upgrade]] - [[Item/solar generator upgrade|Solar Generator Upgrade]] - [[Item/tank upgrade|Tank Upgrade]] - [[Item/tank controller upgrade|Tank Controller Upgrade]] - [[Item/tractor beam upgrade|Tractor Beam Upgrade]] - [[Item/world sensor upgrade|World Sensor Upgrade]]&lt;br /&gt;
|-&lt;br /&gt;
! Containers&lt;br /&gt;
| [[Item/card container|Card Container]] - [[Item/upgrade container|Upgrade Container]] - [[Block/disk drive|Disk Drive]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Item/analyzer|Analyzer]] - [[Item/texture picker|Texture Picker]] - [[Item/component bus|Component Bus]] - [[Item/CPU|CPU]] - [[Item/apu|APU]] - [[Item/dronecase|Drone Case]] - [[Item/manual|Manual]] - [[Item/microcontrollercase|Microcontroller Case]] - [[Item/nanomachines|Nanomachines]] - [[Item/terminal|Remote Terminal]] - [[Item/terminal server|Terminal Server]] - [[Item/server|Server]] - [[Item/tablet case|Tablet Case]] - [[Item/tablet|Tablet]] - [[Item/materials|Crafting Materials]] - [[Item/ink cartridge|Ink Cartridge]] - [[Item/scrench|Scrench]] - [[Item/hover boots|Hover Boots]] - [[Item/grog|Grog]] - [[Item/loot disks|Loot Disks]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Block/waypoint&amp;diff=1797</id>
		<title>Block/waypoint</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Block/waypoint&amp;diff=1797"/>
		<updated>2026-09-15T20:39:22Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/navigation upgrade&amp;quot; to &amp;quot;Navigation Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Waypoint =&lt;br /&gt;
&lt;br /&gt;
The waypoint block provides additional functionality for [[Block/robot|robots]] and [[Item/drone|drones]] with a [[Navigation Upgrade|navigation upgrade]]. The position of the waypoint reported is the block directly in front of the waypoint, as indicated by the particle effects. This allows the waypoint block to be placed above a chest, for instance, to be able to determine the position of the block directly above the chest.&lt;br /&gt;
&lt;br /&gt;
Waypoints can be labeled and provided with a redstone signal. This allows for finer control when writing sorting programs, for instance.&lt;br /&gt;
&lt;br /&gt;
The waypoint block can be located using the &amp;lt;code&amp;gt;findWaypoints()&amp;lt;/code&amp;gt; function in the [[Component/navigation|navigation]] component. This allows the [[Block/robot|robots]] or [[Item/drone|drone]] to find all waypoints within a certain range; the function returns the label of the waypoint, the position of the waypoint in relative coordinates, as well as the redstone level of the waypoint.&lt;br /&gt;
&lt;br /&gt;
The Waypoint is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 1 x [[Item/materials|Interweb]]&lt;br /&gt;
* 1 x [[Item/materials|Printed Circuit Board]]&lt;br /&gt;
* 2 x [[Item/materials|Transistor]]&lt;br /&gt;
* 4 x Iron ingot&lt;br /&gt;
&lt;br /&gt;
[[File:waypoint.png|200px|waypoint.png]]&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:Block/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Navigation_Upgrade&amp;diff=1796</id>
		<title>Navigation Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Navigation_Upgrade&amp;diff=1796"/>
		<updated>2026-09-15T20:38:48Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: SoraFirestorm moved page Item/navigation upgrade to Navigation Upgrade without leaving a redirect: Page has been unified&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Navigation Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:navigation_upgrade.png|128px]]&lt;br /&gt;
&lt;br /&gt;
Allows the robot to tell its current position and facing. The position is relative to the center of the map that was used to craft the upgrade. The range in which the upgrade works depends on the size of the map that was used to craft the upgrade. The upgrade can be crafted together with another map to re-configure it and get the old map back.&lt;br /&gt;
&lt;br /&gt;
The Navigation upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Gold Ingot&lt;br /&gt;
* 1 x Compass&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 2)]]&lt;br /&gt;
* 1 x Map&lt;br /&gt;
* 1 x Potion / Filled Water Bottle&lt;br /&gt;
&lt;br /&gt;
[[File:navigation.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;navigation&amp;lt;/code&amp;gt;. Callbacks:&lt;br /&gt;
{{APICallback|name=getPosition|signature=(): number, number, number or nil, string|description=&lt;br /&gt;
Gets the current relative position of the robot. This is the position relative to the center of the map item that was used to craft the upgrade. Note that the upgrade can be re-crafted with another map to change it&#039;s point of reference. Returns nil and the string out of range if the robot is too far away from the point of reference (i.e. when it is out of bounds of the map that was used to craft the upgrade).&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getFacing|signature=(): number|description=&lt;br /&gt;
Gets the current facing of the robot, as one of the sides constants.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getRange|signature=(): number|description=&lt;br /&gt;
Gets the effective range of the upgrade. If the absolute value of the relative X or Z coordinate becomes larger than this, &amp;lt;code&amp;gt;getPosition()&amp;lt;/code&amp;gt; will fail.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=findWaypoints|signature=(range: number): table|description=&lt;br /&gt;
Finds all [[Block/waypoint|waypoint blocks]] within the specified range.&lt;br /&gt;
&lt;br /&gt;
This returns a table that contains other tables. The top table has only numbered indices corresponding to each detected beacon. In each of this entries is another table, each row various aspects of the specified beacon: &amp;quot;position&amp;quot;, &amp;quot;redstone&amp;quot;, &amp;quot;label&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* position returns a table with numbered indices in which 1 is x, 2 is y, and 3 is z. These numbers are the distance from the navigation component to the beacon in terms of block coordinates.&lt;br /&gt;
* redstone returns a single number that is the current strength of the redstone signal&lt;br /&gt;
* label returns a string that is the label of the beacon you can set by right clicking on it.&lt;br /&gt;
&lt;br /&gt;
Below is an example of how the tables are set up. A single beacon&#039;s results are shown.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! table: main&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | table: 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | table: position&lt;br /&gt;
| 1:&lt;br /&gt;
| number: x distance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 2:&lt;br /&gt;
| number: y distance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3:&lt;br /&gt;
| number: z distance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| redstone&lt;br /&gt;
|&lt;br /&gt;
| number: redstone strength&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| label&lt;br /&gt;
|&lt;br /&gt;
| string: beacon label&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Navigation_Upgrade&amp;diff=1795</id>
		<title>Navigation Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Navigation_Upgrade&amp;diff=1795"/>
		<updated>2026-09-15T20:38:15Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Unify item and component API pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Navigation Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:navigation_upgrade.png|128px]]&lt;br /&gt;
&lt;br /&gt;
Allows the robot to tell its current position and facing. The position is relative to the center of the map that was used to craft the upgrade. The range in which the upgrade works depends on the size of the map that was used to craft the upgrade. The upgrade can be crafted together with another map to re-configure it and get the old map back.&lt;br /&gt;
&lt;br /&gt;
The Navigation upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Gold Ingot&lt;br /&gt;
* 1 x Compass&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 2)]]&lt;br /&gt;
* 1 x Map&lt;br /&gt;
* 1 x Potion / Filled Water Bottle&lt;br /&gt;
&lt;br /&gt;
[[File:navigation.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;navigation&amp;lt;/code&amp;gt;. Callbacks:&lt;br /&gt;
{{APICallback|name=getPosition|signature=(): number, number, number or nil, string|description=&lt;br /&gt;
Gets the current relative position of the robot. This is the position relative to the center of the map item that was used to craft the upgrade. Note that the upgrade can be re-crafted with another map to change it&#039;s point of reference. Returns nil and the string out of range if the robot is too far away from the point of reference (i.e. when it is out of bounds of the map that was used to craft the upgrade).&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getFacing|signature=(): number|description=&lt;br /&gt;
Gets the current facing of the robot, as one of the sides constants.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getRange|signature=(): number|description=&lt;br /&gt;
Gets the effective range of the upgrade. If the absolute value of the relative X or Z coordinate becomes larger than this, &amp;lt;code&amp;gt;getPosition()&amp;lt;/code&amp;gt; will fail.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=findWaypoints|signature=(range: number): table|description=&lt;br /&gt;
Finds all [[Block/waypoint|waypoint blocks]] within the specified range.&lt;br /&gt;
&lt;br /&gt;
This returns a table that contains other tables. The top table has only numbered indices corresponding to each detected beacon. In each of this entries is another table, each row various aspects of the specified beacon: &amp;quot;position&amp;quot;, &amp;quot;redstone&amp;quot;, &amp;quot;label&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* position returns a table with numbered indices in which 1 is x, 2 is y, and 3 is z. These numbers are the distance from the navigation component to the beacon in terms of block coordinates.&lt;br /&gt;
* redstone returns a single number that is the current strength of the redstone signal&lt;br /&gt;
* label returns a string that is the label of the beacon you can set by right clicking on it.&lt;br /&gt;
&lt;br /&gt;
Below is an example of how the tables are set up. A single beacon&#039;s results are shown.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! table: main&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | table: 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | table: position&lt;br /&gt;
| 1:&lt;br /&gt;
| number: x distance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 2:&lt;br /&gt;
| number: y distance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3:&lt;br /&gt;
| number: z distance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| redstone&lt;br /&gt;
|&lt;br /&gt;
| number: redstone strength&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| label&lt;br /&gt;
|&lt;br /&gt;
| string: beacon label&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Leash_Upgrade&amp;diff=1794</id>
		<title>Leash Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Leash_Upgrade&amp;diff=1794"/>
		<updated>2026-09-15T20:31:04Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Remove reference to dead component page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Leash Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:upgradeleash.png|128px]]&lt;br /&gt;
&lt;br /&gt;
This upgrade allows certain devices (such as drones) to put animals on a leash. When leashed the device can pull the animals around, and even pull them up in the air. The leash will persist until it is manually released.&lt;br /&gt;
&lt;br /&gt;
The Leash Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Leash&lt;br /&gt;
* 4 x Iron Ingot&lt;br /&gt;
* 1 x [[Item/materials|Control Unit]]&lt;br /&gt;
&lt;br /&gt;
[[File:leash.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;leash&amp;lt;/code&amp;gt;. Callbacks:&lt;br /&gt;
{{APICallback|name=leash|signature=(side:number):boolean|description=&lt;br /&gt;
Tries to put an entity on the specified side of the device onto a leash.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=unleash|signature=()|description=&lt;br /&gt;
Unleashes all currently leashed entities.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1793</id>
		<title>Component/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1793"/>
		<updated>2026-09-15T20:30:30Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Remove link to Leash Upgrade (page is now unified)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | [[Component|Components]]&lt;br /&gt;
|-&lt;br /&gt;
! Core Components&lt;br /&gt;
| [[Component/abstract bus|Abstract Bus]] - [[Component/access point|Access Point]] - [[Component/computer|Computer]] - [[Component/drone|Drone]] - [[Component/drive|Drive]] - [[Component/EEPROM|EEPROM]] - [[Component/filesystem|Filesystem]] - [[Component/GPU|GPU]] - [[Component/microcontroller|Microcontroller]] - [[Component/modem|Modem]] - [[Component/navigation|Navigation]] - [[Component/piston|Piston]] - [[Component/redstone|Redstone]] - [[Component/robot|Robot]] - [[Component/sign|Sign]] - [[Component/tank controller|Tank Controller]] - [[Component/tractor beam|Tractor Beam]] - [[Component/transposer|Transposer]] - [[Component/tunnel|Tunnel]] - [[Component/world sensor|World Sensor]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Component/component access|Component Access]] - [[Component/signals|Signals]]&lt;br /&gt;
|-&lt;br /&gt;
! Cross-Mod Integration&lt;br /&gt;
| [[Component/applied energistics|Applied Energistics]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/dronecase&amp;diff=1792</id>
		<title>Item/dronecase</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/dronecase&amp;diff=1792"/>
		<updated>2026-09-15T20:29:08Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/leash upgrade&amp;quot; to &amp;quot;Leash Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drone Case =&lt;br /&gt;
&lt;br /&gt;
[[File:dronecase0.png|128px]] [[File:dronecase1.png|128px]]&lt;br /&gt;
&lt;br /&gt;
This item is used in an [[Block/assembler|Assembler]] to build [[Item/drone|Drones]], which are kind of to robots what microcontrollers are to computers. They are more limited, specialized versions. In this case they also have some additional functionality, though: they move differently (because they are entities) and have other options for interacting with the world, too, such as via using the [[Leash Upgrade|Leash Upgrade]].&lt;br /&gt;
&lt;br /&gt;
The Drone Case (Tier 1) is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x End Stone&lt;br /&gt;
* 1 x [[Item/microcontrollercase|Microcontroller Case (Tier 1)]]&lt;br /&gt;
* 1 x Compass&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 1)]]&lt;br /&gt;
* 1 x [[Item/component bus|Component Bus (Tier 2)]]&lt;br /&gt;
&lt;br /&gt;
[[File:t1dronecase.png|200px|t1dronecase.png]]&lt;br /&gt;
&lt;br /&gt;
The Drone Case (Tier 2) is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x End Stone&lt;br /&gt;
* 1 x [[Item/microcontrollercase|Microcontroller Case (Tier 2)]]&lt;br /&gt;
* 1 x Compass&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 2)]]&lt;br /&gt;
* 1 x [[Item/component bus|Component Bus (Tier 3)]]&lt;br /&gt;
&lt;br /&gt;
[[File:t2dronecase.png|200px|t2dronecase.png]]&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1790</id>
		<title>Item/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1790"/>
		<updated>2026-09-15T20:29:06Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Text replacement - &amp;quot;Item/leash upgrade&amp;quot; to &amp;quot;Leash Upgrade&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Items&lt;br /&gt;
|-&lt;br /&gt;
! Components&lt;br /&gt;
| [[Data Card]] - [[Debug Card|Debug Card]] - [[Item/graphics card|Graphics Card]] - [[Internet Card|Internet Card]] - [[Item/linked card|Linked Card]] - [[Item/network card|Network Card]] - [[Item/redstone card|Redstone Card]] - [[Item/wireless network card|Wireless Network Card]]&lt;br /&gt;
|-&lt;br /&gt;
! Storage Devices&lt;br /&gt;
| [[Item/floppy disk|Floppy Disk]] - [[Item/EEPROM|EEPROM]] - [[Item/hard disk drive|Hard Disk Drive]] - [[Item/memory|Memory]]&lt;br /&gt;
|-&lt;br /&gt;
! Upgrades&lt;br /&gt;
| [[Item/angel upgrade|Angel Upgrade]] - [[Item/battery upgrade|Battery Upgrade]] - [[Chunkloader Upgrade]] - [[Database Upgrade]] - [[Experience Upgrade|Experience Upgrade]] - [[Generator Upgrade|Generator Upgrade]] - [[Item/hover upgrade|Hover Upgrade]] - [[Inventory Controller Upgrade|Inventory Controller Upgrade]] - [[Item/inventory upgrade|Inventory Upgrade]] - [[Leash Upgrade|Leash Upgrade]] - [[Item/navigation upgrade|Navigation Upgrade]] - [[Item/piston upgrade|Piston Upgrade]] - [[Item/sign upgrade|Sign I/O Upgrade]] - [[Item/solar generator upgrade|Solar Generator Upgrade]] - [[Item/tank upgrade|Tank Upgrade]] - [[Item/tank controller upgrade|Tank Controller Upgrade]] - [[Item/tractor beam upgrade|Tractor Beam Upgrade]] - [[Item/world sensor upgrade|World Sensor Upgrade]]&lt;br /&gt;
|-&lt;br /&gt;
! Containers&lt;br /&gt;
| [[Item/card container|Card Container]] - [[Item/upgrade container|Upgrade Container]] - [[Block/disk drive|Disk Drive]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Item/analyzer|Analyzer]] - [[Item/texture picker|Texture Picker]] - [[Item/component bus|Component Bus]] - [[Item/CPU|CPU]] - [[Item/apu|APU]] - [[Item/dronecase|Drone Case]] - [[Item/manual|Manual]] - [[Item/microcontrollercase|Microcontroller Case]] - [[Item/nanomachines|Nanomachines]] - [[Item/terminal|Remote Terminal]] - [[Item/terminal server|Terminal Server]] - [[Item/server|Server]] - [[Item/tablet case|Tablet Case]] - [[Item/tablet|Tablet]] - [[Item/materials|Crafting Materials]] - [[Item/ink cartridge|Ink Cartridge]] - [[Item/scrench|Scrench]] - [[Item/hover boots|Hover Boots]] - [[Item/grog|Grog]] - [[Item/loot disks|Loot Disks]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Leash_Upgrade&amp;diff=1789</id>
		<title>Leash Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Leash_Upgrade&amp;diff=1789"/>
		<updated>2026-09-15T20:28:12Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: SoraFirestorm moved page Item/leash upgrade to Leash Upgrade without leaving a redirect: Page has been unified&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Leash Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:upgradeleash.png|128px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Provides:&#039;&#039;&#039; [[Component/leash|Leash]] component.&lt;br /&gt;
&lt;br /&gt;
This upgrade allows certain devices (such as drones) to put animals on a leash. When leashed the device can pull the animals around, and even pull them up in the air. The leash will persist until it is manually released.&lt;br /&gt;
&lt;br /&gt;
The Leash Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Leash&lt;br /&gt;
* 4 x Iron Ingot&lt;br /&gt;
* 1 x [[Item/materials|Control Unit]]&lt;br /&gt;
&lt;br /&gt;
[[File:leash.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;leash&amp;lt;/code&amp;gt;. Callbacks:&lt;br /&gt;
{{APICallback|name=leash|signature=(side:number):boolean|description=&lt;br /&gt;
Tries to put an entity on the specified side of the device onto a leash.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=unleash|signature=()|description=&lt;br /&gt;
Unleashes all currently leashed entities.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Leash_Upgrade&amp;diff=1788</id>
		<title>Leash Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Leash_Upgrade&amp;diff=1788"/>
		<updated>2026-09-15T20:27:53Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Unify item and component API pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Leash Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:upgradeleash.png|128px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Provides:&#039;&#039;&#039; [[Component/leash|Leash]] component.&lt;br /&gt;
&lt;br /&gt;
This upgrade allows certain devices (such as drones) to put animals on a leash. When leashed the device can pull the animals around, and even pull them up in the air. The leash will persist until it is manually released.&lt;br /&gt;
&lt;br /&gt;
The Leash Upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Leash&lt;br /&gt;
* 4 x Iron Ingot&lt;br /&gt;
* 1 x [[Item/materials|Control Unit]]&lt;br /&gt;
&lt;br /&gt;
[[File:leash.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;leash&amp;lt;/code&amp;gt;. Callbacks:&lt;br /&gt;
{{APICallback|name=leash|signature=(side:number):boolean|description=&lt;br /&gt;
Tries to put an entity on the specified side of the device onto a leash.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=unleash|signature=()|description=&lt;br /&gt;
Unleashes all currently leashed entities.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/component_access&amp;diff=1787</id>
		<title>Component/component access</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/component_access&amp;diff=1787"/>
		<updated>2026-09-10T22:11:47Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Reflow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Component Access =&lt;br /&gt;
&lt;br /&gt;
This page describes how to get access to a [[Component|component&#039;s API]] from Lua. To recap: components are blocks or items that provide some API to Lua programs running on computers connected to said component.&lt;br /&gt;
&lt;br /&gt;
== Addresses ==&lt;br /&gt;
&lt;br /&gt;
Components all have an address. This address is a UUID, a unique identifier. In most cases it is OK to abbreviate these addresses. For example to get the full address from an abbreviated one you can use &amp;lt;code&amp;gt;component.get&amp;lt;/code&amp;gt;. To get the address of any block in particular, you can use the [[Item/analyzer|Analyzer]] by holding the control key while right clicking the block.&lt;br /&gt;
&lt;br /&gt;
To get a list of all components attached to your computer you can do this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
Lua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio&lt;br /&gt;
lua&amp;gt; local component = require(&amp;quot;component&amp;quot;)&lt;br /&gt;
lua&amp;gt; for k,v in component.list() do print(k, v) end&lt;br /&gt;
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx keyboard&lt;br /&gt;
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx screen&lt;br /&gt;
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx gpu&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that item components will usually keep their address even when removed from a computer. So when removing a hard drive and inserting it back in, it will have the same address as before. This is &#039;&#039;not&#039;&#039; the case for block components, they will always get a new address after being broken and placed again.&lt;br /&gt;
&lt;br /&gt;
Optionally you can filter components list like this:&lt;br /&gt;
&lt;br /&gt;
This code will add every component which name contains &amp;quot;adar&amp;quot; such as computronics radar or warpDrive radar to the local radars table &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local component = require(&amp;quot;component&amp;quot;)&lt;br /&gt;
local radars = {}&lt;br /&gt;
&lt;br /&gt;
for address, name in component.list(&amp;quot;adar&amp;quot;, false) do&lt;br /&gt;
  table.insert(radars, component.proxy(address))&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code will add all connected warpDrive radars only to the local radars table&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local component = require(&amp;quot;component&amp;quot;)&lt;br /&gt;
local radars = {}&lt;br /&gt;
&lt;br /&gt;
for address, name in component.list(&amp;quot;warpdriveRadar&amp;quot;, true) do&lt;br /&gt;
  table.insert(radars, component.proxy(address))&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Primary Components ==&lt;br /&gt;
&lt;br /&gt;
The [[API/component|component API]] keeps track of one component of each type as a &amp;quot;primary&amp;quot; component. If there are multiple components of the same type, which one will be the primary component is random. You can access the primary component of a specific type via &amp;lt;code&amp;gt;component.xxx&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;xxx&amp;lt;/code&amp;gt; is the type. For example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
lua&amp;gt; =component.gpu.address&lt;br /&gt;
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively you can use &amp;lt;code&amp;gt;component.getPrimary(&amp;quot;xxx&amp;quot;)&amp;lt;/code&amp;gt;. Just keep in mind that this will throw an error if there is no primary component for the specified type, so you may wish to check that with &amp;lt;code&amp;gt;component.isAvailable(&amp;quot;xxx&amp;quot;)&amp;lt;/code&amp;gt; first. Having it throw an error is usually clearer than getting a nil dereference later on.&lt;br /&gt;
&lt;br /&gt;
This system is in mainly place to allow the OS to pick the screen to initially output to.&lt;br /&gt;
&lt;br /&gt;
== Proxies ==&lt;br /&gt;
&lt;br /&gt;
So now that we know how to get the address of components, let&#039;s see how we can interact with them. There are two ways to go about this. One is to call &amp;lt;code&amp;gt;component.invoke(address, method, ...)&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local component = require(&amp;quot;component&amp;quot;)&lt;br /&gt;
component.invoke(modemAddress, &amp;quot;broadcast&amp;quot;, port, data)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The preferred way will usually be to get a proxy, however. A proxy is simply a table that provides one function for each API callback, named after that callback. In addition, each proxy has two fields: &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt;, which holds the address of the wrapped component, and &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;, which holds the type of the component. You can get a proxy like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local component = require(&amp;quot;component&amp;quot;)&lt;br /&gt;
local proxy = component.proxy(address)&lt;br /&gt;
&lt;br /&gt;
-- The call above using the proxy:&lt;br /&gt;
proxy.broadcast(port, data)&lt;br /&gt;
&lt;br /&gt;
-- The common proxy fields:&lt;br /&gt;
print(proxy.address) -- address passed to component.proxy above&lt;br /&gt;
print(proxy.type) -- &amp;quot;modem&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that each primary component you access via &amp;lt;code&amp;gt;component.getPrimary&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;component.xxx&amp;lt;/code&amp;gt; is in fact a proxy.&lt;br /&gt;
&lt;br /&gt;
== Direct Calls ==&lt;br /&gt;
&lt;br /&gt;
Some component callbacks can be performed as &amp;quot;direct calls&amp;quot;. Direct calls are performed in the computer&#039;s worker thread, meaning they will return instantly. Normal calls are delegated to the main server thread, to avoid race conditions and other threading issues, which also means that normal calls will take up to one tick (i.e. 50 ms). Just to be clear: this only applies to component APIs.&lt;br /&gt;
&lt;br /&gt;
== Signals ==&lt;br /&gt;
&lt;br /&gt;
An important part of interacting with components are [[Component/signals|Signals]]. These can be queued by components to notify computers of external changes and events. For example, user input is forwarded to computers via signals. Computers can also queue their own signals, which can be useful for code-reuse, or just notifying other parts of your code asynchronously.&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:Component/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1786</id>
		<title>Component/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Component/contents&amp;diff=1786"/>
		<updated>2026-09-10T22:07:58Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Remove link to Inventory Controller Upgrade (page is now unified)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | [[Component|Components]]&lt;br /&gt;
|-&lt;br /&gt;
! Core Components&lt;br /&gt;
| [[Component/abstract bus|Abstract Bus]] - [[Component/access point|Access Point]] - [[Component/computer|Computer]] - [[Component/drone|Drone]] - [[Component/drive|Drive]] - [[Component/EEPROM|EEPROM]] - [[Component/filesystem|Filesystem]] - [[Component/GPU|GPU]] - [[Component/leash|Leash]] - [[Component/microcontroller|Microcontroller]] - [[Component/modem|Modem]] - [[Component/navigation|Navigation]] - [[Component/piston|Piston]] - [[Component/redstone|Redstone]] - [[Component/robot|Robot]] - [[Component/sign|Sign]] - [[Component/tank controller|Tank Controller]] - [[Component/tractor beam|Tractor Beam]] - [[Component/transposer|Transposer]] - [[Component/tunnel|Tunnel]] - [[Component/world sensor|World Sensor]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Component/component access|Component Access]] - [[Component/signals|Signals]]&lt;br /&gt;
|-&lt;br /&gt;
! Cross-Mod Integration&lt;br /&gt;
| [[Component/applied energistics|Applied Energistics]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=API/robot&amp;diff=1785</id>
		<title>API/robot</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=API/robot&amp;diff=1785"/>
		<updated>2026-09-10T22:07:22Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Fix links to Inventory Controller Upgrade&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Robot API =&lt;br /&gt;
&lt;br /&gt;
This API wraps the functionality of the &#039;&#039;&#039;component&#039;&#039;&#039; [[Component/robot|robot]] to allow more intuitive interaction with the robot.&lt;br /&gt;
&lt;br /&gt;
This is the api you are using when in your lua code you call&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;local robot_api = require(&amp;quot;robot&amp;quot;)&lt;br /&gt;
robot_api.forward()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
As opposed to using the robot component api directly, via the component interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;local component = require(&amp;quot;component&amp;quot;)&lt;br /&gt;
local robot_component_api = component.robot -- if using openos, else component.proxy(component.list(&amp;quot;robot&amp;quot;)())&lt;br /&gt;
robot_component_api.move(sides.front)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
While the component robot has more generic functions like &amp;lt;code&amp;gt;move([side: number])&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;drop([side: number])&amp;lt;/code&amp;gt;, this API has more intuitive and failsafe functions like &amp;lt;code&amp;gt;turnRight&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dropDown&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;forward&amp;lt;/code&amp;gt;. Which one you use is up to you, you can even use both at the same time.&lt;br /&gt;
&lt;br /&gt;
Note that a Robot is also computer like any other with just an additional robot component included, so the normal [[API|APIs]] are available as usual.&lt;br /&gt;
&lt;br /&gt;
See [[Block/robot|Robot Block]] for additional information on the actual Robot.&lt;br /&gt;
&lt;br /&gt;
=== Slot alignment ===&lt;br /&gt;
&lt;br /&gt;
{{:Component/inventory slots}}&lt;br /&gt;
&lt;br /&gt;
=== Movement ===&lt;br /&gt;
&lt;br /&gt;
Robots are capable of complex movements, but some you may want to understand some nuances.&lt;br /&gt;
&lt;br /&gt;
= ==== Hovering =&lt;br /&gt;
&lt;br /&gt;
Robots have a flight-height limitation. The general movement rules for robots go like this:&lt;br /&gt;
&lt;br /&gt;
* 1. Robots may only move if the start or target position is valid (e.g. to allow building bridges). - 2. The position below a robot is always valid (can always move down). - 3. Positions up to &amp;lt;code&amp;gt;flightHeight&amp;lt;/code&amp;gt; above a solid block are valid (limited flight capabilities, default is 8). - 4. Any position that has an adjacent block with a solid face towards the position is valid (robots can &amp;quot;climb&amp;quot;). Here&#039;s an image visualizing that (minus the second rule, because that&#039;d just clutter it).&lt;br /&gt;
&lt;br /&gt;
[[File:robot_flight.png|robot_flight.png]]&lt;br /&gt;
&lt;br /&gt;
Violating these rules will result in a the error &amp;lt;code&amp;gt;impossible move&amp;lt;/code&amp;gt; to be returned&lt;br /&gt;
&lt;br /&gt;
You can install hover upgrades to increase (tier 1) and pretty much circumvent (tier 2) this limitation. Or you can disable this in the config, by setting &amp;lt;code&amp;gt;limitFlightHeight&amp;lt;/code&amp;gt; to 256 or so.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MightyPirates/OpenComputers/issues/1113#issuecomment-97731965 source]&lt;br /&gt;
&lt;br /&gt;
=== API Exclusive Methods ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.name(): string&amp;lt;/code&amp;gt; Returns the robot&#039;s name. The name of a Robot is set initially during it&#039;s creation and cannot be changed programmatically. However you can change it using an anvil if you want. - &amp;lt;code&amp;gt;robot.detect(): boolean, string&amp;lt;/code&amp;gt; Detects what is directly in front of the robot and returns if the robot could move through it as well as a generic description. &#039;&#039;&#039;Returns:&#039;&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the robot if whatever is in front of the robot would prevent him from moving forward (a block or an entity) (Note: Drones return &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; even if the block is &amp;lt;code&amp;gt;passable&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise. The second parameter describes what is in front in general and is one of either &amp;lt;code&amp;gt;entity&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;solid&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;replaceable&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;liquid&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;passable&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;air&amp;lt;/code&amp;gt;. - &amp;lt;code&amp;gt;robot.detectUp(): boolean, string&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.detect()&amp;lt;/code&amp;gt; except that it scans the block directly above the robot. - &amp;lt;code&amp;gt;robot.detectDown(): boolean, string&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.detect()&amp;lt;/code&amp;gt; except that it scans the block directly below the robot. - &amp;lt;code&amp;gt;robot.select([slot: number]): number&amp;lt;/code&amp;gt; Selects the given inventory slot (if specified) and returns the current inventory slot. &#039;&#039;&#039;slot&#039;&#039;&#039; - the slot to select. If this parameter is omitted, no slot is selected. &#039;&#039;&#039;Returns&#039;&#039;&#039; the currently selected slot. Either the one specified (if successfully selected) or the one that was previously selected. - &amp;lt;code&amp;gt;robot.inventorySize(): number&amp;lt;/code&amp;gt; &#039;&#039;&#039;Returns&#039;&#039;&#039; the amount of select-able internal robot inventory slots. To get the number of inventory upgrade use: x = robot.inventorySize() / 16. - &amp;lt;code&amp;gt;robot.count([slot: number]): number&amp;lt;/code&amp;gt; Returns the amount of items currently in the specified or selected slot. &#039;&#039;&#039;slot&#039;&#039;&#039; - specifies the slot to count the items in. If omitted the currently selected slot is counted instead. &#039;&#039;&#039;Returns&#039;&#039;&#039; the amount of items in the slot specified or the currently selected slot if no slot was given. - &amp;lt;code&amp;gt;robot.space([slot: number]): number&amp;lt;/code&amp;gt; Returns the amount of items that can still be added to the specified slot until it is filled up. &#039;&#039;&#039;slot&#039;&#039;&#039; - specifies the slot to count the items in. If omitted the currently selected slot is counted instead. &#039;&#039;&#039;Returns&#039;&#039;&#039; the amount of items that can still be added to the the slot specified or the currently selected slot until it is considered full. This function helps to determine how many items of a type can be added to a specific slot. While for example cobblestone can pile up to 64 items per slot, empty buckets can only stack up to 16 and other blocks like doors can only take 1 item per slot. - &amp;lt;code&amp;gt;robot.transferTo(slot: number[, count: number]): boolean&amp;lt;/code&amp;gt; Moves all or up to &#039;&#039;count&#039;&#039; items from the currently selected slot to the specified slot. &#039;&#039;&#039;slot&#039;&#039;&#039; - specifies the slot move the items from the currently selected slot to. &#039;&#039;&#039;count&#039;&#039;&#039; - if specified only up to this many items are moved, otherwise the entire stack is moved. &#039;&#039;&#039;Returns&#039;&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if exchanging the content between those slots was successful, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise. If there are items in the target slot then this function attempts to swap the items in those slots. This only succeeds if you move all items away from the current slot or if the current slot was empty anyways. Note that this will always return true if the specified slot is the same as the currently selected slot, or if both slots are empty, even though no items are effectively moved. - &amp;lt;code&amp;gt;robot.compareTo(slot: number): boolean&amp;lt;/code&amp;gt; Compares the item of the currently selected slot to the item of the slot specified and returns whether they are equal or not. &#039;&#039;&#039;slot&#039;&#039;&#039; - specifies the slot to compare the current slot to. &#039;&#039;&#039;Returns&#039;&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the item type in the specified slot and the currently selected slot are equal, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise. Two items are considered the &#039;same&#039; if their item type and metadata are the same. Stack size or any additional mod-specific item informations (like for example the content of two floppy disks) are not checked. - &amp;lt;code&amp;gt;robot.compare(): boolean&amp;lt;/code&amp;gt; Compares the block in front of the robot with the item in the currently selected slot and returns whether they are the same or not. Blocks are considered the &#039;same&#039; if their type and metadata are the same. Stack size or any additional informations (like for example the inventory of a container) are not checked. Note that empty space in front of the robot is considered an &#039;air block&#039; by the game, which cannot be put into an inventory slot and therefore compared by normal means. An empty slot and an air block are &#039;&#039;&#039;not&#039;&#039;&#039; the same. You can use &amp;lt;code&amp;gt;robot.detect()&amp;lt;/code&amp;gt; beforehand to determine if there is actually a block in front of the robot. Also keep in mind that blocks that drop items need to be compared to the actual same block that is in the world. For example stone blocks drop as cobblestone and diamond ores drop diamond items, which are not the same for this function. Use silk-touch items to retrieve the actual block in the world for comparison. - &amp;lt;code&amp;gt;robot.compareUp(): boolean&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.compare&amp;lt;/code&amp;gt; just for the block directly above the robot. - &amp;lt;code&amp;gt;robot.compareDown(): boolean&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.compare&amp;lt;/code&amp;gt; just for the block directly below the robot. - &amp;lt;code&amp;gt;robot.drop([count: number]): boolean&amp;lt;/code&amp;gt; Tries to drop items from the currently selected inventory slot in &#039;&#039;&#039;front&#039;&#039;&#039; of the robot. Note that if you are trying to drop items into an inventory below you, this is the wrong method. Use &amp;lt;code&amp;gt;dropDown&amp;lt;/code&amp;gt; for that case. This method, &amp;lt;code&amp;gt;drop&amp;lt;/code&amp;gt;, will drop the items to the &#039;&#039;&#039;front&#039;&#039;&#039;. &#039;&#039;&#039;count&#039;&#039;&#039; - specifies how many items to drop. If omitted or if count exceeds the amount of items in the currently selected slot, then all items in the currently selected slot are dropped. &#039;&#039;&#039;Returns&#039;&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if at least one item was dropped, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise. If the block or entity (like chests or mine-carts with a chest) immediately in front of the robot has an accessible item inventory, the robot will try to put those items into this inventory instead of throwing them into the world. If the block in front has an inventory but the item could not be moved into it for any reason, then this function returns false and does not move any items. Where the item will be put on depends on the inventory and the side the robot is facing. Furnaces for example receive items to smelt from the top side. Also note that robots are considered &amp;quot;blocks with an inventory&amp;quot; as well and therefore items can be moved into robot slots as with any other inventory as well. This function cannot interact with non-item inventories (like for example fluid tanks) and will not consider them an inventory and therefore items will be thrown into the world instead. You need to use the &amp;lt;code&amp;gt;robot.use&amp;lt;/code&amp;gt; function to interact with those types of blocks. Note that this will always return false, if the currently selected slot contains no items at all. - &amp;lt;code&amp;gt;robot.dropUp(): boolean&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.drop&amp;lt;/code&amp;gt; just for the block directly above the robot. - &amp;lt;code&amp;gt;robot.dropDown(): boolean&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.drop&amp;lt;/code&amp;gt; just for the block directly below the robot. - &amp;lt;code&amp;gt;robot.suck([count: number]): boolean&amp;lt;/code&amp;gt; Tries to pick up items from directly in front of the robot and puts it into the selected slot or (if occupied) first possible slot. &#039;&#039;&#039;count&#039;&#039;&#039; - limits the amount of items to pick up by this many. If omitted a maximum of one stack is taken. &#039;&#039;&#039;Returns&#039;&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if at least one item was picked up, false otherwise. This is basically the inverse of &amp;lt;code&amp;gt;robot.drop&amp;lt;/code&amp;gt; and will interact with item inventories in the same way. However this will only take the first item available in that inventory. For more precise inventory management you need to install an [[Inventory Controller Upgrade|inventory controller upgrade]] into the robot. If there are multiple items in front of the robot, this will pick them up based on the distance to the robot. This will skip items that cannot be picked up for whatever reason and try other items first before returning &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. If the currently selected slot contains a different item than the one the robot tries to pick up, the robot will attempt to place the item in the next possible slots &#039;&#039;after&#039;&#039; the selected one that are either free or contain identical items with less than the maximum stack size for those items. This will distribute the items to pick up over several slots if necessary. If no slot after the selected one is able to contain the items the robot tries to put up, this function will fail, even if there are slots &#039;&#039;before&#039;&#039; the currently selected slot that could hold those items. - &amp;lt;code&amp;gt;robot.suckUp([count: number]): boolean&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.suck&amp;lt;/code&amp;gt; except that it tries to pick up items from directly above the robot. - &amp;lt;code&amp;gt;robot.suckDown([count: number]): boolean&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.suck&amp;lt;/code&amp;gt; except that it tries to pick up items from directly below the robot. - &amp;lt;code&amp;gt;robot.place([side: number[, sneaky: boolean]]): boolean[, string]&amp;lt;/code&amp;gt; Tries to place the block in the currently selected inventory slot in front of the robot. &#039;&#039;&#039;side&#039;&#039;&#039; - if specified this determines the surface on which the robot attempts to place the block for example to place torches to a specific side. If omitted the robot will try all possible sides. See the [[API/sides|Sides API]] for a list of possible sides. &#039;&#039;&#039;sneaky&#039;&#039;&#039; - if set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; the robot will simulate a sneak-placement (like if the player would be using shift during placement), which is usually not necessary and only included for compatibility to other mods. &#039;&#039;&#039;Returns:&#039;&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if an item could be placed, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise. If placement failed, the secondary return parameter will describe why the placement failed. A robot can only place blocks to the side of another solid block, they cannot place blocks &amp;quot;into the air&amp;quot; without an [[Item/angel upgrade|Angel upgrade]]. This can be changed in the config file. Note that trying to place an empty inventory slot will always fail. - &amp;lt;code&amp;gt;robot.placeUp([side: number[, sneaky: boolean]]): boolean[, string]&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.place&amp;lt;/code&amp;gt; except that the robot tries to place the item into the space directly above it. - &amp;lt;code&amp;gt;robot.placeDown([side: number[, sneaky: boolean]]): boolean[, string]&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.place&amp;lt;/code&amp;gt; except that the robot tries to place the item into the space directly below it. - &amp;lt;code&amp;gt;robot.durability(): number, number, number or nil, string&amp;lt;/code&amp;gt; Returns the durability of the item currently in the tool slot, followed by its current durability, followed by its maximum durability. If no item is equipped or the item has no durability this returns &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; and an error message describing why no durability could be returned. The error message is one of &amp;lt;code&amp;gt;no tool equipped&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;tool cannot be damaged&amp;lt;/code&amp;gt;. - &amp;lt;code&amp;gt;robot.swing([side: number, [sneaky:boolean]]): boolean[, string]&amp;lt;/code&amp;gt; Makes the robot use the item currently in the tool slot against the block or space immediately in front of the robot in the same way as if a player would make a left-click. &#039;&#039;&#039;side&#039;&#039;&#039; - if given the robot will try to &#039;left-click&#039; only on the surface as specified by side, otherwise the robot will try all possible sides. See the [[API/sides|Sides API]] for a list of possible sides. &#039;&#039;&#039;Returns:&#039;&#039;&#039; true if the robot could interact with the block or entity in front of it, false otherwise. If successful the secondary parameter describes what the robot interacted with and will be one of &#039;entity&#039;, &#039;block&#039; or &#039;fire&#039;. This can be used to mine blocks or fight entities in the same way as if the player did a left-click. Note that tools and weapons do lose durability in the same way as if a player would use them and need to be replaced eventually. Items mined or dropped of mobs will be put into the inventory if possible, otherwise they will be dropped to the ground. Note that even though the action is performed immediately (like a block being destroyed) this function will wait for a while appropriate to the action performed to simulate the time it would take a player to do the same action. This is most noticeable if you try to mine obsidian blocks: they are destroyed and put into the inventory immediately, but the function will wait for a few seconds. If this is used to mine blocks, then the tool equipped needs to be sufficient to actually mine the block in front. If for example a wooden pick-axe is used on an obsidian block this will return false. Everything (including an empty slot) can be used to fight mobs, but the damage will be based on the item used. Equally everything can be used to extinguish fire, and items with durability will not lose any if done so. - &amp;lt;code&amp;gt;robot.swingUp([side: number, [sneaky:boolean]]): boolean[, string]&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.swing&amp;lt;/code&amp;gt; except that the block or entity directly above the robot will be the target. - &amp;lt;code&amp;gt;robot.swingDown([side: number, [sneaky:boolean]]): boolean[, string]&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.swing&amp;lt;/code&amp;gt; except that the block or entity directly below the robot will be the target. - &amp;lt;code&amp;gt;robot.use([side: number[, sneaky: boolean[, duration: number]]]): boolean[, string]&amp;lt;/code&amp;gt; Attempts to use the item currently equipped in the tool slot in the same way as if the player would make a right-click. &#039;&#039;&#039;side&#039;&#039;&#039; - if given the robot will try to &#039;right-click&#039; only on the surface as specified by side, otherwise the robot will try all possible sides. See the [[API/sides|Sides API]] for a list of possible sides. &#039;&#039;&#039;sneaky&#039;&#039;&#039; - if set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; the robot will simulate a sneak-right-click (like if the player would be using shift during a right-click). Some items (like buckets) will behave differently if this is set to true. &#039;&#039;&#039;duration&#039;&#039;&#039; - how long the item is used. This is useful when using charging items like a bow. &#039;&#039;&#039;Returns:&#039;&#039;&#039; true if the robot could interact with the block or entity in front of it, false otherwise. If successful the secondary parameter describes what the robot interacted with and will be one of &#039;block_activated&#039;, &#039;item_placed&#039;, &#039;item_interacted&#039; or &#039;item_used&#039;. This function has a very broad use as the robot can simulate right-clicks with most items. The only difference to players is that the robot cannot use items that specifically require the user to be an entity as the robot is a block. So drinking potions, eating food or throwing an ender pearl will fail. This functions secondary return value can be used to determine what the result of the right-click caused. Which of the item results is returned is not always obvious and requires some testing beforehand. Also note that while robots are not affected by harmful potions they can be destroyed by explosions, so be careful when you place, throw or activate any form of explosives with this function. Possible values for the second return value:&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;code&amp;gt;block_activated&amp;lt;/code&amp;gt; - a block was activated (like levers, switches or doors). =&lt;br /&gt;
= &amp;lt;code&amp;gt;item_interacted&amp;lt;/code&amp;gt; - the equipped tool interacted with the world, for example sheers when used on a sheep. =&lt;br /&gt;
= &amp;lt;code&amp;gt;item_placed&amp;lt;/code&amp;gt; - something was placed into the world. This is not only caused by placeable blocks, but as well by items that cause blocks or entities to appear in the world (like flint and stone or mob eggs). =&lt;br /&gt;
= &amp;lt;code&amp;gt;item_used&amp;lt;/code&amp;gt; - the equipped was activated, like a splash-potion. =&lt;br /&gt;
= &amp;lt;code&amp;gt;air&amp;lt;/code&amp;gt; - the equipped item requires a target but there was none. Note that if your robot has an Angel upgrade, this will never be returned, however some actions might still cause no effect. =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.useUp([side: number[, sneaky: boolean[, duration: number]]]): boolean[, string]&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.use&amp;lt;/code&amp;gt; except that the item is used aiming at the area above the robot. - &amp;lt;code&amp;gt;robot.useDown([side: number[, sneaky: boolean[, duration: number]]]): boolean[, string]&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.use&amp;lt;/code&amp;gt; except that the item is used aiming at the area below the robot. - &amp;lt;code&amp;gt;robot.forward(): boolean[, string]&amp;lt;/code&amp;gt; Tries to move the robot forward. &#039;&#039;&#039;Returns:&#039;&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the robot successfully moved, &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; otherwise. If movement fails a secondary result will be returned describing why it failed, which will either be &#039;impossible move&#039;, &#039;not enough energy&#039; or the description of the obstacle as &amp;lt;code&amp;gt;robot.detect&amp;lt;/code&amp;gt; would return. The result &#039;not enough energy&#039; is rarely returned as being low on energy usually causes the robot to shut down beforehand. The result &#039;impossible move&#039; is kind of a fall-back result and will be returned for example if the robot tries to move into an area of the world that is currently not loaded. - &amp;lt;code&amp;gt;robot.back(): boolean[, string]&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.forward()&amp;lt;/code&amp;gt; except that the robot tries to move backward. - &amp;lt;code&amp;gt;robot.up(): boolean[, string]&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.forward()&amp;lt;/code&amp;gt; except that the robot tries to move upwards. - &amp;lt;code&amp;gt;robot.down(): boolean[, string]&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.forward()&amp;lt;/code&amp;gt; except that the robot tries to move downwards. - &amp;lt;code&amp;gt;robot.turnLeft()&amp;lt;/code&amp;gt; Turns the robot 90° to the left. Note that this can only fail if the robot has not enough energy to perform the turn but has not yet shut down because of it. - &amp;lt;code&amp;gt;robot.turnRight()&amp;lt;/code&amp;gt; As &amp;lt;code&amp;gt;robot.turnLeft&amp;lt;/code&amp;gt; except that the robot turns 90° to the right. - &amp;lt;code&amp;gt;robot.turnAround()&amp;lt;/code&amp;gt; This is the same as calling &amp;lt;code&amp;gt;robot.turnRight&amp;lt;/code&amp;gt; twice. - &amp;lt;s&amp;gt;&amp;lt;code&amp;gt;robot.level(): number&amp;lt;/code&amp;gt;&amp;lt;/s&amp;gt; &#039;&#039;&#039;Deprecated since OC 1.3&#039;&#039;&#039; use &amp;lt;code&amp;gt;component.experience.level()&amp;lt;/code&amp;gt; instead (only available if the [[Experience Upgrade|experience upgrade]] is installed). Returns the current level of the robot, with the fractional part being the percentual progress towards the next level. For example, if this returns &amp;lt;code&amp;gt;1.5&amp;lt;/code&amp;gt;, then the robot is level one, and 50% towards achieving level two. - &amp;lt;code&amp;gt;robot.tankCount():number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;The number of tanks installed in the robot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.selectTank(tank)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Select the specified tank. This determines which tank most operations operate on.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.tankLevel([tank:number]):number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;The the current fluid level in the specified tank, or, if none is specified, the selected tank.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.tankSpace():number&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;The the remaining fluid capacity in the specified tank, or, if none is specified, the selected tank.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.compareFluidTo(tank:number):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Tests whether the fluid in the selected tank is the same as in the specified tank.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.transferFluidTo(tank:number[, count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Transfers the specified amount of fluid from the selected tank into the specified tank. If no volume is specified, tries to transfer 1000 mB.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.compareFluid():boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Tests whether the fluid in the selected tank is the same as in the world or the tank in front of the robot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.compareFluidUp():boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Like compareFluid, but operates on the block above the robot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.compareFluidDown():boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Like compareFluid, but operates on the block below the robot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.drain([count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Extracts the specified amount of fluid from the world or the tank in front of the robot. When no amount is specified, will try to drain 1000 mB. When the drained fluid is in the world and it cannot be fully stored in the selected tank, the operation fails, i.e. no fluid is lost.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.drainUp([count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Like drain, but operates on the block above the robot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.drainDown([count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Like drain, but operates on the block below the robot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.fill([count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Injects the specified amount of fluid from the selected tank into the the world or the tank in front of the robot. When no amount is specified, will try to eject 1000 mB. When there is not enough fluid to fill a block, or the target tank does not have enough room, the operation fails, i.e. no fluid is lost.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.fillUp([count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Like fill, but operates on the block above the robot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;robot.fillDown([count:number]):boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Like fill, but operates on the block below the robot.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:API/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Crafting_Upgrade&amp;diff=1784</id>
		<title>Crafting Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Crafting_Upgrade&amp;diff=1784"/>
		<updated>2026-09-10T22:07:21Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Fix links to Inventory Controller Upgrade&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Crafting Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:crafting_upgrade.png|128px]]&lt;br /&gt;
&lt;br /&gt;
When activated the robot considers the top-left area the crafting area and will attempt to craft any layed-out crafting recipe in that area. The requirements for a successful crafting attempt are exactly the same as if you would attempt to craft the item in a crafting table.&lt;br /&gt;
&lt;br /&gt;
[[File:crafting_area.png|Crafting area]]&lt;br /&gt;
&#039;&#039;(free slots are the crafting area)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended (but not required) to use this upgrade in combination with an [[Inventory Controller Upgrade|Inventory Controller Upgrade]]. It allows to read the names and types of items and therefore makes it a lot easier to find the required crafting resources.&lt;br /&gt;
&lt;br /&gt;
The Crafting upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 1 x Crafting Table&lt;br /&gt;
* 4 x Iron Ingot&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 1)]]&lt;br /&gt;
* 1 x [[Item/materials|Printed Circuit Board]]&lt;br /&gt;
&lt;br /&gt;
[[File:craftupgrade.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;crafting&amp;lt;/code&amp;gt;&lt;br /&gt;
{{APICallback|name=craft|signature=([count: number]): boolean|description=&lt;br /&gt;
Crafts up to &amp;lt;code&amp;gt;count&amp;lt;/code&amp;gt; numbers or a full stack. In any case the robot will never craft more than one full stack of crafting result items at once. Returns &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if at least one item was crafted, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise.&lt;br /&gt;
&lt;br /&gt;
Note that if you specify an amount of items to be crafted that is lower than the minimum resulting stack size (i.E. order to craft 1 stick, but minimum result stack size is 4), then nothing will be crafted, however this will still return true.&lt;br /&gt;
&lt;br /&gt;
If successful the crafting result will be placed in the currently selected slot, or (if occupied by something else) will be placed into the next slot containing similar items or in the next free slot. This can be one of the slots of the crafting area, which would make it impossible to craft the same item again until that area is cleared.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Database_Upgrade&amp;diff=1783</id>
		<title>Database Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Database_Upgrade&amp;diff=1783"/>
		<updated>2026-09-10T22:07:19Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Fix links to Inventory Controller Upgrade&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
[[File:upgradedatabase0.png|128px]][[File:upgradedatabase1.png|128px]][[File:upgradedatabase2.png|128px]]&lt;br /&gt;
&lt;br /&gt;
Provides the &amp;lt;code&amp;gt;database&amp;lt;/code&amp;gt; component.&lt;br /&gt;
&lt;br /&gt;
This upgrade can be used to store item stack information. It can be configured by open its GUI by right clicking holding it in your hand and placing items in it (no actual items are stored in the item, clicking with an item in the grid will store a &amp;quot;ghost&amp;quot; stack). Alternatively, a few components allow configuring the database programmatically, such as the [[Inventory Controller Upgrade|Inventory Controller Upgrade]] and the [[Geolyzer|Geolyzer]].&lt;br /&gt;
&lt;br /&gt;
The Database Upgrade (Tier 1) is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Iron Ingot&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 1)]]&lt;br /&gt;
* 1 x [[Item/hard disk drive|Hard Disk Drive (Tier 1)]]&lt;br /&gt;
* 1 x [[Item/analyzer|Analyzer]]&lt;br /&gt;
* 1 x [[Item/materials|Printed Circuit Board]]&lt;br /&gt;
&lt;br /&gt;
[[File:t1database.png|200px]]&lt;br /&gt;
&lt;br /&gt;
The Database Upgrade (Tier 2) is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Iron Ingot&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 2)]]&lt;br /&gt;
* 1 x [[Item/hard disk drive|Hard Disk Drive (Tier 2)]]&lt;br /&gt;
* 1 x [[Item/analyzer|Analyzer]]&lt;br /&gt;
* 1 x [[Item/materials|Printed Circuit Board]]&lt;br /&gt;
&lt;br /&gt;
[[File:t2database.png|200px]]&lt;br /&gt;
&lt;br /&gt;
The Database Upgrade (Tier 3) is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Iron Ingot&lt;br /&gt;
* 2 x [[Item/materials|Microchip (Tier 3)]]&lt;br /&gt;
* 1 x [[Item/hard disk drive|Hard Disk Drive (Tier 3)]]&lt;br /&gt;
* 1 x [[Item/analyzer|Analyzer]]&lt;br /&gt;
* 1 x [[Item/materials|Printed Circuit Board]]&lt;br /&gt;
&lt;br /&gt;
[[File:t3database.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;database&amp;lt;/code&amp;gt;.&lt;br /&gt;
{{APICallback|name=get|signature=(slot:number):table|description=&lt;br /&gt;
Get the representation of the item stack stored in the specified slot.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=computeHash|signature=(slot:number):string|description=&lt;br /&gt;
Computes a hash value for the item stack in the specified slot. This value is guaranteed to be the same for identical item stacks, allowing comparison of item stacks across a network (by comparing the hash values).&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=indexOf|signature=(hash:string):number|description=&lt;br /&gt;
Get the index of an item stack with the specified hash. Returns a negative value if no such stack was found.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=clear|signature=(slot:number):boolean|description=&lt;br /&gt;
Clears the specified slot. Returns true if there was something in the slot before.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=copy|signature=(fromSlot:number, toSlot:number[, address:string]):boolean|description=&lt;br /&gt;
Copies an entry to another slot, optionally to another database. Returns true if something was overwritten.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=clone|signature=(address:string):number|description=&lt;br /&gt;
Copies the data stored in this database to another database with the specified address.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local component = require(&amp;quot;component&amp;quot;)&lt;br /&gt;
local sides = require(&amp;quot;sides&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local db = component.database -- primary database component&lt;br /&gt;
local invcontrol = component.inventory_controller -- primary inventory controller&lt;br /&gt;
&lt;br /&gt;
-- define slot numbers&lt;br /&gt;
dbSlot = 1 invSlot = 1&lt;br /&gt;
&lt;br /&gt;
-- compare item inside remote inventory to item in first slot of database&lt;br /&gt;
if db.get(dbSlot).label == invcontrol.getStackInSlot(sides.north, invSlot).label then&lt;br /&gt;
  -- items match, do stuff with it.&lt;br /&gt;
else&lt;br /&gt;
  -- items don&#039;t match, do nothing, or do something else.&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1781</id>
		<title>Item/contents</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Item/contents&amp;diff=1781"/>
		<updated>2026-09-10T22:07:18Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: Fix links to Inventory Controller Upgrade&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;oc-contents-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Items&lt;br /&gt;
|-&lt;br /&gt;
! Components&lt;br /&gt;
| [[Data Card]] - [[Debug Card|Debug Card]] - [[Item/graphics card|Graphics Card]] - [[Internet Card|Internet Card]] - [[Item/linked card|Linked Card]] - [[Item/network card|Network Card]] - [[Item/redstone card|Redstone Card]] - [[Item/wireless network card|Wireless Network Card]]&lt;br /&gt;
|-&lt;br /&gt;
! Storage Devices&lt;br /&gt;
| [[Item/floppy disk|Floppy Disk]] - [[Item/EEPROM|EEPROM]] - [[Item/hard disk drive|Hard Disk Drive]] - [[Item/memory|Memory]]&lt;br /&gt;
|-&lt;br /&gt;
! Upgrades&lt;br /&gt;
| [[Item/angel upgrade|Angel Upgrade]] - [[Item/battery upgrade|Battery Upgrade]] - [[Chunkloader Upgrade]] - [[Database Upgrade]] - [[Experience Upgrade|Experience Upgrade]] - [[Generator Upgrade|Generator Upgrade]] - [[Item/hover upgrade|Hover Upgrade]] - [[Inventory Controller Upgrade|Inventory Controller Upgrade]] - [[Item/inventory upgrade|Inventory Upgrade]] - [[Item/leash upgrade|Leash Upgrade]] - [[Item/navigation upgrade|Navigation Upgrade]] - [[Item/piston upgrade|Piston Upgrade]] - [[Item/sign upgrade|Sign I/O Upgrade]] - [[Item/solar generator upgrade|Solar Generator Upgrade]] - [[Item/tank upgrade|Tank Upgrade]] - [[Item/tank controller upgrade|Tank Controller Upgrade]] - [[Item/tractor beam upgrade|Tractor Beam Upgrade]] - [[Item/world sensor upgrade|World Sensor Upgrade]]&lt;br /&gt;
|-&lt;br /&gt;
! Containers&lt;br /&gt;
| [[Item/card container|Card Container]] - [[Item/upgrade container|Upgrade Container]] - [[Block/disk drive|Disk Drive]]&lt;br /&gt;
|-&lt;br /&gt;
! Others&lt;br /&gt;
| [[Item/analyzer|Analyzer]] - [[Item/texture picker|Texture Picker]] - [[Item/component bus|Component Bus]] - [[Item/CPU|CPU]] - [[Item/apu|APU]] - [[Item/dronecase|Drone Case]] - [[Item/manual|Manual]] - [[Item/microcontrollercase|Microcontroller Case]] - [[Item/nanomachines|Nanomachines]] - [[Item/terminal|Remote Terminal]] - [[Item/terminal server|Terminal Server]] - [[Item/server|Server]] - [[Item/tablet case|Tablet Case]] - [[Item/tablet|Tablet]] - [[Item/materials|Crafting Materials]] - [[Item/ink cartridge|Ink Cartridge]] - [[Item/scrench|Scrench]] - [[Item/hover boots|Hover Boots]] - [[Item/grog|Grog]] - [[Item/loot disks|Loot Disks]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=Inventory_Controller_Upgrade&amp;diff=1780</id>
		<title>Inventory Controller Upgrade</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=Inventory_Controller_Upgrade&amp;diff=1780"/>
		<updated>2026-09-10T22:05:19Z</updated>

		<summary type="html">&lt;p&gt;SoraFirestorm: SoraFirestorm moved page Item/inventory controller upgrade to Inventory Controller Upgrade without leaving a redirect: Page has been unified&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inventory Controller Upgrade =&lt;br /&gt;
&lt;br /&gt;
[[File:inventory_controller_upgrade.png|128px]]&lt;br /&gt;
&lt;br /&gt;
This upgrade allows the robot to interact in a more controlled fashion with inventories in the world.&lt;br /&gt;
&lt;br /&gt;
Robots with this upgrade can read additional item information, suck and drop items from and into specific slots of an inventory and equip items on their own. This is particularly useful for interacting with advanced machines, where items have to go into specific slots, but can also come in handy for sorting systems or automated crafting.&lt;br /&gt;
&lt;br /&gt;
The Inventory Controller upgrade is crafted using the following recipe:&lt;br /&gt;
&lt;br /&gt;
* 4 x Gold Ingot&lt;br /&gt;
* 1 x Piston&lt;br /&gt;
* 1 x Dropper&lt;br /&gt;
* 1 x [[Item/analyzer|Analyzer]]&lt;br /&gt;
* 1 x [[Item/materials|Microchip (Tier 2)]]&lt;br /&gt;
* 1 x [[Item/materials|Printed Circuit Board]]&lt;br /&gt;
&lt;br /&gt;
[[File:invcontroller.png|200px]]&lt;br /&gt;
&lt;br /&gt;
= Component API =&lt;br /&gt;
Component name: &amp;lt;code&amp;gt;inventory_controller&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Callbacks:&lt;br /&gt;
{{APICallback|name=getInventorySize|signature=(side: number): number or nil[, string]|description=&lt;br /&gt;
Returns the size of the inventory at the specified side. &#039;&#039;&#039;side&#039;&#039;&#039; - must be a valid side. &#039;&#039;&#039;Returns:&#039;&#039;&#039; the size of the inventory, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; followed by a description why this function failed (usually &amp;lt;code&amp;gt;no inventory&amp;lt;/code&amp;gt;).&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getStackInSlot|signature=(side:number, slot:number):table|description=&lt;br /&gt;
Returns a table describing the item in the specified slot or nil. Deprecated for getting info about robot&#039;s own inventory, see &amp;lt;code&amp;gt;getStackInInternalSlot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;side&#039;&#039;&#039; - must be a valid side.&lt;br /&gt;
&#039;&#039;&#039;slot&#039;&#039;&#039; - the slot to analyze. This does not check the inventory size and will consider slots outside the inventory bounds to be empty.&lt;br /&gt;
&#039;&#039;&#039;Returns:&#039;&#039;&#039; &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if the slot was empty (or outside the inventory&#039;s bounds), a table otherwise with the following information about the item in that slot:&lt;br /&gt;
* &#039;&#039;&#039;damage&#039;&#039;&#039;:number - the current damage value of the item.&lt;br /&gt;
* &#039;&#039;&#039;maxDamage&#039;&#039;&#039;:number - the maximum damage this item can have before it breaks.&lt;br /&gt;
* &#039;&#039;&#039;size&#039;&#039;&#039;:number - the current stack size of the item.&lt;br /&gt;
* &#039;&#039;&#039;maxSize&#039;&#039;&#039;:number - the maximum stack size of this item.&lt;br /&gt;
* &#039;&#039;&#039;id&#039;&#039;&#039;:number - the Minecraft id of the item. Note that this field is only included if &amp;lt;code&amp;gt;insertIdsInConverters=true&amp;lt;/code&amp;gt; in the configs, and can vary between servers!&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039;:string - the &#039;&#039;&#039;untranslated&#039;&#039;&#039; item name, which is an internal Minecraft value like &amp;lt;code&amp;gt;oc:item.FloppyDisk&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;label&#039;&#039;&#039;:string - the &#039;&#039;&#039;translated&#039;&#039;&#039; item name&lt;br /&gt;
* &#039;&#039;&#039;hasTag&#039;&#039;&#039;:boolean - whether or not the item has an NBT tag associated with it.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getStackInInternalSlot|signature=(slot:number):table|description=&lt;br /&gt;
Gets Itemstack description of item in specified or selected slot (if no input provided) of robot inventory.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=dropIntoSlot|signature=(side:number, slot:number[, count:number]):boolean[, string]|description=&lt;br /&gt;
Puts up to count items from the currently selected slot into the specified slot of the inventory at the specified side. &#039;&#039;&#039;side&#039;&#039;&#039; - a valid side. &#039;&#039;&#039;slot&#039;&#039;&#039; - the slot to drop the item into. &#039;&#039;&#039;count&#039;&#039;&#039; - how many items to transfer. &#039;&#039;&#039;Returns:&#039;&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if at least one item was moved, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and a secondary result that describes the error otherwise. Note that the robot cannot drop items into it&#039;s own inventory, attempting to do so will cause this to throw an error. You need to use &amp;lt;code&amp;gt;robot.transferTo&amp;lt;/code&amp;gt; from the [[API/robot|Robot API]] to do so.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=suckFromSlot|signature=(side:number, slot:number[, count:number]):boolean|description=&lt;br /&gt;
Takes up to count items from the specified slot of the inventory at the specified side and puts them into the currently selected slot. &#039;&#039;&#039;side&#039;&#039;&#039; - a valid side. &#039;&#039;&#039;slot&#039;&#039;&#039; - the slot to take the item from. &#039;&#039;&#039;count&#039;&#039;&#039; - how many items to transfer. &#039;&#039;&#039;Returns:&#039;&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if at least one item was moved, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise. If the currently selected slot is occupied, then the items will be stacked with similar items in the robot&#039;s inventory or moved to the next free slot if available. If no slot is available this operation will fail. Note that the robot cannot suck items from it&#039;s own inventory, attempting to do so will cause this to throw an error. You need to use &amp;lt;code&amp;gt;robot.transferTo&amp;lt;/code&amp;gt; from the [[API/robot|Robot API]] to do so.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=equip|signature=():boolean|description=&lt;br /&gt;
Swaps the content of the robot&#039;s tool slot with the content of the currently selected inventory slot. &#039;&#039;&#039;Returns:&#039;&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the items were swapped, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise. This operation usually succeeds. Note that you can put any kind of item into the robot&#039;s tool slot, not only tools, even items that the robot cannot use at all.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=store|signature=(side:number, slot:number, dbAddress:string, dbSlot:number):boolean|description=&lt;br /&gt;
Stores the Itemstack description of the item from the specified slot in an inventory on the specified side, into a specified database slot with the specified address.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=storeInternal|signature=(slot:number, dbAddress:string, dBslot:number):boolean|description=&lt;br /&gt;
Stores Itemstack description of item in specified robot inventory slot into specified database slot with the specified database address.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=compareToDatabase|signature=(slot:number, dBaddress:string, dBslot:number):boolean|description=&lt;br /&gt;
Compare Itemstack description in specified slot with one in specified slot of a database with specified address. Returns **true** if items match.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=compareStacks|signature=(side:number, slotA:number, slotB:number):boolean|description=&lt;br /&gt;
Checks to see if Itemstack descriptions in specified slotA and slotB of inventory on specified side match. Returns **true** if identical.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getSlotMaxStackSize|signature=(side:number, slot:number):number|description=&lt;br /&gt;
Gets maximum number of items in specified slot in inventory on the specified side.&lt;br /&gt;
}}&lt;br /&gt;
{{APICallback|name=getSlotStackSize|signature=(side:number, slot:number):number|description=&lt;br /&gt;
Gets number of items in specified slot in inventory on the specified side.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
Print meta-info about the item in the position indicated by [[API/robot|slot]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local component = require(&amp;quot;component&amp;quot;)&lt;br /&gt;
local sides = require(&amp;quot;sides&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local slot = 1&lt;br /&gt;
local item = component.inventory_controller.getStackInInternalSlot(slot)&lt;br /&gt;
&lt;br /&gt;
if item then&lt;br /&gt;
  print(&amp;quot;Item name: &amp;quot;, item.name)&lt;br /&gt;
  print(&amp;quot;Item count: &amp;quot;, item.size)&lt;br /&gt;
  print(&amp;quot;Item damage: &amp;quot;, item.damage)&lt;br /&gt;
else&lt;br /&gt;
  print(&amp;quot;Slot &amp;quot; .. slot .. &amp;quot; is empty&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Contents =&lt;br /&gt;
&lt;br /&gt;
{{:Item/contents}}&lt;/div&gt;</summary>
		<author><name>SoraFirestorm</name></author>
	</entry>
</feed>