# Configuration file

##########################################################################################################
# basecosts
#--------------------------------------------------------------------------------------------------------#
# The base costs for all methods.
##########################################################################################################

basecosts {
    # canvas: function():table -- Get the 2D canvas for these glasses.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas#canvas(IModuleContainer)"=0

    # canvas3d: function():table -- Get the 3D canvas for these glasses.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas#canvas3d(IModuleContainer)"=0

    # clear: function() -- Remove all objects.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas#clear(ObjectGroup)"=0

    # remove: function() -- Remove this object from the canvas.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas#remove(BaseObject)"=0

    # addDot: function(position:table, [, color:number][, size:number]):table -- Create a new dot.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas2D#addDot(Group2D)"=0

    # addGroup: function(position:table):table -- Create a new object group.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas2D#addGroup(Group2D)"=0

    # addItem: function(position:table, item:string[, damage:int[, scale:number]]):table -- Create a item icon.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas2D#addItem(Group2D)"=0

    # addLine: function(start:table, end:table[, colour:int[, thickness:number]]):table -- Create a new line.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas2D#addLine(Group2D)"=0

    # addLines: function(points...:table, [, color:number[, thickness:number]]):table -- Create a new line loop, composed of many points.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas2D#addLines(Group2D)"=0

    # addPolygon: function(points...:table, [, color:number]):table -- Create a new polygon, composed of many points.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas2D#addPolygon(Group2D)"=0

    # addRectangle: function(x:number, y:number, width:number, height:number[, colour:int]):table -- Create a new rectangle.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas2D#addRectangle(Group2D)"=0

    # addText: function(position:table, contents:string[, colour:int[, size:number]]):table -- Create a new text object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas2D#addText(Group2D)"=0

    # addTriangle: function(p1:table, p2:table, p3:table[, colour:int]):table -- Create a new triangle, composed of three points.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas2D#addTriangle(Group2D)"=0

    # getSize: function():number, number -- Get the size of this canvas.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas2D#getSize(Frame2D)"=0

    # addBox: function(x:number, y:number, z:number[, width:number, height:number, depth:number][, color:number]):table -- Create a new box.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas3D#addBox(Group3D)"=0

    # addFrame: function(position:table):table -- Create a new frame to put 2d objects in.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas3D#addFrame(Group3D)"=0

    # addItem: function(position:table, item:string[, damage:int[, scale:number]]):table -- Create a item model.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas3D#addItem(Group3D)"=0

    # addLine: function(start:table, end:table[, thickness:number[, colour:int]]):table -- Create a new line.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas3D#addLine(Group3D)"=0

    # create: function([offset:table]):table -- Create a new 3D canvas centred relative to the current position.
    I:"org.squiddev.plethora.gameplay.modules.glasses.methods.MethodsCanvas3D#create(Origin3D)"=0

    # getAlpha: function():int -- Get the alpha for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.Colourable#getAlpha(Colourable)"=0

    # getColor: function():int -- Get the colour for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.Colourable#getColour(Colourable)"=0

    # setAlpha: function(alpha:int) -- Set the alpha for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.Colourable#setAlpha(Colourable)"=0

    # setColour: function(colour|r:int, [g:int, b:int], [alpha:int]):number -- Set the colour for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.Colourable#setColour(Colourable)"=0

    # getItem: function(): string, number -- Get the item and damage value for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.ItemObject#getItem(ItemObject)"=0

    # setItem: function(item:string[, damage:int]) -- Set the item and damage value for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.ItemObject#setItem(ItemObject)"=0

    # getScale: function():number -- Get the scale for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.Scalable#getScale(Scalable)"=0

    # setScale: function(scale:number) -- Set the scale for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.Scalable#setScale(Scalable)"=0

    # getLineHeight: function():int -- Get the line height for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.TextObject#getLineHeight(TextObject)"=0

    # getText: function():string -- Get the text for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.TextObject#getText(TextObject)"=0

    # hasShadow: function():boolean -- Get the shadow for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.TextObject#hasShadow(TextObject)"=0

    # setLineHeight: function(lineHeight:int) -- Set the line height for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.TextObject#setLineHeight(TextObject)"=0

    # setShadow: function(shadow:boolean) -- Set the shadow for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.TextObject#setShadow(TextObject)"=0

    # setText: function(contents:string) -- Set the text for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.TextObject#setText(TextObject)"=0

    # getPoint: function(idx:int):number, number -- Get the specified vertex of this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object2d.MultiPoint2D#getPoint(MultiPoint2D)"=0

    # setPoint: function(idx:int, x:number, y:number) -- Set the specified vertex of this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object2d.MultiPoint2D#setPoint(MultiPoint2D)"=0

    # getPointCount: function():int -- Get the number of verticies on this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object2d.MultiPointResizable2D#getPointCount(MultiPointResizable2D)"=0

    # insertPoint: function([idx:int, ]x:number, y:number) -- Add a specified vertex to this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object2d.MultiPointResizable2D#insertPoint(MultiPointResizable2D)"=0

    # removePoint: function(idx:int) -- Remove the specified vertex of this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object2d.MultiPointResizable2D#removePoint(MultiPointResizable2D)"=0

    # getPosition: function():number, number -- Get the position for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object2d.Positionable2D#getPosition(Positionable2D)"=0

    # setPosition: function(x:number, y:number) -- Set the position for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object2d.Positionable2D#setPosition(Positionable2D)"=0

    # getSize: function():number, number -- Get the size of this rectangle.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object2d.Rectangle#getSize(Rectangle)"=0

    # setSize: function(width:number, height:number) -- Set the size of this rectangle.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object2d.Rectangle#setSize(Rectangle)"=0

    # getSize: function():number, number, number -- Get the size of this box.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object3d.Box#getSize(Box)"=0

    # setSize: function(width:number, height:number, depth:number) -- Set the size of this box.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object3d.Box#setSize(Box)"=0

    # isDepthTested: function():boolean -- Determine whether depth testing is enabled for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object3d.DepthTestable#isDepthTested(DepthTestable)"=0

    # setDepthTested: function(depthTest:boolean) -- Set whether depth testing is enabled for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object3d.DepthTestable#setDepthTested(DepthTestable)"=0

    # getPoint: function(idx:int):number, number, number -- Get the specified vertex of this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object3d.MultiPoint3D#getPoint(MultiPoint3D)"=0

    # setPoint: function(idx:int, x:number, y:number, z:number) -- Set the specified vertex of this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object3d.MultiPoint3D#setPoint(MultiPoint3D)"=0

    # recenter: function([offset:table]) -- Recenter this canvas relative to the current position.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object3d.ObjectRoot3D#recenter(ObjectRoot3D)"=0

    # getPosition: function():number, number, number -- Get the position for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object3d.Positionable3D#getPosition(Positionable3D)"=0

    # setPosition: function(x:number, y:number, z:number) -- Set the position for this object.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object3d.Positionable3D#setPosition(Positionable3D)"=0

    # getRotation: function():nil|number, number, number -- Get the rotation for this object, or nil if it faces the player.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object3d.Rotatable3D#getRotation(Rotatable3D)"=0

    # setRotation: function([x:number, y:number, z:number]) -- Set the rotation for this object, passing nothing if it should face the player.
    I:"org.squiddev.plethora.gameplay.modules.glasses.objects.object3d.Rotatable3D#setRotation(Rotatable3D)"=0

    # capture: function(pattern:string) -- Capture all chat messages matching a Lua pattern, preventing them from being said.
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsChat#capture(IModuleContainer)"=0

    # clearCaptures: function() -- Remove all listeners added by capture().
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsChat#clearCaptures(IModuleContainer)"=0

    # say: function(message:string) -- Send a message to everyone
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsChat#say(IModuleContainer)"=0

    # tell: function(message:string) -- Send a message to yourself
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsChat#tell(IModuleContainer)"=0

    # uncapture: function(pattern:string):boolean -- Remove a capture added by capture(pattern).
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsChat#uncapture(IModuleContainer)"=0

    # capture: function(pattern:string) -- Capture all chat messages matching a Lua pattern, preventing them from being said.
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsChatCreative#capture(IModuleContainer)"=0

    # clearCaptures: function() -- Remove all listeners added by capture().
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsChatCreative#clearCaptures(IModuleContainer)"=0

    # say: function(message:string) -- Send a message to everyone
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsChatCreative#say(IModuleContainer)"=0

    # uncapture: function(pattern:string):boolean -- Remove a capture added by capture(pattern).
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsChatCreative#uncapture(IModuleContainer)"=0

    # getID: function():string -- Get this entity's UUID.
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsIntrospection#getID(IModuleContainer)"=0

    # getMetaOwner: function():table -- Get this entity's UUID.
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsIntrospection#getMetaOwner(IModuleContainer)"=0

    # getName: function():string -- Get this entity's name.
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsIntrospection#getName(IModuleContainer)"=0

    # fire: function(yaw:number, pitch:number, potency:number) -- Fire a laser in a set direction
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsLaser#fire"=0

    # getBlockMeta: function(x:int, y:int, z:int):table -- Get metadata about a nearby block
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsScanner#getBlockMeta(IModuleContainer)"=0

    # scan: function():table -- Scan all blocks in the vicinity
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsScanner#scan(IModuleContainer)"=0

    # getMetaByID: function(id:string):table|nil -- Find a nearby entity by UUID
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsSensor#getMetaByID(IModuleContainer)"=0

    # getMetaByName: function(name:string):table|nil -- Find a nearby entity by name
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsSensor#getMetaByName(IModuleContainer)"=0

    # sense: function():table -- Scan for entities in the vicinity
    I:"org.squiddev.plethora.gameplay.modules.methods.MethodsSensor#sense(IModuleContainer)"=0

    # getMetadata: function():table -- Get metadata about this object
    I:org.squiddev.plethora.integration.MethodMeta=0

    # getTransferLocations: function([location:string]):table -- Get a list of all available objects which can be transferred to or from
    I:org.squiddev.plethora.integration.MethodTransferLocations=0

    # filterModules: function(names:string...):table|nil -- Gets the methods which require these modules
    I:"org.squiddev.plethora.integration.MethodsCore#filterModules(IModuleContainer)"=0

    # getDocs: function([name: string]):string|table -- Get the documentation for all functions or the function specified. Errors if the function cannot be found.
    I:"org.squiddev.plethora.integration.MethodsCore#getDocs(IMethodCollection)"=0

    # hasModule: function(module:string):boolean -- Checks whether a module is available
    I:"org.squiddev.plethora.integration.MethodsCore#hasModule(IModuleContainer)"=0

    # listModules: function():table -- Lists all modules available
    I:"org.squiddev.plethora.integration.MethodsCore#listModules(IModuleContainer)"=0

    # getComponents: function():table -- Get the various items required for this task.
    I:"org.squiddev.plethora.integration.appliedenergistics.CraftingResult#getComponents(CraftingResult)"=0

    # getId: function():string -- Get the ID for this crafting task.
    I:"org.squiddev.plethora.integration.appliedenergistics.CraftingResult#getId(CraftingResult)"=0

    # isCanceled: function():boolean -- Check if this crafting task has been canceled.
    I:"org.squiddev.plethora.integration.appliedenergistics.CraftingResult#isCanceled(CraftingResult)"=0

    # isFinished: function():boolean -- Check if this crafting task has finished.
    I:"org.squiddev.plethora.integration.appliedenergistics.CraftingResult#isFinished(CraftingResult)"=0

    # status: function():string -- Get the status for this crafting task.
    I:"org.squiddev.plethora.integration.appliedenergistics.CraftingResult#status(CraftingResult)"=0

    # craft: function(quantity:int):table -- Craft this item, returning a reference to the crafting task.
    I:"org.squiddev.plethora.integration.appliedenergistics.MethodCraftItem#craft(IAEItemStack)"=0

    # export: function(toName:string[, limit:int[, toSlot:int]]):int -- Export this item from the AE network to an inventory. Returns the amount transferred.
    I:"org.squiddev.plethora.integration.appliedenergistics.MethodExportItem#export(IAEItemStack)"=0

    # findItem: function(item:string|table):table -- Search for an item in the network. You can specify the item as a string, with or without the damage value ('minecraft:stone' or 'minecraft:stone@0') or as a table with 'name', 'damage' and 'nbthash' fields. You must specify the 'name', but you can leave the other fields empty.
    I:"org.squiddev.plethora.integration.appliedenergistics.MethodsGrid#findItem(IGrid)"=0

    # findItems: function(item:string|table):table -- Search all items in the network. You can specify the item as a string, with or without the damage value ('minecraft:stone' or 'minecraft:stone@0') or as a table with 'name', 'damage' and 'nbthash' fields. You must specify the 'name', but you can leave the other fields empty.
    I:"org.squiddev.plethora.integration.appliedenergistics.MethodsGrid#findItems(IGrid)"=0

    # getCraftingCPUs: function():table -- List all crafting cpus in the network
    I:"org.squiddev.plethora.integration.appliedenergistics.MethodsGrid#getCraftingCPUs(IGrid)"=0

    # getNetworkEnergyStored: function():int -- Get the energy stored usage in this AE network
    I:"org.squiddev.plethora.integration.appliedenergistics.MethodsGrid#getNetworkEnergyStored(IGrid)"=0

    # getNetworkEnergyUsage: function():number -- Get the energy usage of this AE network
    I:"org.squiddev.plethora.integration.appliedenergistics.MethodsGrid#getNetworkEnergyUsage(IGrid)"=0

    # getNodeEnergyUsage: function():number -- Get the energy usage of this AE node
    I:"org.squiddev.plethora.integration.appliedenergistics.MethodsGrid#getNodeEnergyUsage(IGridBlock)"=0

    # listAvailableItems: function():table -- List all items which are stored in the network
    I:"org.squiddev.plethora.integration.appliedenergistics.MethodsGrid#listAvailableItems(IGrid)"=0

    # getAstralProgress: function():table -- Get this player's progress in Astral Sorcery
    I:"org.squiddev.plethora.integration.astralsorcery.MethodsAstralSorcery#getAstralProgress(IModuleContainer)"=0

    # getGateways: function():table -- Get a list of all Celestial Gateways, grouped by dimension
    I:"org.squiddev.plethora.integration.astralsorcery.MethodsAstralSorcery#getGateways(TileCelestialGateway)"=0

    # getBaubles: function():table -- Get this player's baubles inventory
    I:"org.squiddev.plethora.integration.baubles.MethodIntrospectionBaublesInventory#getBaubles(IModuleContainer)"=0

    # getSlottedPart: function(slot:string):table -- Get a reference to the part in the specified slot.
    I:"org.squiddev.plethora.integration.cbmp.MethodsMultipart#getSlottedPart(TileMultipart)"=0

    # getSlottedPartMeta: function(slot:string):table|nil -- Get the metadata of the part in the specified slot.
    I:"org.squiddev.plethora.integration.cbmp.MethodsMultipart#getSlottedPartMeta(TileMultipart)"=0

    # listParts: function():table -- Get a list of all parts in the multipart.
    I:"org.squiddev.plethora.integration.cbmp.MethodsMultipart#listParts(TileMultipart)"=0

    # listSlottedParts: function():table -- Get a lookup of slot to parts.
    I:"org.squiddev.plethora.integration.cbmp.MethodsMultipart#listSlottedParts(TileMultipart)"=0

    # getSpecies: function(name:string):table|nil -- Get a single chicken species
    I:"org.squiddev.plethora.integration.chickens.MethodsAnalyzer#getSpecies(IModuleContainer)"=0

    # getSpeciesList: function():table -- Get a list of all chicken species, with the species name as the index
    I:"org.squiddev.plethora.integration.chickens.MethodsAnalyzer#getSpeciesList(IModuleContainer)"=0

    # getInventory: function():table -- Get this turtle's inventory
    I:"org.squiddev.plethora.integration.computercraft.MethodsIntrospectionTurtle#getInventory(IModuleContainer)"=0

    # swing: function():boolean, string|nil -- Left click with this item. Returns the action taken.
    I:"org.squiddev.plethora.integration.computercraft.MethodsKineticTurtle#swing(IModuleContainer)"=0

    # use: function([duration:integer]):boolean, string|nil -- Right click with this item. The duration is in ticks, or 1/20th of a second.
    I:"org.squiddev.plethora.integration.computercraft.MethodsKineticTurtle#use(IModuleContainer)"=0

    # getMutationsList: function(root:string):table -- Get a list of all mutations in the given species root
    I:"org.squiddev.plethora.integration.forestry.MethodsAnalyzer#getMutationsList(IModuleContainer)"=0

    # getSpeciesList: function(root:string):table -- Get a list of all species in the given species root
    I:"org.squiddev.plethora.integration.forestry.MethodsAnalyzer#getSpeciesList(IModuleContainer)"=0

    # getSpeciesRoots: function():table -- Get a list of all species roots
    I:"org.squiddev.plethora.integration.forestry.MethodsAnalyzer#getSpeciesRoots(IModuleContainer)"=0

    # getDrone: function():table|nil -- Get the current drone for this bee housing.
    I:"org.squiddev.plethora.integration.forestry.MethodsBeeHousing#getDrone(IBeeHousing)"=0

    # getHumidity: function():string -- Get the temperature of this bee housing.
    I:"org.squiddev.plethora.integration.forestry.MethodsBeeHousing#getHumidity(IBeeHousing)"=0

    # getQueen: function():table|nil -- Get the current queen for this bee housing.
    I:"org.squiddev.plethora.integration.forestry.MethodsBeeHousing#getQueen(IBeeHousing)"=0

    # getTemperature: function():string -- Get the temperature of this bee housing.
    I:"org.squiddev.plethora.integration.forestry.MethodsBeeHousing#getTemperature(IBeeHousing)"=0

    # getErrors: function():table -- Get any errors preventing operation
    I:"org.squiddev.plethora.integration.forestry.MethodsErrorLogicSource#getErrors(IErrorLogicSource)"=0

    # getRFCapacity: function([side:string]):int -- The maximum amount of RF that can be stored
    I:"org.squiddev.plethora.integration.rf.MethodsEnergy#getRFCapacity(IEnergyHandler)"=0

    # getRFCapacity: function():int -- The maximum amount of RF that can be stored
    I:"org.squiddev.plethora.integration.rf.MethodsEnergy#getRFCapacity(ItemStack)"=0

    # getRFCapacityStored: function():int -- The maximum amount of RF that can be stored
    I:"org.squiddev.plethora.integration.rf.MethodsEnergy#getRFCapacityStored(IEnergyStorage)"=0

    # getRFStored: function([side:string]):int -- The amount of RF currently stored
    I:"org.squiddev.plethora.integration.rf.MethodsEnergy#getRFStored(IEnergyHandler)"=0

    # getRFStored: function():int -- The amount of RF currently stored
    I:"org.squiddev.plethora.integration.rf.MethodsEnergy#getRFStored(IEnergyStorage)"=0

    # getRFStored: function():int -- The amount of RF currently stored
    I:"org.squiddev.plethora.integration.rf.MethodsEnergy#getRFStored(ItemStack)"=0

    # getCapacity: function():int -- The maximum number of items in this drawer.
    I:"org.squiddev.plethora.integration.storagedrawers.MethodsIDrawer#getCapacity(IDrawer)"=0

    # getCount: function():int -- The number of items in this drawer.
    I:"org.squiddev.plethora.integration.storagedrawers.MethodsIDrawer#getCount(IDrawer)"=0

    # getItemMeta: function():table|nil -- The metadata of the item in this drawer.
    I:"org.squiddev.plethora.integration.storagedrawers.MethodsIDrawer#getItemMeta(IDrawer)"=0

    # getDrawer: function(slot:int):table|nil -- Return the drawer at this particular slot
    I:"org.squiddev.plethora.integration.storagedrawers.MethodsIDrawerGroup#getDrawer(IDrawerGroup)"=0

    # getDrawerCount: function():int -- Return the number of drawers inside this draw group
    I:"org.squiddev.plethora.integration.storagedrawers.MethodsIDrawerGroup#getDrawerCount(IDrawerGroup)"=0

    # getController: function():table|nil -- Get the controller for this smeltery component.
    I:"org.squiddev.plethora.integration.tconstruct.MethodsSmeltery#getController(TileSmelteryComponent)"=0

    # getFuels: function():table -- Get a list of all fuels currently used by the seared-bricks multiblock.
    I:"org.squiddev.plethora.integration.tconstruct.MethodsSmeltery#getFuels(TileHeatingStructureFuelTank)"=0

    # getMolten: function():table -- Get a list of all molten fluids within the smeltery.
    I:"org.squiddev.plethora.integration.tconstruct.MethodsSmeltery#getMolten(ISmelteryTankHandler)"=0

    # getTemperature: function():number -- Get the internal temperature of this structure.
    I:"org.squiddev.plethora.integration.tconstruct.MethodsSmeltery#getTemperature(TileHeatingStructureFuelTank)"=0

    # selectMolten: function(fluid: number|string) -- Select which fluid will be extracted by drains in the smeltery. One can specify a fluid name or an index in list of molten fluids.
    I:"org.squiddev.plethora.integration.tconstruct.MethodsSmeltery#selectMolten(ISmelteryTankHandler)"=0

    # getTanks: function([side:string]):table -- Get a list of all tanks on this side
    I:org.squiddev.plethora.integration.vanilla.method.MethodFluidHandler=0

    # consume: function() -- Consume one item from this stack
    I:org.squiddev.plethora.integration.vanilla.method.MethodItemConsume=0

    # setActive: function([active:boolean]) -- Set whether these elytra are active or not.
    I:org.squiddev.plethora.integration.vanilla.method.MethodItemElytraActivate=0

    # getCelestialAngle: function():number -- The angle the sun or moon lies at in degrees. 0 is directly overhead.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsClock#getCelestialAngle(IModuleContainer)"=0

    # getDay: function():integer -- The current day of this world
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsClock#getDay(IModuleContainer)"=0

    # getMoonPhase: function():int -- The current phase of the moon
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsClock#getMoonPhase(IModuleContainer)"=0

    # getTime: function():int -- The game time in ticks
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsClock#getTime(IModuleContainer)"=0

    # getBlockLight: function():int -- The light level from surrounding blocks.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsDaylightSensor#getBlockLight(IModuleContainer)"=0

    # getSkyLight: function():int -- The light level from the sun.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsDaylightSensor#getSkyLight(IModuleContainer)"=0

    # getWeather: function():string -- The weather in the current world.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsDaylightSensor#getWeather(IModuleContainer)"=0

    # hasSky: function():boolean -- Whether this world has a sky.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsDaylightSensor#hasSky(IModuleContainer)"=0

    # getEnergyCapacity: function():int -- The maximum amount of energy that can be stored
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsEnergyHandler#getEnergyCapacity(IEnergyStorage)"=0

    # getEnergyStored: function():int -- The amount of energy currently stored
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsEnergyHandler#getEnergyStored(IEnergyStorage)"=0

    # pullFluid: function(fromName:string[, limit:int[, fluid:string]]):int -- Pull fluid to this tank from another tank. Returns the amount transferred.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsFluidTransfer#pullFluid(IFluidHandler)"=0

    # pushFluid: function(toName:string[, limit:int], fluid:string):int -- Push fluid from this tank to another tank. Returns the amount transferred.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsFluidTransfer#pushFluid(IFluidHandler)"=0

    # getEnder: function():table -- Get this player's ender chest
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsIntrospectionEntity#getEnder(IModuleContainer)"=0

    # getEquipment: function():table -- Get this entity's held item and armor
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsIntrospectionEntity#getEquipment(IModuleContainer)"=0

    # getInventory: function():table -- Get this player's inventory
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsIntrospectionEntity#getInventory(IModuleContainer)"=0

    # getItem: function(slot:int):table|nil -- The item in the specified slot. The slot number starts from 1.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsInventory#getItem(IItemHandler)"=0

    # getItemMeta: function(slot:int):table|nil -- The metadata of the item in the specified slot. The slot number starts from 1.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsInventory#getItemMeta(IItemHandler)"=0

    # list: function():table -- List all items in this inventory
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsInventory#list(IItemHandler)"=0

    # size: function():int -- The size of the inventory
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsInventory#size(IItemHandler)"=0

    # pullItems: function(fromName:string, fromSlot:int[, limit:int[, toSlot:int]]):int -- Pull items to this inventory from another inventory. Returns the amount transferred.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsInventoryTransfer#pullItems(IItemHandler)"=0

    # pushItems: function(toName:string, fromSlot:int[, limit:int[, toSlot:int]]):int -- Push items from this inventory to another inventory. Returns the amount transferred.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsInventoryTransfer#pushItems(IItemHandler)"=0

    # drop: function(slot:int[, limit:int[, direction:string]]):int -- Drop an item on the ground. Returns the number of items dropped
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsInventoryWorld#drop(IItemHandler)"=0

    # drop: function([limit:int[, direction:string]]):int -- Drop an item on the ground. Returns the number of items dropped
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsInventoryWorld#drop(ItemSlot)"=0

    # suck: function([slot:int[, limit:int]]):int -- Suck an item from the ground
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsInventoryWorld#suck(IItemHandler)"=0

    # disableAI: function() -- Disable the AI of this entity. Their neural pathways will be inhibited preventing them thinking for themselves
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKinetic#disableAI(IModuleContainer)"=0

    # enableAI: function() -- Enable the AI of this entity.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKinetic#enableAI(IModuleContainer)"=0

    # isWalking: function():boolean -- Whether the entity is currently walking somewhere.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKinetic#isWalking(IModuleContainer)"=0

    # launch: function(yaw:number, pitch:number, power:number) -- Launch the entity in a set direction
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKinetic#launch"=0

    # walk: function(x:number, y:number, z:number):boolean, string|nil -- Walk to a coordinate
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKinetic#walk"=0

    # swing: function():boolean, string|nil -- Left click with this item. Returns the action taken.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKineticActions#swing(IModuleContainer)"=0

    # use: function([duration:integer], [hand:string]):boolean, string|nil -- Right click with this item using a particular hand ("left" or "right"). The duration is in ticks, or 1/20th of a second.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKineticActions#use(IModuleContainer)"=0

    # explode: function() -- Explode this creeper.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKineticEntity#explode(IModuleContainer)"=0

    # look: function(yaw:number, pitch:number) -- Look in a set direction
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKineticEntity#look(IModuleContainer)"=0

    # propel: function(velocity:number) -- Propel this minecart in along the track.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKineticEntity#propel"=0

    # shoot: function(yaw:number, pitch:number) -- Fire a fireball in the specified direction.
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKineticEntity#shootBlaze"=0

    # shoot: function(potency:number) -- Fire an arrow in the direction the skeleton is looking
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKineticEntity#shootSkeleton"=0

    # shoot: function(potency:number) -- Throw a potion in the direction the witch is looking
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKineticEntity#shootWitch"=0

    # teleport: function(x:number, y:number, z:number) -- Teleport to a position relative to the current one
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsKineticEntity#teleport"=0

    # playNote: function(instrument:string|number, pitch:number[, volume:number]) -- Plays a note block note
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsNoteblock#playNote(IModuleContainer)"=0

    # playSound: function(sound:string[, pitch:number][, volume:number]) -- Play a sound
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsNoteblock#playSound(IModuleContainer)"=0

    # getBrewTime: function():int -- Number of ticks the current potion has brewed for
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsVanillaTileEntities#getBrewTime(TileEntityBrewingStand)"=0

    # getBurnTime: function():int -- Number of ticks of burning the current fuel provides
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsVanillaTileEntities#getBurnTime(TileEntityFurnace)"=0

    # getCookTime: function():int -- Number of ticks the current item has cooked for
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsVanillaTileEntities#getCookTime(TileEntityFurnace)"=0

    # getRemainingBurnTime: function():int -- Number of ticks of fuel left
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsVanillaTileEntities#getRemainingBurnTime(TileEntityFurnace)"=0

    # getSignText: function():table -- Each line of text on this sign
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsVanillaTileEntities#getSignText(TileEntitySign)"=0

    # setSignText: function(lines...:string) -- Set the lines of text on this sign
    I:"org.squiddev.plethora.integration.vanilla.method.MethodsVanillaTileEntities#setSignText(TileEntitySign)"=0
}


##########################################################################################################
# blacklist
#--------------------------------------------------------------------------------------------------------#
# Blacklist various providers
##########################################################################################################

blacklist {
    # List of mods to block.
    #  IMPORTANT: This does not block wrapping a mod's peripherals, just disables
    #  custom mod specific integration.
    S:blacklistMods <
     >

    # List of modules to blacklist.
    S:blacklistModules <
     >

    # List of modules to blacklist from being mounted on a pocket computer.
    # 
    #  This includes all blacklisted modules.
    S:blacklistModulesPocket <
     >

    # List of modules to blacklist from being mounted from a tile.
    # 
    #  For instance, the note block tile exposes the minecraft:noteblock module, allowing
    #  you to use that module from the tile's peripheral, rather than through a manipulator.
    # 
    #  This includes all blacklisted modules.
    S:blacklistModulesTile <
     >

    # List of modules to blacklist from being mounted on a turtle.
    # 
    #  This includes all blacklisted modules.
    S:blacklistModulesTurtle <
     >

    # List of modules to blacklist from being mounted on a minecart or other vehicle.
    # 
    #  This includes all blacklisted modules.
    S:blacklistModulesVehicle <
     >

    # List of provider classes, packages or methods which are blacklisted.
    #  This will blacklist all converters, methods and transfer and meta providers
    #  matching a pattern.
    # 
    #  This only applies to classes registered through annotations and does not blacklist
    #  method builders.
    # 
    #  Valid forms:
    #  - "foo.bar" - All classes in package (note trailing period).
    #  - "foo.bar.Provider" - This class, all its members and nested classes
    #  - "foo.bar.Provider#method" - A particular method with a name
    S:blacklistProviders <
     >

    # List of tile entity classes or packages which will not be wrapped
    #  as peripherals. For example use "net.minecraft." to disable wrapping
    #  any vanilla peripheral. This does not blacklist subclasses.
    S:blacklistTileEntities <
     >
}


##########################################################################################################
# costsystem
#--------------------------------------------------------------------------------------------------------#
# Some methods have a particular cost: they
#  consume a set amount of energy from their owner.
#  This level regenerates over time.
# 
#  *Note:* These values only apply to the default handler.
#  Other mods may add custom handlers.
##########################################################################################################

costsystem {
    # Allow costs to go into the negative.
    #  Methods will fail when there is negative energy.
    #  This allows you to use costs higher than the allocated
    #  buffer and so have a more traditional rate-limiting system.
    B:allowNegative=false

    # Wait for the system to get sufficient energy instead of throwing
    #  an error.
    B:awaitRegen=true

    # The energy level all systems start at
    D:initial=100.0

    # The maximum energy level an item can have
    D:limit=100.0

    # The amount of energy regenerated each tick
    D:regen=10.0
}


##########################################################################################################
# testing
#--------------------------------------------------------------------------------------------------------#
# Various options for debugging and testing this mod
##########################################################################################################

testing {
    # Verify generated bytecode for generated methods.
    #  Only needed if you're developing new method builders.
    B:bytecodeVerify=false

    # Enable strict loading mode. This will ensure non-lazy
    #  loading of methods, and crash when an error is encountered
    #  rather than just logging.
    B:strict=false
}


