[image{200, 20, 0.44,pneumaticcraft:textures/wiki/drone_interface.png}]
The Drone Interface is a block that only gets added when ComputerCraft is installed. It's a peripheral that's used to communicate with Drones. To do so, program a Drone with a ComputerCraft puzzle piece. You can combine it with other puzzle pieces. When the Drone gets to the ComputerCraft piece, it'll try to connect to an available Drone Interface located within the selected area. Available, because a Drone Interface can connect to one Drone at a time only. The following functions apply:

[prefix{l}]isConnectedToDrone() [prefix{}] 
Returns true if a Drone has connected with this Drone Interface (when the Drone's program has arrived at the ComputerCraft piece and made a connection).

[prefix{l}]getDronePressure() [prefix{}] 
Returns the pressure of the connected Drone.

[prefix{l}]getDronePosition() [prefix{}] 
Returns a table of 3 double values containing the x,y and z position respectively of the Drone.

[prefix{l}]exitPiece() [prefix{}] 
Stops the ComputerCraft piece in the Drone, and allows the Drone's program to proceed to the next puzzle piece.

[prefix{l}]getAllActions() [prefix{}] 
Returns a table of all the current selectable actions (like 'dig' or 'place').

[prefix{l}]setBlockOrder(<"closest"/"highToLow"/"lowToHigh">) [prefix{}]
Sets the place/dig order of the Drone.

[prefix{l}]getAreaTypes() [prefix{}] 
Returns a table of all the possible area types (filled, frame, sphere, ..).

[prefix{l}]addArea(<x>,<y>,<z>),
addArea(<x1>,<y1>,<z1>,<x2>,<y2>,<z2>,<areaType>) [prefix{}] 
Adds an area to the current stored area of the Drone. When using the latter method, x1, y1, and z1, represent the first point (which would be the first GPS Tool normally), and x2, y2, and z2 represent the second point.

[prefix{l}]removeArea(<x>,<y>,<z>),
removeArea(<x1>,<y1>,<z1>,<x2>,<y2>,<z2>,<areaType>) [prefix{}] 
Removes an area from the current stored area (like blacklisting).

[prefix{l}]clearArea() [prefix{}] 
Clears the current stored area.

[prefix{l}]showArea() [prefix{}] 
Will show the current stored area using the area renderer you are used to.
[prefix{l}]hideArea() [prefix{}] 
Will stop showing the area stored in the Drone.

[prefix{l}]addWhitelistItemFilter(<item/block name>, <damage/metadata>, <useMetadata>, <useNBT>, <useOreDictionary>, <useModSimilarity>) [prefix{}] 
Acts as you've put a Item Filter piece on the right of a piece (making it whitelisting). The item/block name is in Minecraft format, i.e. "minecraft:stone", or "pneumaticcraft:pressureTube". The 'useXXX' are all booleans that determine what filters will be used (same functionality as the check boxes in the Item Filter puzzle piece).

[prefix{l}]addBlacklistItemFilter(<item/block name>, <damage/metadata>, <useMetadata>, <useNBT>, <useOreDictionary>, <useModSimilarity>) [prefix{}] 
Like the addWhitelistItemFilter(...), but to blacklist items.

[prefix{l}]clearWhitelistItemFilter() [prefix{}] 
Clears all the whitelisted item filters stored.

[prefix{l}]clearBlacklistItemFilter() [prefix{}] 
Clears all the blacklisted item filters stored.

[prefix{l}]addWhitelistText(<text>) [prefix{}] 
Adds a text to the whitelisted texts. Used to specify a filter for the Entity Attack action for example.

[prefix{l}]addBlacklistText(<text>) [prefix{}] 
Adds a text to the blacklisted texts. Used to specify a filter for the Entity Attack action for example.

[prefix{l}]clearWhitelistText() [prefix{}] 
Clears the stored whitelisted texts.

[prefix{l}]clearBlacklistText() [prefix{}] 
Clears the stored blacklisted texts.

[prefix{l}]addWhitelistLiquidFilter(<liquid name>) [prefix{}] 
Acts as you've put a Liquid Filter piece on the right of a piece (making it whitelisting). You can either give it the 'registry name', or the localized name.

[prefix{l}]addBlacklistLiquidFilter(<liquid name>) [prefix{}] 
Like the addWhitelistLiquidFilter(...), but to blacklist liquids.

[prefix{l}]clearWhitelistLiquidFilter() [prefix{}] 
Clears all the whitelisted liquid filters stored.

[prefix{l}]clearBlacklistLiquidFilter() [prefix{}] 
Clears all the blacklisted liquid filters stored.

[prefix{l}]setEmittingRedstone(<strength>) [prefix{}] 
Sets the strength the redstone will be emitting when the "emitRedstone" action would be set.

[prefix{l}]setRenameString(<name>) [prefix{}] 
Sets the name the Drone will be named to when the "rename" action would be set.

[prefix{l}]setDropStraight(<true/false>) [prefix{}] 
When the "dropItem" action would be set, this determines whether or not the item will be dropped with a random velocity, or straight down.

[prefix{l}]setUseCount(<true/false>) [prefix{}] 
This says whether or not the Drone has a maximum of imported/exported/dropped pieces. If true, also use setCount().

[prefix{l}]setCount(<amount>) [prefix{}] 
This configures the maximum amount of imported/exported/dropped items, and also is the amount that's checked when doing a condition check.

[prefix{l}]setIsAndFunction(<true/false>) [prefix{}] 
Used in conditions only. When true, all checked blocks need to satisfy the condition requirements (>=10 etcetera).

[prefix{l}]setOperator(<">=" / "=">) [prefix{}] 
Used in conditions only. Says whether or not the condition is checking for an equal amount (=) or equal and higher than amount (>=). The amount can be set using setCount().

[prefix{l}]evaluateCondition() [prefix{}] 
Returns true/false. Used in conditions only. Will return true/false depending on whether or not the condition is satisfied. Drone Conditions can be checked right after setting 'setAction()'. Note that you need to wait until 'isActionDone' if you're dealing with a non Drone Condition.

[prefix{l}]setSide(<side>, <accessible>) [prefix{}] 
Sets the specific side to be accessible or not. Used in the Inventory Im- and Export actions to set which side of the inventory the Drone can access. It is also used for the Place action to determine how to place the block.

[prefix{l}]setSides(<down>, <up>, <north>, <south>, <east>, <west>) [prefix{}] 
Same as above, now in one function to set all sides at once (6x boolean).

[prefix{l}]setUseMaxActions(<true/false>) [prefix{}] 
This says whether or not the Drone has a maximum actions performed on a block at a time before the command is considered 'done'. Applies to the Place, Dig and Right-Click block program. If true, also use setMaxActions().

[prefix{l}]setMaxActions(<amount>) [prefix{}] 
This configures the maximum amount of actions performed on blocks before the command is considered 'done'. This applies to the Place, Dig an Right-Click block program. Be sure to also call setUseMaxActions(true) to enable usage of this.

[prefix{l}]setCraftingGrid(<item/block name>, <item/block name>, ...(9x)) [prefix{}] 
Sets up the crafting grid so when the Crafting instruction is called, this recipe will be used. You need to specify all 9 items making up the recipe. For empty spaces supply nil. The naming format is the same as for supplying item filters.

[prefix{l}]setSneaking(<true/false>) [prefix{}]
Only used in the right click command, this will set whether or not the fake player is sneaking while right clicking.

[prefix{l}]setPlaceFluidBlocks(<true/false>) [prefix{}]
Only used in the Liquid Export command, when set to true the Drone will be allowed to place down fluid blocks.

[prefix{l}]setVariable(<variable name>, <true/false>) [prefix{}]
[prefix{l}]setVariable(<variable name>, <x>) [prefix{}]
[prefix{l}]setVariable(<variable name>, <x>, <y>, <z>) [prefix{}]
Sets the[link{pneumaticcraft:progwidget/coordinate_operator}] variable[link{}] of this Drone. When passing 'true', the coordinate will be set to (1,0,0). Alternatively, false will be setting it to (0,0,0). It is possible to set global variables (#) as well.

[prefix{l}]getVariable(<variable name>) [prefix{}]
Returns the value of the variable from this Drone (x, y and z). It is possible to get global (#) and special variables ($) as well.

[prefix{l}]setSignText(<line1>, <line2>, ..., <lineN>) [prefix{}]
Sets the text that's going to be set to Signs using the Edit Sign command.

[prefix{l}]setRequiresTool(<true/false>) [prefix{}]
This configures whether or not the Drone should use a tool when executing the Dig or Harvest piece.

[prefix{l}]setAction(<action>) [prefix{}] 
String that represents the action. This should be one of the actions returned by getAllActions().

[prefix{l}]getAction() [prefix{}]
Returns a string that represents the last action set by 'setAction'. Will return nil when no action is set. Can be used to make sure to only call 'isActionDone()' when this method does not return nil.

[prefix{l}]abortAction() [prefix{}] 
Stops the current running action.

[prefix{l}]isActionDone() [prefix{}] 
Returns true if the current action is done (goto has arrived at the target location, inventory import can't import anymore, dig has dug every possible block, ..).

[prefix{l}]forgetTarget() [prefix{}] 
When the Drone was targeting an Entity (in the Entity Attack program), this will stop attacking that target.

[prefix{l}]getUpgrades(<upgrade>) [prefix{}] 
Will get the amount of inserted upgrades of the given type. This type is the index of the upgrade (in creative, or NEI), starting with 0. Or the metadata value when you use NEI. A Speed upgrade for example has an index of 5.

Anytime the Drone gets updated a ring will be shot out of the Drone Interface, indicating it was successful. The color of the ring is the same color as the puzzle piece it was associated with.