diff --git a/src/kernel/peripherals/DroneInterface.hx b/src/kernel/peripherals/DroneInterface.hx new file mode 100644 index 0000000..9331ef9 --- /dev/null +++ b/src/kernel/peripherals/DroneInterface.hx @@ -0,0 +1,491 @@ +package kernel.peripherals; + +import lib.Item; +import haxe.exceptions.NotImplementedException; + +/** + See https://github.com/MineMaarten/PneumaticCraft/blob/master/resources/assets/pneumaticcraft/wiki/en_US/block/droneInterface.txt +**/ +class DroneInterface implements IPeripheral { + public static inline final TYPE_NAME:String = "drone_interface"; + + private final addr:String; + + @:allow(kernel.peripherals) + private function new(addr:String) { + this.addr = addr; + } + + public function getAddr():String { + return this.addr; + } + + public function getType():String { + return DroneInterface.TYPE_NAME; + } + + /** + 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). + **/ + public function isConnectedToDrone():Bool { + throw new NotImplementedException(); + } + + /** + Returns the pressure of the connected Drone. + **/ + public function getDronePressure() { + throw new NotImplementedException(); + } + + /** + Returns a table of 3 double values containing the x,y and z position respectively of the Drone. + **/ + public function getDronePosition() { + throw new NotImplementedException(); + } + + /** + Stops the ComputerCraft piece in the Drone, and allows the Drone's program to proceed to the next puzzle piece. + **/ + public function exitPiece() { + throw new NotImplementedException(); + } + + /** + Returns a table of all the current selectable actions (like 'dig' or 'place'). + **/ + public function getAllActions() { + /* + pneumaticcraft:entity_attack + pneumaticcraft:dig + pneumaticcraft:harvest + pneumaticcraft:place + pneumaticcraft:block_right_click + pneumaticcraft:entity_right_click + pneumaticcraft:pickup_item + pneumaticcraft:drop_item + pneumaticcraft:void_item + pneumaticcraft:void_liquid + pneumaticcraft:inventory_export + pneumaticcraft:inventory_import + pneumaticcraft:liquid_export + pneumaticcraft:liquid_import + pneumaticcraft:entity_export + pneumaticcraft:entity_import + pneumaticcraft:rf_import + pneumaticcraft:rf_export + pneumaticcraft:goto + pneumaticcraft:teleport + pneumaticcraft:emit_redstone + pneumaticcraft:rename + pneumaticcraft:suicide + pneumaticcraft:crafting + pneumaticcraft:standby + pneumaticcraft:logistics + pneumaticcraft:edit_sign + pneumaticcraft:condition_redstone + pneumaticcraft:condition_light + pneumaticcraft:condition_item_inventory + pneumaticcraft:condition_block + pneumaticcraft:condition_liquid_inventory + pneumaticcraft:condition_pressure + pneumaticcraft:drone_condition_item + pneumaticcraft:drone_condition_liquid + pneumaticcraft:drone_condition_entity + pneumaticcraft:drone_condition_pressure + pneumaticcraft:drone_condition_upgrades + pneumaticcraft:condition_rf + pneumaticcraft:drone_condition_rf + pneumaticcraft:computer_control + */ + throw new NotImplementedException(); + } + + /** + Sets the place/dig order of the Drone. + **/ + public function setBlockOrder(order:String) { + throw new NotImplementedException(); + } + + /** + Returns a table of all the possible area types (filled, frame, sphere, ..). + **/ + public function getAreaTypes() { + throw new NotImplementedException(); + } + + /** + 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. + **/ + public function addArea(x:Int, y:Int, z:Int) { + throw new NotImplementedException(); + } + + /** + Removes an area from the current stored area (like blacklisting). + **/ + public function removeArea(x:Int, y:Int, z:Int) { + throw new NotImplementedException(); + } + + /** + Clears the current stored area. + **/ + public function clearArea() { + throw new NotImplementedException(); + } + + /** + Will show the current stored area using the area renderer you are used to. + **/ + public function showArea() { + throw new NotImplementedException(); + } + + /** + Will stop showing the area stored in the Drone. + **/ + public function hideArea() { + throw new NotImplementedException(); + } + + /** + 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). + **/ + public function addWhitelistItemFilter(item:Item, metadata:String, useMetadata:Bool, useNBT:Bool, useOreDictionary:Bool, useModSimilarity:Bool) { + throw new NotImplementedException(); + } + + /** + Like the addWhitelistItemFilter(...), but to blacklist items. + **/ + public function addBlacklistItemFilter(item:Item, metadata:String, useMetadata:Bool, useNBT:Bool, useOreDictionary:Bool, useModSimilarity:Bool) { + throw new NotImplementedException(); + } + + /** + Clears all the whitelisted item filters stored. + **/ + public function clearWhitelistItemFilter() { + throw new NotImplementedException(); + } + + /** + Clears all the blacklisted item filters stored. + **/ + public function clearBlacklistItemFilter() { + throw new NotImplementedException(); + } + + /** + Adds a text to the whitelisted texts. Used to specify a filter for the Entity Attack action for example. + **/ + public function addWhitelistText(text:String) { + throw new NotImplementedException(); + } + + /** + Adds a text to the blacklisted texts. Used to specify a filter for the Entity Attack action for example. + **/ + public function addBlacklistText(text:String) { + throw new NotImplementedException(); + } + + /** + Clears the stored whitelisted texts. + **/ + public function clearWhitelistText() { + throw new NotImplementedException(); + } + + /** + Clears the stored blacklisted texts. + **/ + public function clearBlacklistText() { + throw new NotImplementedException(); + } + + /** + 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. + **/ + public function addWhitelistLiquidFilter(liquidName:String) { + throw new NotImplementedException(); + } + + /** + Like the addWhitelistLiquidFilter(...), but to blacklist liquids. + **/ + public function addBlacklistLiquidFilter(liquidName:String) { + throw new NotImplementedException(); + } + + /** + Clears all the whitelisted liquid filters stored. + **/ + public function clearWhitelistLiquidFilter() { + throw new NotImplementedException(); + } + + /** + Clears all the blacklisted liquid filters stored. + **/ + public function clearBlacklistLiquidFilter() { + throw new NotImplementedException(); + } + + /** + Sets the strength the redstone will be emitting when the "emitRedstone" action would be set. + **/ + public function setEmittingRedstone(strength:Int) { + throw new NotImplementedException(); + } + + /** + Sets the name the Drone will be named to when the "rename" action would be set. + **/ + public function setRenameString(name:String) { + throw new NotImplementedException(); + } + + /** + When the "dropItem" action would be set, this determines whether or not + the item will be dropped with a random velocity, or straight down. + **/ + public function setDropStraight(to:Bool) { + throw new NotImplementedException(); + } + + /** + This says whether or not the Drone has a maximum of imported/exported/dropped pieces. + If true, also use setCount(). + **/ + public function setUseCount(count:Int) { + throw new NotImplementedException(); + } + + /** + This configures the maximum amount of imported/exported/dropped items, and also is the amount that's checked when doing a condition check. + **/ + public function setCount(count:Int) { + throw new NotImplementedException(); + } + + /** + Used in conditions only. When true, all checked blocks need to satisfy the condition requirements (>=10 etcetera). + **/ + public function setIsAndFunction(to:Bool) { + throw new NotImplementedException(); + } + + /** + 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(). + **/ + public function setOperator(op:String) { + throw new NotImplementedException(); + } + + /** + 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. + **/ + public function evaluateCondition():Bool { + throw new NotImplementedException(); + } + + /** + 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. + **/ + public function setSide(side:String, accessible:Bool) { + throw new NotImplementedException(); + } + + /** + Same as setSide(side: String, accessible: Bool), now in one function to set all sides at once (6x boolean). + **/ + public function setSides(down:Bool, up:Bool, north:Bool, south:Bool, east:Bool, west:Bool) { + throw new NotImplementedException(); + } + + /** + 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(). + **/ + public function setUseMaxActions(to:Bool) { + throw new NotImplementedException(); + } + + /** + 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. + **/ + public function setMaxActions(max:Int) { + throw new NotImplementedException(); + } + + /** + 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. + + TODO: args: , , ...(9x) + **/ + public function setCraftingGrid() { + throw new NotImplementedException(); + } + + /** + Only used in the right click command, this will set whether or not the fake player is sneaking while right clicking. + **/ + public function setSneaking(sneaking:Bool) { + throw new NotImplementedException(); + } + + /** + Only used in the Liquid Export command, when set to true the Drone will be allowed to place down fluid blocks. + **/ + public function setPlaceFluidBlocks(to:Bool) { + throw new NotImplementedException(); + } + + /** + Sets the[link{pneumaticcraft:progwidget/coordinateOperator}] 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. + + TODO: args + setVariable(, ) + setVariable(, ) + setVariable(, , , ) + **/ + public function setVariable(name:String, to:Dynamic) { + throw new NotImplementedException(); + } + + /** + Returns the value of the variable from this Drone (x, y and z). + It is possible to get global (#) and special variables ($) as well. + **/ + public function getVariable(name:String):Dynamic { + throw new NotImplementedException(); + } + + /** + Sets the text that's going to be set to Signs using the Edit Sign command. + + TODO: args , , ..., + **/ + public function setSignText(lines:Array) { + throw new NotImplementedException(); + } + + /** + String that represents the action. This should be one of the actions returned by getAllActions(). + **/ + public function setAction(action:String) { + throw new NotImplementedException(); + } + + /** + 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. + **/ + public function getAction():String { + throw new NotImplementedException(); + } + + /** + Stops the current running action. + **/ + public function abortAction() { + throw new NotImplementedException(); + } + + /** + 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, ..). + **/ + public function isActionDone():Bool { + throw new NotImplementedException(); + } + + /** + When the Drone was targeting an Entity (in the Entity Attack program), this will stop attacking that target. + **/ + public function forgetTarget() { + throw new NotImplementedException(); + } + + /** + 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. + **/ + public function getUpgrades(upgrade:String) { + throw new NotImplementedException(); + } + + /** + Unkown. Showed up in the inspect. + **/ + public function setCanSteal(canSteal:Bool) { + throw new NotImplementedException(); + } + + /** + Unkown. Showed up in the inspect. + **/ + public function setRequiresTool(requiresTool:Bool) { + throw new NotImplementedException(); + } + + /** + Unkown. Showed up in the inspect. + **/ + public function setCheckLineOfSight(check:Bool) { + throw new NotImplementedException(); + } + + /** + Unkown. Showed up in the inspect. + **/ + public function setRightClickType(to:String) { + throw new NotImplementedException(); + } + + /** + Unkown. Showed up in the inspect. + **/ + public function getDronePositionVec() { + throw new NotImplementedException(); + } + + /** + Unkown. Showed up in the inspect. + **/ + public function getOwnerID() { + throw new NotImplementedException(); + } + + /** + Unkown. Showed up in the inspect. + **/ + public function getOwnerName():String { + throw new NotImplementedException(); + } +}