diff --git a/src/minecraft/buildcraft/api/tools/IToolWrench.java b/src/minecraft/buildcraft/api/tools/IToolWrench.java deleted file mode 100644 index 590b67bc8..000000000 --- a/src/minecraft/buildcraft/api/tools/IToolWrench.java +++ /dev/null @@ -1,32 +0,0 @@ -package buildcraft.api.tools; - -import net.minecraft.entity.player.EntityPlayer; - -/*** - * Implement this interface on subclasses of Item to have that item work as a wrench for buildcraft - */ -public interface IToolWrench { - - /*** - * Called to ensure that the wrench can be used. To get the ItemStack that is used, check player.inventory.getCurrentItem() - * - * @param player - * - The player doing the wrenching - * @param x - * ,y,z - The coordinates for the block being wrenched - * - * @return true if wrenching is allowed, false if not - */ - public boolean canWrench(EntityPlayer player, int x, int y, int z); - - /*** - * Callback after the wrench has been used. This can be used to decrease durability or for other purposes. To get the ItemStack that was used, check - * player.inventory.getCurrentItem() - * - * @param player - * - The player doing the wrenching - * @param x - * ,y,z - The coordinates of the block being wrenched - */ - public void wrenchUsed(EntityPlayer player, int x, int y, int z); -} \ No newline at end of file diff --git a/src/minecraft/dan200/computer/api/ComputerCraftAPI.java b/src/minecraft/dan200/computer/api/ComputerCraftAPI.java deleted file mode 100644 index 159dfe4a3..000000000 --- a/src/minecraft/dan200/computer/api/ComputerCraftAPI.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; -import java.lang.reflect.Method; - -/** - * The static entry point to the ComputerCraft API. - * Members in this class must be called after mod_ComputerCraft has been initialised, - * but may be called before it is fully loaded. - */ -public class ComputerCraftAPI -{ - /** - * Get the creative mode tab that ComputerCraft items can be found on. - * Use this to add your peripherals to ComputerCraft's tab. - */ - public static net.minecraft.creativetab.CreativeTabs getCreativeTab() - { - findCC(); - if (computerCraft_getCreativeTab != null) - { - try { - return (net.minecraft.creativetab.CreativeTabs)( computerCraft_getCreativeTab.invoke(null) ); - } catch (Exception e){ - // It failed - } - } - return null; - } - - /** - * Registers a peripheral handler for a TileEntity that you do not have access to. Only - * use this if you want to expose IPeripheral on a TileEntity from another mod. For your own - * mod, just implement IPeripheral on the TileEntity directly. - * @see IPeripheral - * @see IPeripheralHandler - */ - public static void registerExternalPeripheral( Class clazz, IPeripheralHandler handler ) - { - findCC(); - if (computerCraft_registerExternalPeripheral != null) - { - try { - computerCraft_registerExternalPeripheral.invoke(null, clazz, handler); - } catch (Exception e){ - // It failed - } - } - } - - // The functions below here are private, and are used to interface with the non-API ComputerCraft classes. - // Reflection is used here so you can develop your mod in MCP without decompiling ComputerCraft and including - // it in your solution. - - private static void findCC() - { - if( !ccSearched ) { - try { - computerCraft = Class.forName( "dan200.ComputerCraft" ); - computerCraft_getCreativeTab = findCCMethod( "getCreativeTab", new Class[] { } ); - computerCraft_registerExternalPeripheral = findCCMethod( "registerExternalPeripheral", new Class[] { - Class.class, IPeripheralHandler.class - } ); - } catch( Exception e ) { - System.out.println("ComputerCraftAPI: ComputerCraft not found."); - } finally { - ccSearched = true; - } - } - } - - private static Method findCCMethod( String name, Class[] args ) - { - try { - return computerCraft.getMethod( name, args ); - - } catch( NoSuchMethodException e ) { - System.out.println("ComputerCraftAPI: ComputerCraft method " + name + " not found."); - return null; - } - } - - private static boolean ccSearched = false; - private static Class computerCraft = null; - private static Method computerCraft_registerExternalPeripheral = null; - private static Method computerCraft_getCreativeTab = null; -} diff --git a/src/minecraft/dan200/computer/api/IComputerAccess.java b/src/minecraft/dan200/computer/api/IComputerAccess.java deleted file mode 100644 index f41908dc4..000000000 --- a/src/minecraft/dan200/computer/api/IComputerAccess.java +++ /dev/null @@ -1,126 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; - -/** - * The interface passed to peripherals by computers or turtles, providing methods - * that they can call. This should not be implemented by your classes. Do not interact - * with computers except via this interface. - */ -public interface IComputerAccess -{ - /** - * Creates a new numbered directory in a subPath of the users game save, and return that number. To be used with mountSaveDir.
- * For example: n = createNewSaveDir( "computer/cdrom" ), will create a new - * numbered folder in the "computer/cdrom" subdirectory of the users save file, and return that number. - * mountSaveDir( "computer/rom", n ) could then be used to mount that folder onto the computers directory - * structure, and the value n could be saved out and used again in future to give the peripheral - * persistant storage. - * @param subPath A relative file path from the users world save, where the directory should be located. - * @return The numeric represenation of the name of the folder created. Will be positive. - * @see #mountSaveDir(String, String, int, boolean, long) - */ - public int createNewSaveDir( String subPath ); - - /** - * Mounts a directory into the computers file system, from a real directory a subPath of the users game save, - * with a numerical name. To be used with createNewSaveDir.
- * For example: n = createNewSaveDir( "computer/cdrom" ), will create a new - * numbered folder in the "computer/cdrom" subdirectory of the users save file, and return that number. - * mountSaveDir( "computer/rom", n ) could then be used to mount that folder onto the computers directory - * structure, and the value n can be saved out by the peripheral and used again, to give the peripheral - * persistant storage.
- * When a directory is mounted, it will appear in the computers file system, and the user will be - * able to use file operation to read from and write to the directory (unless readOnly, then only writes will be allowed). - * @param desiredLocation The desired location in the computers file system where you would like the directory to appear. - * If this location already exists, a number will be appended until a free name is found, and the - * actual location will be returned. eg: "cdrom" can become "cdrom2" if two peripherals attempt to - * mount "cdrom", or a "cdrom" folder already exists. - * @param subPath The real relative file path from the users world save, where the directory to mount can be located. - * @param id The numerical name of the folder to mount from the subPath: ex: mountSaveDir( "cdrom", "computer/cdrom", 7 ) - * will mount the directory "computer/cdrom/7". Use createNewSaveDir to obtain a unique directory id. - * @param readOnly Whether the computer will be disallowed from making changes to the mounted directory and modifing or creating files therin. - * @param spaceLimit The size limit of the mount, in bytes. Specify 0 to have unlimited capacity. - * @return The location in the computers file system where the directory was mounted. This may differ from "desiredLocation", so the - * return value should be kept track of so the folder can be unmounted later. - * @see #createNewSaveDir(String) - * @see #mountFixedDir(String, String, boolean, long) - * @see #unmount(String) - */ - public String mountSaveDir( String desiredLocation, String subPath, int id, boolean readOnly, long spaceLimit ); - - /** - * Mounts a directory into the computers file system, from a real directory in the Minecraft install folder.
- * For example: mountFixedDir( "stuff", "mods/mymod/lua/stuff", true ), will mount the "lua/stuff" folder from - * your mod's directory into the computers filesystem at the location "stuff", with readonly permission, giving the - * computer access to those files.
- * When a directory is mounted, it will appear in the computers file system, and the user will be - * able to use file operation to read from and write to the directory (unless readOnly, then only writes will be allowed).
- * mountFixedDir can also be used to mount files, for example: mountFixedDir( "rom/apis/myapi", "mods/mymod/lua/myapi.lua", true ) can - * be used to have the peripheral install an API onto the computer it attaches to. - * @param desiredLocation The desired location in the computers file system where you would like the directory to appear. - * If this location already exists, a number will be appended until a free name is found, and the - * actual location will be returned. eg: "cdrom" can become "cdrom2" if two peripherals attempt to - * mount "cdrom", or a "cdrom" folder already exists. - * @param subPath The real relative file path from the minecraft install root, where the directory to mount can be located. - * @param readOnly Whether the computer will be disallowed from making changes to the mounted directory and modifing or creating files therin. - * @param spaceLimit The size limit of the mount, in bytes. Specify 0 to have unlimited capacity. - * @return The location in the computers file system where the directory was mounted. This may differ from "desiredLocation", so the - * return value should be kept track of so the folder can be unmounted later. - * @see #mountSaveDir(String, String, int, boolean, long) - * @see #unmount(String) - */ - public String mountFixedDir( String desiredLocation, String path, boolean readOnly, long spaceLimit ); - - /** - * Unmounts a directory previously mounted onto the computers file system by mountSaveDir or mountFixedDir.
- * When a directory is unmounted, it will disappear from the computers file system, and the user will no longer be able to - * access it. All directories mounted by a mountFixedDir or mountSaveDir are automatically unmounted when the peripheral - * is attached if they have not been explicitly unmounted. - * @param location The desired location in the computers file system of the directory to unmount. - * This must be the location of a directory previously mounted by mountFixedDir() or mountSaveDir(), as - * indicated by their return value. - * @see #mountSaveDir(String, String, int, boolean, long) - * @see #mountFixedDir(String, String, boolean, long) - */ - public void unmount( String location ); - - /** - * Returns the numerical ID of this computer.
- * This is the same number obtained by calling os.getComputerID() or running the "id" program from lua, - * and is guarunteed unique. This number will be positive. - * @return The identifier. - */ - public int getID(); - - /** - * Causes an event to be raised on this computer, which the computer can respond to by calling - * os.pullEvent(). This can be used to notify the computer when things happen in the world or to - * this peripheral. - * @param event A string identifying the type of event that has occurred, this will be - * returned as the first value from os.pullEvent(). It is recommended that you - * you choose a name that is unique, and recognisable as originating from your - * peripheral. eg: If your peripheral type is "button", a suitable event would be - * "button_pressed". - * @param arguments In addition to a name, you may pass an array of extra arguments to the event, that will - * be supplied as extra return values to os.pullEvent(). Objects in the array will be converted - * to lua data types in the same fashion as the return values of IPeripheral.callMethod().
- * You may supply null to indicate that no arguments are to be supplied. - * @see IPeripheral#callMethod - */ - public void queueEvent( String event, Object[] arguments ); - - /** - * Get a string, unique to the computer, by which the computer refers to this peripheral. - * For directly attached peripherals this will be "left","right","front","back",etc, but - * for peripherals attached remotely it will be different. It is good practice to supply - * this string when raising events to the computer, so that the computer knows from - * which peripheral the event came. - * @return A string unique to the computer, but not globally. - */ - public String getAttachmentName(); -} diff --git a/src/minecraft/dan200/computer/api/IHostedPeripheral.java b/src/minecraft/dan200/computer/api/IHostedPeripheral.java deleted file mode 100644 index 68cf3fd77..000000000 --- a/src/minecraft/dan200/computer/api/IHostedPeripheral.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; -import dan200.computer.api.IPeripheral; - -/** - * A subclass of IPeripheral specifically for peripherals - * created by ITurtleUpgrade's of type Peripheral. When an - * IHostedPeripheral is created, its IPeripheral methods will be called - * just as if the peripheral was a seperate adjacent block in the world, - * and update() will be called once per tick. - * @see ITurtleUpgrade - */ -public interface IHostedPeripheral extends IPeripheral -{ - /** - * A method called on each hosted peripheral once per tick, on the main thread - * over the lifetime of the turtle or block. May be used to update the state - * of the peripheral, and may interact with IComputerAccess or ITurtleAccess - * however it likes at this time. - */ - public void update(); - - /** - * A method called whenever data is read from the Turtle's NBTTag, - * over the lifetime of the turtle. You should only use this for - * reading data you want to stay with the peripheral. - * @param nbttagcompound The peripheral's NBTTag - */ - public void readFromNBT( net.minecraft.nbt.NBTTagCompound nbttagcompound ); - - /** - * A method called whenever data is written to the Turtle's NBTTag, - * over the lifetime of the turtle. You should only use this for - * writing data you want to stay with the peripheral. - * @param nbttagcompound The peripheral's NBTTag. - * @param ID The turtle's ID. - */ - public void writeToNBT( net.minecraft.nbt.NBTTagCompound nbttagcompound ); -} diff --git a/src/minecraft/dan200/computer/api/IMedia.java b/src/minecraft/dan200/computer/api/IMedia.java deleted file mode 100644 index f4e5c9890..000000000 --- a/src/minecraft/dan200/computer/api/IMedia.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; - -/** - * TODO: Document me - */ -public interface IMedia -{ - public String getLabel( net.minecraft.item.ItemStack stack ); - public boolean setLabel( net.minecraft.item.ItemStack stack, String label ); - - public String getAudioTitle( net.minecraft.item.ItemStack stack ); - public String getAudioRecordName( net.minecraft.item.ItemStack stack ); - - public String mountData( net.minecraft.item.ItemStack stack, IComputerAccess computer ); -} diff --git a/src/minecraft/dan200/computer/api/IPeripheral.java b/src/minecraft/dan200/computer/api/IPeripheral.java deleted file mode 100644 index 4577589ea..000000000 --- a/src/minecraft/dan200/computer/api/IPeripheral.java +++ /dev/null @@ -1,104 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; - -/** - * The interface that defines a peripheral. This should be implemented by the - * TileEntity of any block that you wish to be interacted with by - * computer or turtle. - */ -public interface IPeripheral -{ - /** - * Should return a string that uniquely identifies this type of peripheral. - * This can be queried from lua by calling peripheral.getType() - * @return A string identifying the type of peripheral. - */ - public String getType(); - - /** - * Should return an array of strings that identify the methods that this - * peripheral exposes to Lua. This will be called once before each attachment, - * and should not change when called multiple times. - * @return An array of strings representing method names. - * @see #callMethod - */ - public String[] getMethodNames(); - - /** - * This is called when a lua program on an attached computer calls peripheral.call() with - * one of the methods exposed by getMethodNames().
- *
- * Be aware that this will be called from the ComputerCraft Lua thread, and must be thread-safe - * when interacting with minecraft objects. - * @param computer The interface to the computer that is making the call. Remember that multiple - * computers can be attached to a peripheral at once. - * @param method An integer identifying which of the methods from getMethodNames() the computer - * wishes to call. The integer indicates the index into the getMethodNames() table - * that corresponds to the string passed into peripheral.call() - * @param arguments An array of objects, representing the arguments passed into peripheral.call().
- * Lua values of type "string" will be represented by Object type String.
- * Lua values of type "number" will be represented by Object type Double.
- * Lua values of type "boolean" will be represented by Object type Boolean.
- * Lua values of any other type will be represented by a null object.
- * This array will be empty if no arguments are passed. - * @return An array of objects, representing values you wish to return to the lua program.
- * Integers, Doubles, Floats, Strings, Booleans and null be converted to their corresponding lua type.
- * All other types will be converted to nil.
- * You may return null to indicate no values should be returned. - * @throws Exception If you throw any exception from this function, a lua error will be raised with the - * same message as your exception. Use this to throw appropriate errors if the wrong - * arguments are supplied to your method. - * @see #getMethodNames - */ - public Object[] callMethod( IComputerAccess computer, int method, Object[] arguments ) throws Exception; - - /** - * Is called before the computer attempts to attach to the peripheral, and should return whether to allow - * the attachment. Use this to restrict the number of computers that can attach, or to limit attachments to - * certain world directions.
- * If true is returned, attach() will be called shortly afterwards, and the computer will be able to make method calls. - * If false is returned, attach() will not be called, and the peripheral will be invisible to the computer. - * @param side The world direction (0=bottom, 1=top, etc) that the computer lies relative to the peripheral. - * @return Whether to allow the attachment, as a boolean. - * @see #attach - */ - public boolean canAttachToSide( int side ); - - /** - * Is called when canAttachToSide has returned true, and a computer is attaching to the peripheral. - * This will occur when a peripheral is placed next to an active computer, when a computer is turned on next to a peripheral, - * or when a turtle travels into a square next to a peripheral. - * Between calls to attach() and detach(), the attached computer can make method calls on the peripheral using peripheral.call(). - * This method can be used to keep track of which computers are attached to the peripheral, or to take action when attachment - * occurs.
- *
- * Be aware that this will be called from the ComputerCraft Lua thread, and must be thread-safe - * when interacting with minecraft objects. - * @param computer The interface to the computer that is being attached. Remember that multiple - * computers can be attached to a peripheral at once. - * @see #canAttachToSide - * @see #detach - */ - public void attach( IComputerAccess computer ); - - /** - * Is called when a computer is detaching from the peripheral. - * This will occur when a computer shuts down, when the peripheral is removed while attached to computers, - * or when a turtle moves away from a square attached to a peripheral. - * This method can be used to keep track of which computers are attached to the peripheral, or to take action when detachment - * occurs.
- *
- * Be aware that this will be called from the ComputerCraft Lua thread, and must be thread-safe - * when interacting with minecraft objects. - * @param computer The interface to the computer that is being detached. Remember that multiple - * computers can be attached to a peripheral at once. - * @see #canAttachToSide - * @see #detach - */ - public void detach( IComputerAccess computer ); -} diff --git a/src/minecraft/dan200/computer/api/IPeripheralHandler.java b/src/minecraft/dan200/computer/api/IPeripheralHandler.java deleted file mode 100644 index 18487d854..000000000 --- a/src/minecraft/dan200/computer/api/IPeripheralHandler.java +++ /dev/null @@ -1,15 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; - -/** - * TODO: Document me - */ -public interface IPeripheralHandler -{ - public IHostedPeripheral getPeripheral( net.minecraft.tileentity.TileEntity tile ); -} diff --git a/src/minecraft/dan200/turtle/api/ITurtleAccess.java b/src/minecraft/dan200/turtle/api/ITurtleAccess.java deleted file mode 100644 index f996bf47e..000000000 --- a/src/minecraft/dan200/turtle/api/ITurtleAccess.java +++ /dev/null @@ -1,158 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; -import dan200.computer.api.*; - -/** - * The interface passed to upgrades by turtles, providing methods that they can call. - * This should not be implemented by your classes. Do not interact with turtles except via this interface and ITurtleUpgrade. - */ -public interface ITurtleAccess -{ - /** - * Returns the world in which the turtle resides. - * @return the world in which the turtle resides. - */ - public net.minecraft.world.World getWorld(); - - /** - * Returns a vector containing the integer block co-ordinates at which the turtle resides. - * @return a vector containing the integer block co-ordinates at which the turtle resides. - */ - public net.minecraft.util.Vec3 getPosition(); - - /** - * Returns a vector containing the co-ordinates at which the turtle is rendered. - * This will shift when the turtle is moving. - * @param f The subframe fraction - * @return a vector containing the integer block co-ordinates at which the turtle resides. - */ - public net.minecraft.util.Vec3 getVisualPosition( float f ); - - /** - * Returns the world direction the turtle is currently facing. - * @return the world direction the turtle is currently facing. - */ - public int getFacingDir(); - - /** - * Returns the size of the turtles inventory, in number of slots. This will currently always be 16. - * @return the size of the turtles inventory, in number of slots. This will currently always be 16. - */ - public int getInventorySize(); - - /** - * Returns which slot the turtle currently has selected in its inventory using turtle.select(). - * Unlike the 1-based lua representation, this will be between 0 and getInventorySize() - 1. - * @return which slot the turtle currently has selected in its inventory - */ - public int getSelectedSlot(); - - /** - * Returns the item stack that the turtle has in one of its inventory slots. - * @param index which inventory slot to retreive, should be between 0 and getInventorySize() - 1 - * @return the item stack that the turtle has in one of its inventory slots. May be null. - */ - public net.minecraft.item.ItemStack getSlotContents( int index ); - - /** - * Changes the item stack that the turtle has in one of its inventory slots. - * @param index which inventory slot to change, should be between 0 and getInventorySize() - 1 - * @param stack an item stack to put in the slot. May be null. - */ - public void setSlotContents( int index, net.minecraft.item.ItemStack stack ); - - /** - * Tries to store an item stack into the turtles current inventory, starting from the turtles - * currently selected inventory slot. - * @param stack The item stack to try and store. - * @return true if the stack was completely stored in the inventory, false if - * it was only partially stored, or could not fit at all. If false is returned - * and the stack was partially stored, the ItemStack passed into "stack" will now - * represent the stack of items that is left over. - */ - public boolean storeItemStack( net.minecraft.item.ItemStack stack ); - - /** - * Drops an item stack from the turtle onto the floor, or into an inventory is there is one - * adjacent to the turtle in the direction specified. - * @param stack The item stack to drop. - * @param dir The world direction to drop the item - * @return true if the stack was dropped, or completely stored in the adjacent inventory, false if - * it was only partially stored in the adjacent inventory, or could not fit at all. If false is returned - * and the stack was partially stored, the ItemStack passed into "stack" will now - * represent the stack of items that is left over. - */ - public boolean dropItemStack( net.minecraft.item.ItemStack stack, int dir ); - - /** - * "Deploys" an item stack in the direction specified. This simulates a player right clicking, and calls onItemUse() on the Item class. - * Will return true if some kind of deployment happened, and may modify the item stack. For block item types, this can be - * used to place blocks. Some kinds of items (such as shears when facing a sheep) may modify the turtles inventory during this call. - * @param stack The item stack to deploy - * @param dir The world direction to deploy the item - * @return true if the stack was deployed, false if it was not. - */ - public boolean deployWithItemStack( net.minecraft.item.ItemStack stack, int dir ); - - /** - * Tries to "attack" entities with an item stack in the direction specified. This simulates a player left clicking, but will - * not affect blocks. If an entity is attacked and killed during this call, its dropped items will end up in the turtles - * inventory. - * @param stack The item stack to attack with - * @param dir The world direction to attack with the item - * @return true if something was attacked, false if it was not - */ - public boolean attackWithItemStack( net.minecraft.item.ItemStack stack, int dir, float damageMultiplier ); - - /** - * Returns the current fuel level of the turtle, this is the same integer returned by turtle.getFuelLevel(), - * that decreases by 1 every time the turtle moves. Can be used to have your tool or peripheral require or supply - * fuel to the turtle. - * @return the fuel level - */ - public int getFuelLevel(); - - /** - * Tries to increase the fuel level of a turtle by burning an item stack. If the item passed in is a fuel source, fuel - * will increase and true will be returned. Otherwise, nothing will happen and false will be returned. - * @param stack The stack to try to refuel with - * @return Whether the turtle was refueled - */ - public boolean refuelWithItemStack( net.minecraft.item.ItemStack stack ); - - /** - * Removes some fuel from the turtles fuel supply. Negative numbers can be passed in to INCREASE the fuel level of the turtle. - * @return Whether the turtle was able to consume the ammount of fuel specified. Will return false if you supply a number - * greater than the current fuel level of the turtle. - */ - public boolean consumeFuel( int fuel ); - - /** - * Adds a custom command to the turtles command queue. Unlike peripheral methods, these custom commands will be executed - * on the main thread, so are guaranteed to be able to access Minecraft objects safely, and will be queued up - * with the turtles standard movement and tool commands. An issued command will return an unique integer, which will - * be supplied as a parameter to a "turtle_response" event issued to the turtle after the command has completed. Look at the - * lua source code for "rom/apis/turtle" for how to build a lua wrapper around this functionality. - * @param handler an object which will execute the custom command when its point in the queue is reached - * @return the unique command identifier described above - * @see ITurtleCommandHandler - */ - public int issueCommand( ITurtleCommandHandler handler ); - - /** - * Returns the upgrade on the specified side of the turtle, if there is one. - * @return the upgrade on the specified side of the turtle, if there is one. - */ - public ITurtleUpgrade getUpgrade( TurtleSide side ); - - /** - * Returns the peripheral created by the upgrade on the specified side of the turtle, if there is one. - * @return the peripheral created by the upgrade on the specified side of the turtle, if there is one. - */ - public IHostedPeripheral getPeripheral( TurtleSide side ); -} diff --git a/src/minecraft/dan200/turtle/api/ITurtleCommandHandler.java b/src/minecraft/dan200/turtle/api/ITurtleCommandHandler.java deleted file mode 100644 index 255d28e22..000000000 --- a/src/minecraft/dan200/turtle/api/ITurtleCommandHandler.java +++ /dev/null @@ -1,25 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; - -/** - * An interface for objects executing custom turtle commands, used with ITurtleAccess.issueCommand - * @see ITurtleAccess#issueCommand( ITurtleCommandHandler ) - */ -public interface ITurtleCommandHandler -{ - /** - * Will be called by the turtle on the main thread when it is time to execute the custom command. - * The handler should either perform the work of the command, and return true for success, or return - * false to indicate failure if the command cannot be executed at this time. - * @param turtle access to the turtle for whom the command was issued - * @return true for success, false for failure. If true is returned, the turtle will wait 0.4 seconds - * before executing the next command in its queue, as it does for the standard turtle commands. - * @see ITurtleAccess#issueCommand( ITurtleCommandHandler ) - */ - public boolean handleCommand( ITurtleAccess turtle ); -} diff --git a/src/minecraft/dan200/turtle/api/ITurtleUpgrade.java b/src/minecraft/dan200/turtle/api/ITurtleUpgrade.java deleted file mode 100644 index 3af5127b6..000000000 --- a/src/minecraft/dan200/turtle/api/ITurtleUpgrade.java +++ /dev/null @@ -1,92 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; -import net.minecraft.util.Icon; -import dan200.computer.api.*; - -/** - * The primary interface for defining an upgrade for Turtles. A turtle upgrade - * can either be a new tool, or a new peripheral. - * @see TurtleAPI#registerUpgrade( ITurtleUpgrade ) - */ -public interface ITurtleUpgrade -{ - /** - * Gets a unique numerical identifier representing this type of turtle upgrade. - * Like Minecraft block and item IDs, you should strive to make this number unique - * among all turtle upgrades that have been released for ComputerCraft. - * The ID must be in the range 64 to 255, as the ID is stored as an 8-bit value, - * and 0-64 is reserved for future use by ComputerCraft. The upgrade will - * fail registration if an already used ID is specified. - * @see TurtleAPI#registerUpgrade( ITurtleUpgrade ) - */ - public int getUpgradeID(); - - /** - * Return a String to describe this type of upgrade in turtle item names. - * Examples of built-in adjectives are "Wireless", "Mining" and "Crafty". - */ - public String getAdjective(); - - /** - * Return whether this upgrade adds a tool or a peripheral to the turtle. - * Currently, turtle crafting is restricted to one tool & one peripheral per turtle. - * @see TurtleUpgradeType for the differences between the two. - */ - public TurtleUpgradeType getType(); - - /** - * Return an item stack representing the type of item that a turtle must be crafted - * with to create a turtle which holds this upgrade. - * Currently, turtle crafting is restricted to one tool & one peripheral per turtle. - */ - public net.minecraft.item.ItemStack getCraftingItem(); - - /** - * Return whether this turtle upgrade is an easter egg, and should be attempted to be hidden - * from the creative mode inventory and recipe book plugins. - */ - public boolean isSecret(); - - /** - * Will only be called for Peripheral upgrades. Creates a peripheral for a turtle - * being placed using this upgrade. The peripheral created will be stored - * for the lifetime of the turtle, will have update() called once-per-tick, and will be - * attach'd detach'd and have methods called in the same manner as a Computer peripheral. - * @param turtle Access to the turtle that the peripheral is being created for. - * @param side Which side of the turtle (left or right) that the upgrade resides on. - * @returns The newly created peripheral. You may return null if this upgrade is a Tool - * and this method is not expected to be called. - */ - public IHostedPeripheral createPeripheral( ITurtleAccess turtle, TurtleSide side ); - - /** - * Will only be called for Tool upgrades. Called when turtle.dig() or turtle.attack() is called - * by the turtle, and the tool is required to do some work. - * @param turtle Access to the turtle that the tool resides on. - * @param side Which side of the turtle (left or right) the tool resides on. - * @param verb Which action (dig or attack) the turtle is being called on to perform. - * @param direction Which world direction the action should be performed in, relative to the turtles - * position. This will either be up, down, or the direction the turtle is facing, depending on - * whether dig, digUp or digDown was called. - * @return Whether the turtle was able to perform the action, and hence whether the turtle.dig() - * or turtle.attack() lua method should return true. If true is returned, the tool will perform - * a swinging animation. You may return false if this upgrade is a Peripheral - * and this method is not expected to be called. - */ - public boolean useTool( ITurtleAccess turtle, TurtleSide side, TurtleVerb verb, int direction ); - - /** - * Called to obtain the Icon to be used when rendering a turtle peripheral. Needs to be a "block" - * type Icon for now, as there is no way to determine which texture sheet an Icon is from by the - * Icon itself. - * @param turtle Access to the turtle that the peripheral resides on. - * @param side Which side of the turtle (left or right) the peripheral resides on. - * @return The Icon that you wish to be used to render your turtle peripheral. - */ - public Icon getIcon( ITurtleAccess turtle, TurtleSide side ); -} diff --git a/src/minecraft/dan200/turtle/api/TurtleAPI.java b/src/minecraft/dan200/turtle/api/TurtleAPI.java deleted file mode 100644 index 3e3c5c1f2..000000000 --- a/src/minecraft/dan200/turtle/api/TurtleAPI.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; -import java.lang.reflect.Method; - -/** - * The static entry point to the ComputerCraft Turtle Upgrade API. - * Members in this class must be called after mod_CCTurtle has been initialised, - * but may be called before it is fully loaded. - */ -public class TurtleAPI -{ - /** - * Registers a new turtle upgrade for use in ComputerCraft. After calling this, - * users should be able to craft Turtles with your new upgrade. It is recommended to call - * this during the load() method of your mod. - * @throws Exception if you try to register an upgrade with an already used or reserved upgradeID - * @see ITurtleUpgrade - */ - public static void registerUpgrade( ITurtleUpgrade upgrade ) - { - if( upgrade != null ) - { - findCCTurtle(); - if( ccTurtle_registerTurtleUpgrade != null ) - { - try { - ccTurtle_registerTurtleUpgrade.invoke( null, new Object[]{ upgrade } ); - } catch( Exception e ) { - // It failed - } - } - } - } - - // The functions below here are private, and are used to interface with the non-API ComputerCraft classes. - // Reflection is used here so you can develop your mod in MCP without decompiling ComputerCraft and including - // it in your solution. - - private static void findCCTurtle() - { - if( !ccTurtleSearched ) { - // Search for CCTurtle - try { - ccTurtle = Class.forName( "dan200.CCTurtle" ); - ccTurtle_registerTurtleUpgrade = findCCTurtleMethod( "registerTurtleUpgrade", new Class[] { - ITurtleUpgrade.class - } ); - - } catch( ClassNotFoundException e ) { - System.out.println("ComputerCraftAPI: CCTurtle not found."); - - } finally { - ccTurtleSearched = true; - - } - } - } - - private static Method findCCTurtleMethod( String name, Class[] args ) - { - try { - return ccTurtle.getMethod( name, args ); - - } catch( NoSuchMethodException e ) { - System.out.println("ComputerCraftAPI: CCTurtle method " + name + " not found."); - return null; - } - } - - private static boolean ccTurtleSearched = false; - private static Class ccTurtle = null; - private static Method ccTurtle_registerTurtleUpgrade = null; -} diff --git a/src/minecraft/dan200/turtle/api/TurtleSide.java b/src/minecraft/dan200/turtle/api/TurtleSide.java deleted file mode 100644 index 3459d7772..000000000 --- a/src/minecraft/dan200/turtle/api/TurtleSide.java +++ /dev/null @@ -1,23 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; - -/** - * An enum representing the two sides of the turtle that a turtle upgrade might reside. - */ -public enum TurtleSide -{ - /** - * The turtles left side (where the pickaxe usually is on a Wireless Mining Turtle) - */ - Left, - - /** - * The turtles right side (where the modem usually is on a Wireless Mining Turtle) - */ - Right, -} diff --git a/src/minecraft/dan200/turtle/api/TurtleUpgradeType.java b/src/minecraft/dan200/turtle/api/TurtleUpgradeType.java deleted file mode 100644 index a65fed8ac..000000000 --- a/src/minecraft/dan200/turtle/api/TurtleUpgradeType.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; - -/** - * An enum representing the two different types of upgrades that an ITurtleUpgrade - * implementation can add to a turtle. - * @see ITurtleUpgrade - */ -public enum TurtleUpgradeType -{ - /** - * A tool is rendered as an item on the side of the turtle, and responds to the turtle.dig() - * and turtle.attack() methods (Such as pickaxe or sword on Mining and Melee turtles). - */ - Tool, - - /** - * A peripheral adds a special peripheral which is attached to the side of the turtle, - * and can be interacted with the peripheral API (Such as the modem on Wireless Turtles). - */ - Peripheral, -} diff --git a/src/minecraft/dan200/turtle/api/TurtleVerb.java b/src/minecraft/dan200/turtle/api/TurtleVerb.java deleted file mode 100644 index a1b2531af..000000000 --- a/src/minecraft/dan200/turtle/api/TurtleVerb.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; - -/** - * An enum representing the two different actions that an ITurtleUpgrade of type - * Tool may be called on to perform by a turtle. - * @see ITurtleUpgrade - * @see ITurtleUpgrade#useTool - */ -public enum TurtleVerb -{ - /** - * The turtle called turtle.dig(), turtle.digUp() or turtle.digDown() - */ - Dig, - - /** - * The turtle called turtle.attack(), turtle.attackUp() or turtle.attackDown() - */ - Attack, -} diff --git a/src/minecraft/ic2/api/BaseSeed.java b/src/minecraft/ic2/api/BaseSeed.java deleted file mode 100644 index 6f4e57a54..000000000 --- a/src/minecraft/ic2/api/BaseSeed.java +++ /dev/null @@ -1,56 +0,0 @@ -package ic2.api; - -/** - * Base agriculture seed. Used to determine the state of a plant once it is planted from an item. - */ -public class BaseSeed { - /** - * Plant ID. - */ - public int id; - - /** - * Plant size. - */ - public int size; - - /** - * Plant growth stat. - */ - public int statGrowth; - - /** - * Plant gain stat. - */ - public int statGain; - - /** - * Plant resistance stat. - */ - public int statResistance; - - /** - * For internal usage only. - */ - public int stackSize; - - /** - * Create a BaseSeed object. - * - * @param id plant ID - * @param size plant size - * @param statGrowth plant growth stat - * @param statGain plant gain stat - * @param statResistance plant resistance stat - * @param stackSize for internal usage only - */ - public BaseSeed(int id, int size, int statGrowth, int statGain, int statResistance, int stackSize) { - super(); - this.id = id; - this.size = size; - this.statGrowth = statGrowth; - this.statGain = statGain; - this.statResistance = statResistance; - this.stackSize = stackSize; - } -} diff --git a/src/minecraft/ic2/api/CropCard.java b/src/minecraft/ic2/api/CropCard.java deleted file mode 100644 index 86aec1362..000000000 --- a/src/minecraft/ic2/api/CropCard.java +++ /dev/null @@ -1,475 +0,0 @@ -package ic2.api; - -import java.util.HashMap; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -/** - * Base agriculture crop. - * - * Any crop extending this can be registered using registerCrop to be added into the game. - */ -public abstract class CropCard -{ - /** - * Plant name. Will be displayed to the player. - * - * @return Plant name - */ - public abstract String name(); - - /** - * Your name here, will be shown in "Discovered by:" when analyzing seeds. - * - * @return Your name - */ - public String discoveredBy() {return "Alblaka";} - - /** - * Description of your plant. Keep it short, a few characters per line for up to two lines. - * Default is showing attributes of your plant, 2 per line. - * - * @param i line to get, starting from 0 - * @return The line - */ - public String desc(int i) - { - String[] att = attributes(); - if (att == null || att.length==0) return ""; - if (i == 0) - { - String s = att[0]; - if (att.length >= 2) - { - s+=", "+att[1]; - if (att.length >= 3) s+=","; - } - return s; - } - else - { - if (att.length < 3) return ""; - String s = att[2]; - if (att.length >= 4) s+=", "+att[3]; - return s; - } - } - - /** - * Tier of the plant. Ranges from 1 to 16, 0 is Weed. - * Valuable and powerful crops have higher tiers, useless and weak ones have lower tiers. - * - * @return Tier - */ - public abstract int tier(); - - /** - * Describe the plant through a set of stats, influencing breeding. - * Plants sharing stats and attributes will tend to cross-breed more often. - * - * Stats: - * - 0: Chemistry (Industrial uses based on chemical plant components) - * - 1: Consumable (Food, potion ingredients, stuff meant to be eaten or similarly used) - * - 2: Defensive (Plants with defense capabilities (damaging, explosive, chemical) or special abilities in general) - * - 3: Colorful (How colorful/aesthetically/beautiful is the plant, like dye-plants or plants without actual effects) - * - 4: Weed (Is this plant weed-like and rather unwanted/quick-spreading? Rare super-breed plants should have low values here) - * - * @param n index of the requested stat - * @return The requested value of the stats - */ - public abstract int stat(int n); - - /** - * Additional attributes of the plant, also influencing breeding. - * Plants sharing stats and attributes will tend to cross-breed more often. - * - * @return Attributes as an array of strings - */ - public abstract String[] attributes(); - - /** - * Sprite index the crop is meant to be rendered with. - * - * @param crop reference to TECrop - * @return 0-255, representing the sprite index on the crop's spritesheet. - */ - public abstract int getSpriteIndex(TECrop crop); - - /** - * Get the crop's spritesheet. - * Per default crops_0.png of ic2-sprites - * @return Texture file path - */ - public String getTextureFile() { - return "/ic2/sprites/crops_0.png"; - } - - /** - * Amount of growth points needed to increase the plant's size. - * Default is 200 * tier. - */ - public int growthDuration(TECrop crop) - { - return tier()*200; - } - - /** - * Check whether the plant can grow further. - * - * Consider: - * - Humidity, nutrients and air quality - * - Current size - * - Light level - * - Special biomes or conditions, accessible through crop.worldObj - * - * This method will be called upon empty upgraded crops to check whether a neighboring plant can cross onto it! Don't check if the size is greater than 0 and if the ID is real. - * - * @param crop reference to TECrop - * @return Whether the crop can grow - */ - public abstract boolean canGrow(TECrop crop); - - /** - * Calculate the influence for the plant to grow based on humidity, nutrients and air. - * Normal behavior is rating the three stats "normal", with each of them ranging from 0-30. - * Basic rule: Assume everything returns 10. All together must equal 30. Add the factors to your likings, for example (humidity*0.7)+(nutrients*0.9)+(air*1.4) - * - * Default is humidity + nutrients + air (no factors). - * - * @param crop reference to TECrop - * @param humidity ground humidity, influenced by hydration - * @param nutrients nutrient quality in ground, based on fertilizers - * @param air air quality, influences by open gardens and less crops surrounding this one - * @return 0-30 - */ - public int weightInfluences(TECrop crop, float humidity, float nutrients, float air) - { - return (int) (humidity+nutrients+air); - } - - /** - * Used to determine whether the plant can crossbreed with another crop. - * Default is allow crossbreeding if the size is greater or equal than 3. - * - * @param crop crop to crossbreed with - */ - public boolean canCross(TECrop crop) - { - return crop.size >= 3; - } - - - /** - * Called when the plant is rightclicked by a player. - * Default action is harvesting. - * - * @param crop reference to TECrop - * @param player player rightclicking the crop - * @return Whether the plant has changed - */ - public boolean rightclick(TECrop crop, EntityPlayer player) - { - return crop.harvest(true); - } - - /** - * Check whether the crop can be harvested. - * - * @param crop reference to TECrop - * @return Whether the crop can be harvested in its current state. - */ - public abstract boolean canBeHarvested(TECrop crop); - - /** - * Base chance for dropping the plant's gains, specify values greater than 1 for multiple drops. - * Default is 0.95^tier. - * - * @return Chance to drop the gains - */ - public float dropGainChance() - { - float base = 1F; - for (int i = 0; i < tier(); i++) {base*=0.95;} - return base; - } - - /** - * Item obtained from harvesting the plant. - * - * @param crop reference to TECrop - * @return Item obtained - */ - public abstract ItemStack getGain(TECrop crop); - - /** - * Get the size of the plant after harvesting. - * Default is 1. - * - * @param crop reference to TECrop - * @return Plant size after harvesting - */ - public byte getSizeAfterHarvest(TECrop crop) {return 1;} - - - /** - * Called when the plant is leftclicked by a player. - * Default action is picking the plant. - * - * @param crop reference to TECrop - * @param player player leftclicked the crop - * @return Whether the plant has changed - */ - public boolean leftclick(TECrop crop, EntityPlayer player) - { - return crop.pick(true); - } - - /** - * Base chance for dropping seeds when the plant is picked. - * Default is 0.5*0.8^tier with a bigger chance for sizes greater than 2 and absolutely no chance for size 0. - * - * @param crop reference to TECrop - * @return Chance to drop the seeds - */ - public float dropSeedChance(TECrop crop) - { - if (crop.size == 1) return 0; - float base = 0.5F; - if (crop.size == 2) base/=2F; - for (int i = 0; i < tier(); i++) {base*=0.8;} - return base; - } - - /** - * Obtain seeds dropped when the plant is picked. - * Multiple drops of the returned ItemStack can occur. - * Default action is generating a seed from this crop. - * - * @param crop reference to TECrop - * @return Seeds - */ - public ItemStack getSeeds(TECrop crop) - { - return crop.generateSeeds(crop.id, crop.statGrowth, crop.statGain, crop.statResistance, crop.scanLevel); - } - - /** - * Called when a neighbor block to the crop has changed. - * - * @param crop reference to TECrop - */ - public void onNeighbourChange(TECrop crop){} - - /** - * Check if the crop should emit redstone. - * - * @return Whether the crop should emit redstone - */ - public boolean emitRedstone(TECrop crop){return false;} - - /** - * Called when the crop is destroyed. - * - * @param crop reference to TECrop - */ - public void onBlockDestroyed(TECrop crop){} - - /** - * Get the light value emitted by the plant. - * - * @param crop reference to TECrop - * @return Light value emitted - */ - public int getEmittedLight(TECrop crop) {return 0;} - - /** - * Default is true if the entity is an EntityLiving in jumping or sprinting state. - * - * @param crop reference to TECrop - * @param entity entity colliding - * @return Whether trampling calculation should happen, return false if the plant is no longer valid. - */ - public boolean onEntityCollision(TECrop crop, Entity entity) - { - if (entity instanceof EntityLiving) - { - return ((EntityLiving)entity).isSprinting(); - } - return false; - } - - - /** - * Called every time the crop ticks. - * Should be called every 256 ticks or around 13 seconds. - * - * @param crop reference to TECrop - */ - public void tick(TECrop crop) {} - - /** - * Check whether this plant spreads weed to surrounding tiles. - * Default is true if the plant has a high growth stat (or is weeds) and size greater or equal than 2. - * - * @param crop reference to TECrop - * @return Whether the plant spreads weed - */ - public boolean isWeed(TECrop crop) - { - return crop.size>=2 && (crop.id==0 || crop.statGrowth>=24); - } - - - /** - * Get this plant's ID. - * - * @return ID of this CropCard or -1 if it's not registered - */ - public final int getId() - { - for (int i = 0; i < cropCardList.length; i++) - { - if (this == cropCardList[i]) - { - return i; - } - } - return -1; - } - - private static final CropCard[] cropCardList = new CropCard[256]; - - /** - * Get the size of the plant list. - * - * @return Plant list size - */ - public static int cropCardListLength() {return cropCardList.length;} - - /** - * Return the CropCard assigned to the given ID. - * If the ID is out of bounds, weed should be returned. If the ID is not registered, weed should be returned and a console print will notify. - * - * @param id plant ID - * @return Plant class - */ - public static final CropCard getCrop(int id) - { - if (id < 0 || id >= cropCardList.length) - {// Out of bounds - return cropCardList[0]; - } - if (cropCardList[id]==null) - {// Out of bounds - System.out.println("[IndustrialCraft] Something tried to access non-existant cropID #"+id+"!!!"); - return cropCardList[0]; - } - - return cropCardList[id]; - } - - /** - * Check whether the specified plant ID is already assigned. - * @param id ID to be checked - * @return true if the the given id is inbounds and the registered slot is not null - */ - public static final boolean idExists(int id) - { - return !(id < 0 || id >= cropCardList.length || cropCardList[id]==null); - } - - /** - * Auto-assign an ID to a plant and register it. - * Usage of this method is not recommended! Other plants could take your IDs and cause your plants to turn into other plants. - * - * @param crop plant to register - * @return The ID assigned to the plant - */ - public static final short registerCrop(CropCard crop) - { - for (short x = 0; x < cropCardList.length; x++) - {// Iterate through list - if (cropCardList[x]==null) - {// Found empty slot, add crop here - cropCardList[x]=crop; - nameReference.addLocal("item.cropSeed"+x+".name", crop.name()+" Seeds"); - return x; - } - } - //No free slot avaible - return -1; - } - - /** - * Attempt to register a plant to an ID. - * If the ID is taken, the crop will not be registered and a console print will notify the user. - * - * @param crop plant to register - * @param i ID to register the plant to - * @return Whether the crop was registered - */ - public static final boolean registerCrop(CropCard crop, int i) - { - if (i < 0 || i >= cropCardList.length) - {// Out of bounds - return false; - } - if (cropCardList[i]==null) - { - cropCardList[i]=crop; - nameReference.addLocal("item.cropSeed"+i+".name", crop.name()+" Seeds"); - return true; - } - System.out.println("[IndustrialCraft] Cannot add crop:"+crop.name()+" on ID #"+i+", slot already occupied by crop:"+cropCardList[i].name()); - return false; - } - - /** - * For internal usage only. - */ - public static TECrop nameReference; - - private static HashMap baseseeds = new HashMap(); - - /** - * Registers a base seed, an item used to plant a crop. - * - * @param stack item - * @param id plant ID - * @param size initial size - * @param growth initial growth stat - * @param gain initial gain stat - * @param resistance initial resistance stat - * @return True if successful - */ - public static boolean registerBaseSeed(ItemStack stack, int id, int size, int growth, int gain, int resistance) - { - for (ItemStack key : baseseeds.keySet()) - if (key.itemID==stack.itemID && key.getItemDamage()==stack.getItemDamage()) return false; - - baseseeds.put(stack, new BaseSeed(id, size, growth, gain, resistance, stack.stackSize)); - return true; - } - - /** - * Finds a base seed from the given item. - * - * @return Base seed or null if none found - */ - public static BaseSeed getBaseSeed(ItemStack stack) - { - if (stack == null) return null; - for (ItemStack key : baseseeds.keySet()) - { - if (key.itemID == stack.itemID && - (key.getItemDamage() == -1 || key.getItemDamage() == stack.getItemDamage())) - { - return baseseeds.get(key); - } - } - return null; - } -} diff --git a/src/minecraft/ic2/api/Crops.java b/src/minecraft/ic2/api/Crops.java deleted file mode 100644 index 7002d612f..000000000 --- a/src/minecraft/ic2/api/Crops.java +++ /dev/null @@ -1,47 +0,0 @@ -package ic2.api; - -import java.util.HashMap; - -import net.minecraft.world.biome.BiomeGenBase; - -/** - * General management of the crop system. All crop management methods will be moved here in the 2.00 update. - */ -public class Crops { - private static final HashMap humidityBiomeBonus = new HashMap(); - private static final HashMap nutrientBiomeBonus = new HashMap(); - - /** - * Add a crop humidity and nutrient biome bonus. - * - * 0 indicates no bonus and negative values indicate a penalty. - * - * @param biome Biome to apply the bonus in - * @param humidityBonus Humidity stat bonus - * @param nutrientsBonus Nutrient stat bonus - */ - public static void addBiomeBonus(BiomeGenBase biome, int humidityBonus, int nutrientsBonus) { - humidityBiomeBonus.put(biome, humidityBonus); - nutrientBiomeBonus.put(biome, nutrientsBonus); - } - - /** - * Get the humidity bonus for a biome. - * - * @param biome biome to check - * @return Humidity bonus or 0 if none - */ - public static int getHumidityBiomeBonus(BiomeGenBase biome) { - return humidityBiomeBonus.containsKey(biome) ? humidityBiomeBonus.get(biome) : 0; - } - - /** - * Get the nutrient bonus for a biome. - * - * @param biome biome to check - * @return Nutrient bonus or 0 if none - */ - public static int getNutrientBiomeBonus(BiomeGenBase biome) { - return nutrientBiomeBonus.containsKey(biome) ? nutrientBiomeBonus.get(biome) : 0; - } -} diff --git a/src/minecraft/ic2/api/Direction.java b/src/minecraft/ic2/api/Direction.java deleted file mode 100644 index 751375ab7..000000000 --- a/src/minecraft/ic2/api/Direction.java +++ /dev/null @@ -1,107 +0,0 @@ -package ic2.api; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; - -/** - * Represents the 6 possible directions along the axis of a block. - */ -public enum Direction { - /** - * -X - */ - XN(0), - /** - * +X - */ - XP(1), - - /** - * -Y - */ - YN(2), //MC-Code starts with 0 here - /** - * +Y - */ - YP(3), // 1... - - /** - * -Z - */ - ZN(4), - /** - * +Z - */ - ZP(5); - - Direction(int dir) { - this.dir = dir; - } - - /*public CoordinateTuple ApplyToCoordinates(CoordinateTuple coordinates) { - CoordinateTuple ret = new CoordinateTuple(coordinates); - - ret.coords[dir/2] += GetSign(); - - return ret; - }*/ - - /** - * Get the tile entity next to a tile entity following this direction. - * - * @param tileEntity tile entity to check - * @return Adjacent tile entity or null if none exists - */ - public TileEntity applyToTileEntity(TileEntity tileEntity) { - int coords[] = { tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord }; - - coords[dir/2] += getSign(); - - if (tileEntity.worldObj != null && tileEntity.worldObj.blockExists(coords[0], coords[1], coords[2])) { - return tileEntity.worldObj.getBlockTileEntity(coords[0], coords[1], coords[2]); - } else { - return null; - } - } - - /** - * Get the inverse of this direction (XN -> XP, XP -> XN, etc.) - * - * @return Inverse direction - */ - public Direction getInverse() { - int inverseDir = dir - getSign(); - - for (Direction direction : directions) { - if (direction.dir == inverseDir) return direction; - } - - return this; - } - - /** - * Convert this direction to a Minecraft side value. - * - * @return Minecraft side value - */ - public int toSideValue() { - return (dir + 4) % 6; - } - - /** - * Determine direction sign (N for negative or P for positive). - * - * @return -1 if the direction is negative, +1 if the direction is positive - */ - private int getSign() { - return (dir % 2) * 2 - 1; - } - - public ForgeDirection toForgeDirection() { - return ForgeDirection.getOrientation(toSideValue()); - } - - private int dir; - private static final Direction[] directions = Direction.values(); -} - diff --git a/src/minecraft/ic2/api/ElectricItem.java b/src/minecraft/ic2/api/ElectricItem.java deleted file mode 100644 index 7d560a7c0..000000000 --- a/src/minecraft/ic2/api/ElectricItem.java +++ /dev/null @@ -1,128 +0,0 @@ -package ic2.api; - -import java.lang.reflect.Method; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -/** - * Allows for charging, discharging and using electric items (IElectricItem). - * - * The charge or remaining capacity of an item can be determined by calling charge/discharge with - * ignoreTransferLimit and simulate set to true. - */ -public final class ElectricItem { - /** - * Charge an item with a specified amount of energy - * - * @param itemStack electric item's stack - * @param amount amount of energy to charge in EU - * @param tier tier of the charging device, has to be at least as high as the item to charge - * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() - * @param simulate don't actually change the item, just determine the return value - * @return Energy transferred into the electric item - */ - public static int charge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate) { - try { - if (ElectricItem_charge == null) ElectricItem_charge = Class.forName(getPackage() + ".core.item.ElectricItem").getMethod("charge", ItemStack.class, Integer.TYPE, Integer.TYPE, Boolean.TYPE, Boolean.TYPE); - - return (Integer) ElectricItem_charge.invoke(null, itemStack, amount, tier, ignoreTransferLimit, simulate); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Discharge an item by a specified amount of energy - * - * @param itemStack electric item's stack - * @param amount amount of energy to charge in EU - * @param tier tier of the discharging device, has to be at least as high as the item to discharge - * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() - * @param simulate don't actually discharge the item, just determine the return value - * @return Energy retrieved from the electric item - */ - public static int discharge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate) { - try { - if (ElectricItem_discharge == null) ElectricItem_discharge = Class.forName(getPackage() + ".core.item.ElectricItem").getMethod("discharge", ItemStack.class, Integer.TYPE, Integer.TYPE, Boolean.TYPE, Boolean.TYPE); - - return (Integer) ElectricItem_discharge.invoke(null, itemStack, amount, tier, ignoreTransferLimit, simulate); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Determine if the specified electric item has at least a specific amount of EU. - * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. - * BatPacks are not taken into account. - * - * @param itemStack electric item's stack - * @param amount minimum amount of energy required - * @return true if there's enough energy - */ - public static boolean canUse(ItemStack itemStack, int amount) { - try { - if (ElectricItem_canUse == null) ElectricItem_canUse = Class.forName(getPackage() + ".core.item.ElectricItem").getMethod("canUse", ItemStack.class, Integer.TYPE); - - return (Boolean) ElectricItem_canUse.invoke(null, itemStack, amount); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Try to retrieve a specific amount of energy from an Item, and if applicable, a BatPack. - * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. - * - * @param itemStack electric item's stack - * @param amount amount of energy to discharge in EU - * @param player player holding the item - * @return true if the operation succeeded - */ - public static boolean use(ItemStack itemStack, int amount, EntityPlayer player) { - try { - if (ElectricItem_use == null) ElectricItem_use = Class.forName(getPackage() + ".core.item.ElectricItem").getMethod("use", ItemStack.class, Integer.TYPE, EntityPlayer.class); - - return (Boolean) ElectricItem_use.invoke(null, itemStack, amount, player); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Charge an item from the BatPack a player is wearing. - * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. - * use() already contains this functionality. - * - * @param itemStack electric item's stack - * @param player player holding the item - */ - public static void chargeFromArmor(ItemStack itemStack, EntityPlayer player) { - try { - if (ElectricItem_chargeFromArmor == null) ElectricItem_chargeFromArmor = Class.forName(getPackage() + ".core.item.ElectricItem").getMethod("chargeFromArmor", ItemStack.class, EntityPlayer.class); - - ElectricItem_chargeFromArmor.invoke(null, itemStack, player); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Get the base IC2 package name, used internally. - * - * @return IC2 package name, if unable to be determined defaults to ic2 - */ - private static String getPackage() { - Package pkg = ElectricItem.class.getPackage(); - if (pkg != null) return pkg.getName().substring(0, pkg.getName().lastIndexOf('.')); - else return "ic2"; - } - - private static Method ElectricItem_charge; - private static Method ElectricItem_discharge; - private static Method ElectricItem_canUse; - private static Method ElectricItem_use; - private static Method ElectricItem_chargeFromArmor; -} - diff --git a/src/minecraft/ic2/api/ExplosionWhitelist.java b/src/minecraft/ic2/api/ExplosionWhitelist.java deleted file mode 100644 index 2206dcd6e..000000000 --- a/src/minecraft/ic2/api/ExplosionWhitelist.java +++ /dev/null @@ -1,46 +0,0 @@ -package ic2.api; - -import java.util.*; - -import net.minecraft.block.Block; - -/** - * Blocks on this whitelist will not resist an explosion but won't be destroyed. - * - * The explosion code by default ignores blocks which absorb more than 1000 explosion power to - * prevent abusing personal safes, Trade-O-Mats and other blocks to serve as a cheap and - * invulnerable reactor chambers. Said blocks will not shield the explosion and won't get - * destroyed. - */ -public final class ExplosionWhitelist { - /** - * Add a block to the whitelist. - * - * @param block block to add - */ - public static void addWhitelistedBlock(Block block) { - whitelist.add(block); - } - - /** - * Remove a block from the whitelist. - * - * @param block block to remove - */ - public static void removeWhitelistedBlock(Block block) { - whitelist.remove(block); - } - - /** - * Check if a block is on the whitelist. - * - * @param block block to check if whitelisted - * @return Whether the block is whitelisted - */ - public static boolean isBlockWhitelisted(Block block) { - return whitelist.contains(block); - } - - private static Set whitelist = new HashSet(); -} - diff --git a/src/minecraft/ic2/api/IBoxable.java b/src/minecraft/ic2/api/IBoxable.java deleted file mode 100644 index 4b6f12cf1..000000000 --- a/src/minecraft/ic2/api/IBoxable.java +++ /dev/null @@ -1,18 +0,0 @@ -package ic2.api; - -import net.minecraft.item.ItemStack; - -/** - * Provides custom toolbox storage behavior for items. - * - * The normal condition for storing an item in a toolbox is having a maximum stack size of 1. - */ -public interface IBoxable { - /** - * Determine whether an item can be stored in a toolbox or not. - * - * @param itemstack item to be stored - * @return Whether to store the item in the toolbox or not - */ - public abstract boolean canBeStoredInToolbox(ItemStack itemstack); -} diff --git a/src/minecraft/ic2/api/IC2Reactor.java b/src/minecraft/ic2/api/IC2Reactor.java deleted file mode 100644 index cacd72500..000000000 --- a/src/minecraft/ic2/api/IC2Reactor.java +++ /dev/null @@ -1,28 +0,0 @@ -package ic2.api; - -import java.lang.reflect.Field; - -public class IC2Reactor { - private static Field energyGeneratorNuclear; - - public static int getEUOutput() { - try { - if (energyGeneratorNuclear == null) energyGeneratorNuclear = Class.forName(getPackage() + ".core.IC2").getDeclaredField("energyGeneratorNuclear"); - - return energyGeneratorNuclear.getInt(null); - } catch (Throwable e) { - throw new RuntimeException(e); - } - } - - /** - * Get the base IC2 package name, used internally. - * - * @return IC2 package name, if unable to be determined defaults to ic2 - */ - private static String getPackage() { - Package pkg = IC2Reactor.class.getPackage(); - if (pkg != null) return pkg.getName().substring(0, pkg.getName().lastIndexOf('.')); - else return "ic2"; - } -} diff --git a/src/minecraft/ic2/api/ICustomElectricItem.java b/src/minecraft/ic2/api/ICustomElectricItem.java deleted file mode 100644 index bf48b2a04..000000000 --- a/src/minecraft/ic2/api/ICustomElectricItem.java +++ /dev/null @@ -1,64 +0,0 @@ -package ic2.api; - -import net.minecraft.item.ItemStack; - -/** - * Provides the ability to store energy on the implementing item. - * - * This interface is a special version of IElectricItem which delegates the implementation of - * charge(), discharge() and canUse() to the implementing Item. - * - * The default implementation (when not using ICustomElectricItem) does the following: - * - store and retrieve the charge - * - handle charging, taking amount, tier, transfer limit and simulate into account - * - replace item IDs if appropriate (getChargedItemId() and getEmptyItemId()) - * - update and manage the damage value for the visual charge indicator - * - * @note ICustomElectricItem must not call the ElectricItem methods charge, discharge or canUse - */ -public interface ICustomElectricItem extends IElectricItem { - /** - * Charge an item with a specified amount of energy - * - * @param itemStack electric item's stack - * @param amount amount of energy to charge in EU - * @param tier tier of the charging device, has to be at least as high as the item to charge - * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() - * @param simulate don't actually change the item, just determine the return value - * @return Energy transferred into the electric item - */ - public int charge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate); - - /** - * Discharge an item by a specified amount of energy - * - * @param itemStack electric item's stack - * @param amount amount of energy to charge in EU - * @param tier tier of the discharging device, has to be at least as high as the item to discharge - * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() - * @param simulate don't actually discharge the item, just determine the return value - * @return Energy retrieved from the electric item - */ - public int discharge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate); - - /** - * Determine if the specified electric item has at least a specific amount of EU. - * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. - * BatPacks are not taken into account. - * - * @param itemStack electric item's stack - * @param amount minimum amount of energy required - * @return true if there's enough energy - */ - public boolean canUse(ItemStack itemStack, int amount); - - /** - * Determine whether to show the charge tool tip with NEI or other means. - * - * Return false if IC2's handler is incompatible, you want to implement your own or you don't - * want to display the charge at all. - * - * @return true to show the tool tip (x/y EU) - */ - public boolean canShowChargeToolTip(ItemStack itemStack); -} diff --git a/src/minecraft/ic2/api/IElectricItem.java b/src/minecraft/ic2/api/IElectricItem.java deleted file mode 100644 index 21142fa85..000000000 --- a/src/minecraft/ic2/api/IElectricItem.java +++ /dev/null @@ -1,52 +0,0 @@ -package ic2.api; - -/** - * Provides the ability to store energy on the implementing item. - * - * The item should have a maximum damage of 13. - */ -public interface IElectricItem { - /** - * Determine if the item can be used in a machine or as an armor part to supply energy. - * - * @return Whether the item can supply energy - */ - boolean canProvideEnergy(); - - /** - * Get the item ID to use for a charge energy greater than 0. - * - * @return Item ID to use - */ - int getChargedItemId(); - - /** - * Get the item ID to use for a charge energy of 0. - * - * @return Item ID to use - */ - int getEmptyItemId(); - - /** - * Get the item's maximum charge energy in EU. - * - * @return Maximum charge energy - */ - int getMaxCharge(); - - /** - * Get the item's tier, lower tiers can't send energy to higher ones. - * Batteries are Tier 1, Energy Crystals are Tier 2, Lapotron Crystals are Tier 3. - * - * @return Item's tier - */ - int getTier(); - - /** - * Get the item's transfer limit in EU per transfer operation. - * - * @return Transfer limit - */ - int getTransferLimit(); -} - diff --git a/src/minecraft/ic2/api/IEnergyStorage.java b/src/minecraft/ic2/api/IEnergyStorage.java deleted file mode 100644 index fc275f733..000000000 --- a/src/minecraft/ic2/api/IEnergyStorage.java +++ /dev/null @@ -1,52 +0,0 @@ -package ic2.api; - -/** - * Interface implemented by the tile entity of energy storage blocks. - */ -public interface IEnergyStorage { - /** - * Get the amount of energy currently stored in the block. - * - * @return Energy stored in the block - */ - public int getStored(); - - /** - * Set the amount of energy currently stored in the block. - * - * @param energy stored energy - */ - public void setStored(int energy); - - /** - * Add the specified amount of energy. - * - * Use negative values to decrease. - * - * @param amount of energy to add - * @return Energy stored in the block after adding the specified amount - */ - public int addEnergy(int amount); - - /** - * Get the maximum amount of energy the block can store. - * - * @return Maximum energy stored - */ - public int getCapacity(); - - /** - * Get the block's energy output. - * - * @return Energy output in EU/t - */ - public int getOutput(); - - /** - * Get whether this block can have its energy used by an adjacent teleporter. - * - * @param side side the teleporter is draining energy from - * @return Whether the block is teleporter compatible - */ - public boolean isTeleporterCompatible(Direction side); -} diff --git a/src/minecraft/ic2/api/IMetalArmor.java b/src/minecraft/ic2/api/IMetalArmor.java deleted file mode 100644 index 3b5112b27..000000000 --- a/src/minecraft/ic2/api/IMetalArmor.java +++ /dev/null @@ -1,20 +0,0 @@ -package ic2.api; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -/** - * Armor items implementing this can be considered metal armor. - * - * Currently used for determining which boots can be used to slide up a magnetic pole. - */ -public interface IMetalArmor { - /** - * Determine if the given armor piece is metal armor. - * - * @param itemstack Armor piece as worn by the player - * @param player The player - * @return Whether the armor piece is metal armor - */ - public boolean isMetalArmor(ItemStack itemstack, EntityPlayer player); -} diff --git a/src/minecraft/ic2/api/IPaintableBlock.java b/src/minecraft/ic2/api/IPaintableBlock.java deleted file mode 100644 index 6ba19d39f..000000000 --- a/src/minecraft/ic2/api/IPaintableBlock.java +++ /dev/null @@ -1,21 +0,0 @@ -package ic2.api; - -import net.minecraft.world.World; - -/** - * Allows a block to be painted by a Painter. - */ -public interface IPaintableBlock -{ - /** - * Color the block. - * - * @param world block's world - * @param x block X position - * @param y block Y position - * @param z block Z position - * @param color painter color, same as dye metadata values - * @return Whether the block was painted and the painter should be damaged - */ - public boolean colorBlock(World world, int x, int y, int z, int color); -} diff --git a/src/minecraft/ic2/api/IReactor.java b/src/minecraft/ic2/api/IReactor.java deleted file mode 100644 index 56d402d32..000000000 --- a/src/minecraft/ic2/api/IReactor.java +++ /dev/null @@ -1,134 +0,0 @@ -package ic2.api; - -import net.minecraft.util.ChunkCoordinates; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -/** - * Interface implemented by the tile entity of nuclear reactors. - */ -public interface IReactor { - /** - * Get the reactor's position in the world. - * - * @return Position of the reactor - */ - public ChunkCoordinates getPosition(); - - /** - * Get the reactor's corresponding world. - * - * @return The reactor's world - */ - public World getWorld(); - - /** - * Get the reactor's heat. - * - * @return The reactor's heat - */ - public int getHeat(); - - /** - * Set the reactor's heat. - * - * @param heat reactor heat - */ - public void setHeat(int heat); - - /** - * Increase the reactor's heat. - * - * Use negative values to decrease. - * - * @param amount amount of heat to add - * @return The reactor's heat after adding the specified amount - */ - public int addHeat(int amount); - - /** - * Get the reactor's maximum heat before exploding. - * - * @return Maximum heat value - */ - public int getMaxHeat(); - - /** - * Set the reactor's stored maxHeat variable. - * Used by plating to increase the reactors MaxHeat capacity. - * Needs to be called during each cycle process. - */ - public void setMaxHeat(int newMaxHeat); - - /** - * Get's the reactor's HEM (Heat Effect Modifier) - * Basic value is 1.0F. - * Reducing the value causes a weakening/reduction of the heat-based sideeffects of reactors - * (F.e. water evaporation, melting, damaging entitys, etc) - * - * @return HEM - */ - public float getHeatEffectModifier(); - - /** - * Set's the reactor's HEM - * Needs to be called during each cycle process. - */ - public void setHeatEffectModifier(float newHEM); - - /** - * Get the reactor's energy output. - * - * @return Energy output, not multiplied by the base EU/t value - */ - public int getOutput(); - - /** - * Add's the given amount of energy to the Reactor's output. - * - * @return Energy output after adding the value, not multiplied by the base EU/t value - */ - public int addOutput(int energy); - - /** - * Replaced by IC2Reactor.getEUOutput() - stays at the universal output value of 1 for compatibility - */ - @Deprecated - public int getPulsePower(); - - /** - * Get the item at the specified grid coordinates. - * - * @param x X position of the item - * @param y Y position of the item - * @return The item or null if there is no item - */ - public ItemStack getItemAt(int x, int y); - - /** - * Set the item at the specified grid coordinates. - * - * @param x X position of the item - * @param y Y position of the item - * @param item The item to set. - */ - public void setItemAt(int x, int y, ItemStack item); - - /** - * Explode the reactor. - */ - public void explode(); - - /** - * Get the reactor's tick rate (game ticks per reactor tick). - * - * @return Tick rate - */ - public int getTickRate(); - - /** - * Get whether the reactor is active and supposed to produce energy - * @return Whether the reactor is active - */ - public boolean produceEnergy(); -} diff --git a/src/minecraft/ic2/api/IReactorChamber.java b/src/minecraft/ic2/api/IReactorChamber.java deleted file mode 100644 index fad40c275..000000000 --- a/src/minecraft/ic2/api/IReactorChamber.java +++ /dev/null @@ -1,13 +0,0 @@ -package ic2.api; - -/** - * Interface implemented by the reactor chamber tile entity. - */ -public interface IReactorChamber { - /** - * Get the chamber's reactor. - * - * @return The reactor - */ - public IReactor getReactor(); -} diff --git a/src/minecraft/ic2/api/IReactorComponent.java b/src/minecraft/ic2/api/IReactorComponent.java deleted file mode 100644 index 4a7135e8f..000000000 --- a/src/minecraft/ic2/api/IReactorComponent.java +++ /dev/null @@ -1,97 +0,0 @@ -package ic2.api; - -import net.minecraft.item.ItemStack; - -/** - * Design custom Reactor components by implementing this Interface - * Items implementing the interface will not be ejected from Reactors in their clean-up - * and can/will be interacted with by other elements, f.e. Uranium Cells. - * - * All IC2 ReactorComponents implement and use this Interface - * - */ -public interface IReactorComponent -{ - /** - * Called by reactor upon iterating through it's inventory (every cycle). - * Perform all necessary calculation/interaction here - * - * @param reactor Reference to the Reactor - * @param yourStack Reference to the specific instance of iterated ItemStack - * @param x X-coordinate of the stack in the grid - * @param y Y-coordinate of the stack in the grid - */ - public void processChamber(IReactor reactor, ItemStack yourStack, int x, int y); - - /** - * Can be called by Uranium-Components who attempt to generate energy by pulsing to other components. - * Uranium-Uranium interaction (f.e.) uses this method. - * @param reactor Reference to the Reactor - * @param yourStack Reference to the specific instance of called ItemStack - * @param pulsingStack Reference to the specific instance of pulsing ItemStack - * @param youX X-coordinate of your stack in the grid - * @param youY Y-coordinate of your stack in the grid - * @param pulseX X-coordinate of pulsing stack in the grid - * @param pulseY Y-coordinate of pulsing stack in the grid - * @return true if this component reacts to the pulse (and pulse is therefore meant to produce heat) - */ - public boolean acceptUraniumPulse(IReactor reactor, ItemStack yourStack, ItemStack pulsingStack, int youX, int youY, int pulseX, int pulseY); - - /** - * Called by components to determine whether your component can be heated. - * @param reactor Reference to the Reactor - * @param yourStack Reference to the specific instance of iterated ItemStack - * @param x X-coordinate of the stack in the grid - * @param y Y-coordinate of the stack in the grid - * @return true if your component can take heat - */ - public boolean canStoreHeat(IReactor reactor, ItemStack yourStack, int x, int y); - - /** - * Called by heat-switches to determine how much heat to distribute into which direction. - * Please return the maximum capacity of your heat-containing component here. - * @param reactor Reference to the Reactor - * @param yourStack Reference to the specific instance of iterated ItemStack - * @param x X-coordinate of the stack in the grid - * @param y Y-coordinate of the stack in the grid - * @return Maximum heat - */ - public int getMaxHeat(IReactor reactor, ItemStack yourStack, int x, int y); - - /** - * Called by heat-switches to determine how much heat to distribute into which direction. - * Please return the current amount of heat stored in this component - * @param reactor Reference to the Reactor - * @param yourStack Reference to the specific instance of iterated ItemStack - * @param x X-coordinate of the stack in the grid - * @param y Y-coordinate of the stack in the grid - * @return Current Heat - */ - public int getCurrentHeat(IReactor reactor, ItemStack yourStack, int x, int y); - - /** - * Called by components to distribute heat to your component. - * Perform heating-calculations and increase your heat (dmg) level accordingly. - * This method will as well be called to REDUCE heat, by providing a negative amount. - * - * @param reactor Reference to the Reactor - * @param yourStack Reference to the specific instance of iterated ItemStack - * @param x X-coordinate of the stack in the grid - * @param y Y-coordinate of the stack in the grid - * @param heat Amount of heat to be added (may be negative to subtract heat) - * @return 0 if the 'order' was accepted, return >0 to indicate the 'remaining' heat which couldn't be absorbed (and vice versa for <0) - */ - public int alterHeat(IReactor reactor, ItemStack yourStack, int x, int y, int heat); - - /** - * Called upon reactor explosion - * Alter the explosion size. - * Returning a float 0 < f < 1 will be counted as multiplier. - * Anything else will be counted as a flat addition (in case of <0 = reduction). - * - * @param reactor Reference to the Reactor - * @param yourStack Reference to the specific instance of iterated ItemStack - * @return your explosion modifier - */ - public float influenceExplosion(IReactor reactor, ItemStack yourStack); -} diff --git a/src/minecraft/ic2/api/ITerraformingBP.java b/src/minecraft/ic2/api/ITerraformingBP.java deleted file mode 100644 index 378164a60..000000000 --- a/src/minecraft/ic2/api/ITerraformingBP.java +++ /dev/null @@ -1,35 +0,0 @@ -package ic2.api; - -import net.minecraft.world.World; - -/** - * Allows an item to act as a terraformer blueprint. - */ -public interface ITerraformingBP -{ - /** - * Get the energy consumption per operation of the blueprint. - * - * @return Energy consumption in EU - */ - public abstract int getConsume(); - - /** - * Get the maximum range of the blueprint. - * Should be a divisor of 5. - * - * @return Maximum range in blocks - */ - public abstract int getRange(); - - /** - * Perform the terraforming operation. - * - * @param world world to terraform - * @param x X position to terraform - * @param z Z position to terraform - * @param yCoord Y position of the terraformer - * @return Whether the operation was successful and the terraformer should consume energy. - */ - public abstract boolean terraform(World world, int x, int z, int yCoord); -} diff --git a/src/minecraft/ic2/api/IWrenchable.java b/src/minecraft/ic2/api/IWrenchable.java deleted file mode 100644 index 7357423a1..000000000 --- a/src/minecraft/ic2/api/IWrenchable.java +++ /dev/null @@ -1,59 +0,0 @@ -package ic2.api; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -/** - * Allows a tile entity to make use of the wrench's removal and rotation functions. - */ -public interface IWrenchable { - /** - * Determine if the wrench can be used to set the block's facing. - * Called before wrenchCanRemove(). - * - * @param entityPlayer player using the wrench - * @param side block's side the wrench was clicked on - * @return Whether the wrenching was done and the wrench should be damaged - */ - boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side); - - /** - * Get the block's facing. - * - * @return Block facing - */ - short getFacing(); - - /** - * Set the block's facing - * - * @param facing facing to set the block to - */ - void setFacing(short facing); - - /** - * Determine if the wrench can be used to remove the block. - * Called if wrenchSetFacing fails. - * - * @param entityPlayer player using the wrench - * @return Whether the wrenching was done and the wrench should be damaged - */ - boolean wrenchCanRemove(EntityPlayer entityPlayer); - - /** - * Determine the probability to drop the block as it is. - * The first entry in getBlockDropped will be replaced by blockid:meta if the drop is successful. - * - * @return Probability from 0 to 1 - */ - float getWrenchDropRate(); - - /** - * Determine the item the block will drop when the wrenching is successful. - * - * @param entityPlayer player using the wrench - * @return Item to drop - */ - ItemStack getWrenchDrop(EntityPlayer entityPlayer); -} - diff --git a/src/minecraft/ic2/api/Ic2Recipes.java b/src/minecraft/ic2/api/Ic2Recipes.java deleted file mode 100644 index 31ac16bcb..000000000 --- a/src/minecraft/ic2/api/Ic2Recipes.java +++ /dev/null @@ -1,358 +0,0 @@ -package ic2.api; - -import java.lang.reflect.Array; -import java.util.AbstractMap; -import java.util.List; -import java.util.Map; - -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -/** - * Provides access to Compressor, Extractor and Macerator recipes, as well as charge-aware recipes - * and the Recycler blacklist. - * - * The recipes are only valid after IC2 has been loaded and are metadata and stack size sensitive, - * for example you can create a recipe to compress 3 wooden planks into 2 sticks. - */ -public final class Ic2Recipes { - /** - * Add a charge-aware shaped crafting recipe. - */ - public static void addCraftingRecipe(ItemStack result, Object... args) { - try { - Class.forName(getPackage() + ".core.AdvRecipe").getMethod("addAndRegister", ItemStack.class, Array.newInstance(Object.class, 0).getClass()).invoke(null, result, args); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Add a charge-aware shapeless crafting recipe. - */ - public static void addShapelessCraftingRecipe(ItemStack result, Object... args) { - try { - Class.forName(getPackage() + ".core.AdvShapelessRecipe").getMethod("addAndRegister", ItemStack.class, Array.newInstance(Object.class, 0).getClass()).invoke(null, result, args); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Retrieve the registered Compressor recipes. - * - * @return Recipe list as a list of map entries, the key is the input and the value is the output - */ - public static List > getCompressorRecipes() { - if (TileEntityCompressor_recipes == null) { - try { - TileEntityCompressor_recipes = (List >) Class.forName(getPackage() + ".core.block.machine.tileentity.TileEntityCompressor").getField("recipes").get(null); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - return TileEntityCompressor_recipes; - } - - /** - * Add a Compressor recipe. - * - * @param input Input - * @param output Output - */ - public static void addCompressorRecipe(ItemStack input, ItemStack output) { - getCompressorRecipes().add(new AbstractMap.SimpleEntry(input, output)); - } - - - /** - * Get the Compressor output for an input item. - * - * @param input input item - * @param adjustInput remove the processing requirements from input - * @return Output item as an independent stack - */ - public static ItemStack getCompressorOutputFor(ItemStack input, boolean adjustInput) { - return getOutputFor(input, adjustInput, getCompressorRecipes()); - } - - /** - * Retrieve the registered Extractor recipes. - * - * @return Recipe list as a list of map entries, the key is the input and the value is the output - */ - public static List > getExtractorRecipes() { - if (TileEntityExtractor_recipes == null) { - try { - TileEntityExtractor_recipes = (List >) Class.forName(getPackage() + ".core.block.machine.tileentity.TileEntityExtractor").getField("recipes").get(null); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - return TileEntityExtractor_recipes; - } - - /** - * Add a Extractor recipe. - * - * @param input Input - * @param output Output - */ - public static void addExtractorRecipe(ItemStack input, ItemStack output) { - getExtractorRecipes().add(new AbstractMap.SimpleEntry(input, output)); - } - - - /** - * Get the Extractor output for an input item. - * - * @param input input item - * @param adjustInput remove the processing requirements from input - * @return Output item as an independent stack - */ - public static ItemStack getExtractorOutputFor(ItemStack input, boolean adjustInput) { - return getOutputFor(input, adjustInput, getExtractorRecipes()); - } - - /** - * Retrieve the registered Macerator recipes. - * - * @return Recipe list as a list of map entries, the key is the input and the value is the output - */ - public static List > getMaceratorRecipes() { - if (TileEntityMacerator_recipes == null) { - try { - TileEntityMacerator_recipes = (List >) Class.forName(getPackage() + ".core.block.machine.tileentity.TileEntityMacerator").getField("recipes").get(null); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - return TileEntityMacerator_recipes; - } - - /** - * Add a Macerator recipe. - * - * @param input Input - * @param output Output - */ - public static void addMaceratorRecipe(ItemStack input, ItemStack output) { - getMaceratorRecipes().add(new AbstractMap.SimpleEntry(input, output)); - } - - - /** - * Get the Macerator output for an input item. - * - * @param input input item - * @param adjustInput remove the processing requirements from input - * @return Output item as an independent stack - */ - public static ItemStack getMaceratorOutputFor(ItemStack input, boolean adjustInput) { - return getOutputFor(input, adjustInput, getMaceratorRecipes()); - } - - - private static ItemStack getOutputFor(ItemStack input, boolean adjustInput, List > recipeList) { - assert input != null; - - for (Map.Entry entry: recipeList) { - if (entry.getKey().isItemEqual(input) && input.stackSize >= entry.getKey().stackSize) { - if (adjustInput) input.stackSize -= entry.getKey().stackSize; - - return entry.getValue().copy(); - } - } - - return null; - } - - - /** - * Retrieve the registered Recycler blacklist items. - * - * @return Blacklist - */ - public static List getRecyclerBlacklist() { - if (TileEntityRecycler_blacklist == null) { - try { - TileEntityRecycler_blacklist = (List) Class.forName(getPackage() + ".core.block.machine.tileentity.TileEntityRecycler").getField("blacklist").get(null); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - return TileEntityRecycler_blacklist; - } - - /** - * Add an item stack to the Recycler blacklist. - * - * @param newBlacklistedItem item stack to add - */ - public static void addRecyclerBlacklistItem(ItemStack newBlacklistedItem) { - getRecyclerBlacklist().add(newBlacklistedItem); - } - - /** - * Add an item to the Recycler blacklist. - * - * @param newBlacklistedItem item to add - */ - public static void addRecyclerBlacklistItem(Item newBlacklistedItem) { - addRecyclerBlacklistItem(new ItemStack(newBlacklistedItem, 1, -1)); - } - - /** - * Add a block to the Recycler blacklist. - * - * @param newBlacklistedBlock block to add - */ - public static void addRecyclerBlacklistItem(Block newBlacklistedBlock) { - addRecyclerBlacklistItem(new ItemStack(newBlacklistedBlock, 1, -1)); - } - - - /** - * Determine if an item is in the Recycler blacklist. - * - * @param itemStack item to check - * @return Whether the item is blacklisted or not - */ - public static boolean isRecyclerInputBlacklisted(ItemStack itemStack) { - for (ItemStack blackItem: getRecyclerBlacklist()) { - if (itemStack.isItemEqual(blackItem)) return true; - } - - return false; - } - - /** - * Retrieve the registered Scrap Box drops. - * - * @return Drops as a list of item stack and float (chance) pairs - */ - public static List> getScrapboxDrops() { - try { - return (List>) Class.forName(getPackage() + ".core.item.ItemScrapbox").getMethod("getDropList").invoke(null); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /* - * Reference scrap box chance values: - * - * 0.1: Diamond - * 0.5: Cake, Gold Helmet, Iron Ore, Gold Ore - * 1.0: Wooden tools, Soul Sand, Sign, Leather, Feather, Bone - * 1.5: Apple, Bread - * 2.0: Netherrack, Rotten Flesh - * 3.0: Grass, Gravel - * 4.0: Stick - * 5.0: Dirt, Wooden Hoe - */ - - /** - * Add an item stack to the Scrap Box drops. - * - * @param dropItem item stack to add - * @param chance chance for the item to drop, see the code comments for reference values - */ - public static void addScrapboxDrop(ItemStack dropItem, float chance) { - try { - Class.forName(getPackage() + ".core.item.ItemScrapbox").getMethod("addDrop", ItemStack.class, float.class).invoke(null, dropItem, chance); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Add an item to the Scrap Box drops. - * - * @param dropItem item to add - * @param chance chance for the item to drop, see the code comments for reference values - */ - public static void addScrapboxDrop(Item dropItem, float chance) { - addScrapboxDrop(new ItemStack(dropItem, 1), chance); - } - - /** - * Add a block to the Scrap Box drops. - * - * @param dropItem item to add - * @param chance chance for the item to drop, see the code comments for reference values - */ - public static void addScrapboxDrop(Block dropItem, float chance) { - addScrapboxDrop(new ItemStack(dropItem), chance); - } - - /** - * Retrieve the registered Mass Fabricator amplifiers. - * - * @return Amplifiers as a list of item stack and integer (amplifier value) pairs - */ - public static List > getMatterAmplifiers() { - if (TileEntityMatter_amplifiers == null) { - try { - TileEntityMatter_amplifiers = (List >) Class.forName(getPackage() + ".core.block.machine.tileentity.TileEntityMatter").getField("amplifiers").get(null); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - return TileEntityMatter_amplifiers; - } - - /** - * Add an item stack to the Mass Fabricator amplifiers. - * - * @param amplifierItem item stack to add - * @param value amplifier value for the item, scrap is 5000 - */ - public static void addMatterAmplifier(ItemStack amplifierItem, int value) { - getMatterAmplifiers().add(new AbstractMap.SimpleEntry(amplifierItem, value)); - } - - /** - * Add an item to the Mass Fabricator amplifiers. - * - * @param amplifierItem item to add - * @param value amplifier value for the item, scrap is 5000 - */ - public static void addMatterAmplifier(Item amplifierItem, int value) { - addMatterAmplifier(new ItemStack(amplifierItem, 1, -1), value); - } - - /** - * Add a block to the Mass Fabricator amplifiers. - * - * @param amplifierItem item to add - * @param value amplifier value for the item, scrap is 5000 - */ - public static void addMatterAmplifier(Block amplifierItem, int value) { - addMatterAmplifier(new ItemStack(amplifierItem, 1, -1), value); - } - - /** - * Get the base IC2 package name, used internally. - * - * @return IC2 package name, if unable to be determined defaults to ic2 - */ - private static String getPackage() { - Package pkg = Ic2Recipes.class.getPackage(); - if (pkg != null) return pkg.getName().substring(0, pkg.getName().lastIndexOf('.')); - else return "ic2"; - } - - private static List > TileEntityCompressor_recipes; - private static List > TileEntityExtractor_recipes; - private static List > TileEntityMacerator_recipes; - private static List TileEntityRecycler_blacklist; - private static List > TileEntityMatter_amplifiers; -} - diff --git a/src/minecraft/ic2/api/Items.java b/src/minecraft/ic2/api/Items.java deleted file mode 100644 index 0579f3150..000000000 --- a/src/minecraft/ic2/api/Items.java +++ /dev/null @@ -1,401 +0,0 @@ -package ic2.api; - -import net.minecraft.item.ItemStack; - -/** - * Provides access to IC2 blocks and items. - * - * Some items can be acquired through the ore dictionary which is the recommended way. - * The items are initialized while IC2 is being loaded - try to use ModsLoaded() or load your mod after IC2. - * Some blocks/items can be disabled by a config setting, so it's recommended to check if they're null first. - * - * Getting the associated Block/Item for an ItemStack x: - * Blocks: Block.blocksList[x.itemID] - * Items: x.getItem() - */ -public final class Items { - /** - * Get an ItemStack for a specific item name, example: Items.getItem("resin") - * See the list below for item names. - * Make sure to copy() the ItemStack if you want to modify it. - * - * @param name item name - * @return The item or null if the item does not exist or an error occurred - */ - public static ItemStack getItem(String name) { - try { - if (Ic2Items == null) Ic2Items = Class.forName(getPackage() + ".core.Ic2Items"); - - Object ret = Ic2Items.getField(name).get(null); - - if (ret instanceof ItemStack) { - return (ItemStack) ret; - } else { - return null; - } - } catch (Exception e) { - System.out.println("IC2 API: Call getItem failed for "+name); - - return null; - } - } - - /* Possible values: - - ----- blocks ----- - - ores - copperOre Copper Ore block, currently not meta sensitive, meta in ItemStack set to 0, ore dictionary: oreCopper, null with enableWorldGenOreCopper=false - tinOre Tin Ore block, currently not meta sensitive, meta in ItemStack set to 0, ore dictionary: oreTin, null with enableWorldGenOreTin=false - uraniumOre Tin Ore block, currently not meta sensitive, meta in ItemStack set to 0, ore dictionary: oreUranium, null with enableWorldGenOreUranium=false - - rubber related - Rubber wood block, meta reflects the state, meta in ItemStack set to 0, ore dictionary: woodRubber (with meta 0), null with enableWorldGenTreeRubber=false - dropped (as an item) -> metadata 0 - block, no resin spot -> metadata 0 or 1 - block, wet resin spot -> metadata 2-5 (according to the side) - block, dry resin spot -> metadata 8-11 (wet state + 6) - - rubberWood - rubberLeaves Rubber Leaves block, currently not meta sensitive, meta in ItemStack set to 0, null with enableWorldGenTreeRubber=false - rubberSapling Rubber Sapling block, currently not meta sensitive, meta in ItemStack set to 0, null with enableWorldGenTreeRubber=false - resinSheet Resin Sheet block, currently not meta sensitive - rubberTrampoline Rubber Trampoline block, meta reflects internal state, meta in ItemStack set to 0 - - building/storage - ironFence Iron Fence block, currently not meta sensitive - - reinforcedStone Reinforced Stone block, currently not meta sensitive - reinforcedGlass Reinforced Glass block, currently not meta sensitive - reinforcedDoorBlock Reinforced Door block, meta reflects the state (see vanilla doors), meta in ItemStack set to 0 - - constructionFoam Construction Foam block, currently not meta sensitive - constructionFoamWall Construction Foam Wall block, meta = color, implements IPaintableBlock - scaffold Scaffold block, meta reflects internal physical model data - - bronzeBlock Bronze block, meta sensitive - copperBlock Copper block, meta sensitive - tinBlock Tin block, meta sensitive - uraniumBlock Uranium block, meta sensitive - - cables (when placed as a block, inventory items are different TE implements IEnergyConductor) - copperCableBlock Copper Cable block, meta sensitive - insulatedCopperCableBlock Insulated Copper Cable block, meta sensitive - - goldCableBlock Gold Cable block, meta sensitive - insulatedGoldCableBlock Insulated Gold Cable block, meta sensitive - doubleInsulatedGoldCableBlock Double Insulated Gold Cable block, meta sensitive - - ironCableBlock Iron Cable block, meta sensitive - insulatedIronCableBlock Insulated Iron Cable block, meta sensitive - doubleInsulatedIronCableBlock Double Insulated Iron Cable block, meta sensitive - trippleInsulatedIronCableBlock Tripple Insulated Iron Cable block, meta sensitive - - glassFiberCableBlock Glass Fiber Cable block, meta sensitive - - tinCableBlock Tin Cable block, meta sensitive - - detectorCableBlock Detector Cable block, meta sensitive - splitterCableBlock Splitter Cable block, meta sensitive - - generators + related (TE implements IEnergySource ex. reactorChamber) - generator Generator block, meta sensitive - geothermalGenerator Geothermal Generator block, meta sensitive - waterMill Water Mill block, meta sensitive - solarPanel Solar Panel block, meta sensitive - windMill Wind Mill block, meta sensitive - nuclearReactor Nuclear Reactor block, meta sensitive - reactorChamber Reactor Chamber block, currently not meta sensitive - - energy storages (TE implements IEnergySource and IEnergyConductor) - batBox BatBox block, meta sensitive - mfeUnit MFE Unit block, meta sensitive - mfsUnit MFS Unit block, meta sensitive - - transformers (TE implements IEnergySource and IEnergyConductor) - lvTransformer LV Transformer block, meta sensitive - mvTransformer MV Transformer block, meta sensitive - hvTransformer HV Transformer block, meta sensitive - - machines + related (TE implements IEnergySink ex. machine, miningPipe, miningPipeTip) - machine Machine block, meta sensitive - advancedMachine Advanced Machine block, meta sensitive - - ironFurnace Iron Furnace block, meta sensitive - electroFurnace Electro Furnace block, meta sensitive - macerator Macerator block, meta sensitive - extractor Extractor block, meta sensitive - compressor Compressor block, meta sensitive - canner Canner block, meta sensitive - miner Miner block, meta sensitive - pump Pump block, meta sensitive - magnetizer Magnetizer block, meta sensitive - electrolyzer Electrolyzer block, meta sensitive - recycler Recycler block, meta sensitive - inductionFurnace Induction Furnace block, meta sensitive - massFabricator Mass Fabricator block, meta sensitive - terraformer Terraformer block, meta sensitive - teleporter Teleporter block, meta sensitive - teslaCoil Tesla Coil block, meta sensitive - luminator Passive (dark) Luminator block, meta = facing - activeLuminator Active (bright) Luminator block, meta = facing - - miningPipe Mining Pipe block, currently not meta sensitive, meta in ItemStack set to 0 - miningPipeTip Mining Pipe Tip block, currently not meta sensitive, meta in ItemStack set to 0 - - personal blocks - personalSafe Personal Safe block, meta sensitive - tradeOMat Trade-O-Mat block, meta sensitive - energyOMat Energy-O-Mat block, meta sensitive - - explosives - industrialTnt Industrial TNT block, currently not meta sensitive - nuke Nuke block, currently not meta sensitive - dynamiteStick Dynamite Stick block, meta = placement, meta in ItemStack set to 0 - dynamiteStickWithRemote Dynamite Stick with Remote block, meta = placement, meta in ItemStack set to 0 - - Agriculture Stuff - crop Crop Block, empty, not meta sensitive - - - ----- items ----- - - rubber + related - resin Resin item, currently not meta sensitive - rubber Rubber item, currently not meta sensitive, ore dictionary: itemRubber - - ore drops - uraniumDrop Uranium Drop item, currently not meta sensitive, ore dictionary: itemDropUranium - - dusts - bronzeDust Bronze Dust item, currently not meta sensitive - clayDust Clay Dust item, currently not meta sensitive - coalDust Coal Dust item, currently not meta sensitive - copperDust Copper Dust item, currently not meta sensitive - goldDust Gold Dust item, currently not meta sensitive - ironDust Iron Dust item, currently not meta sensitive - silverDust Silver Dust item, currently not meta sensitive - smallIronDust Small Iron Dust item, currently not meta sensitive - tinDust Tin Dust item, currently not meta sensitive - hydratedCoalDust Hydrated Coal Dust item, currently not meta sensitive - - ingots - refinedIronIngot Refined Iron Ingot item, currently not meta sensitive, ore dictionary: ingotRefinedIron - copperIngot Copper Ingot item, currently not meta sensitive, ore dictionary: ingotCopper - tinIngot Tin Ingot item, currently not meta sensitive, ore dictionary: ingotTin - bronzeIngot Bronze Ingot item, currently not meta sensitive, ore dictionary: ingotBronze - mixedMetalIngot Mixed Metal Ingot item, currently not meta sensitive - uraniumIngot Uranium Ingot item, currently not meta sensitive, ore dictionary: ingotUranium - - tools/weapons (without electric tools) - treetap Treetap item, meta = damage value - wrench Wrench item, meta = damage value - cutter Insulation Cutter item, meta = damage value - constructionFoamSprayer Construction Foam Sprayer item, meta = charges (as of v1.45) - - bronzePickaxe Bronze Pickaxe item, meta = damage value - bronzeAxe Bronze Axe item, meta = damage value - bronzeSword Bronze Sword item, meta = damage value - bronzeShovel Bronze Shovel item, meta = damage value - bronzeHoe Bronze Hoe item, meta = damage value - - el. tools/devices/weapons - miningDrill Mining Drill item, meta = visual charge indicator, implements IElectricItem - diamondDrill Diamond Tipped Mining Drill item, meta = visual charge indicator, implements IElectricItem - chainsaw Chainsaw item, meta = visual charge indicator, implements IElectricItem - electricWrench Electric Wrench item, meta = visual charge indicator, implements IElectricItem - electricTreetap Electric Treetap item, meta = visual charge indicator, implements IElectricItem - miningLaser Mining Laser item, meta = visual charge indicator, implements IElectricItem - - ecMeter EC-Mater item, currently not meta sensitive - odScanner Ore Density Scanner item, meta = damage value for charge level, implements IElectricItem - ovScanner Ore Value Scanner item, meta = visual charge indicator, implements IElectricItem - - frequencyTransmitter Frequency Transmitter item, currently not meta sensitive - - nanoSaber Idle Nano Saber item, meta = visual charge indicator, implements IElectricItem - enabledNanoSaber Enabled Nano Saber item, meta = visual charge indicator, implements IElectricItem - - armor/wearable - rubberBoots Rubber Boots item, meta = damage value - - bronzeHelmet Bronze Helmet Armor item, meta = damage value - bronzeChestplate Bronze Chestplate Armor item, meta = damage value - bronzeLeggings Bronze Leggings Armor item, meta = damage value - bronzeBoots Bronze Boots Armor item, meta = damage value - - compositeArmor Composite Armor item, meta = damage value for charge level - - nanoHelmet Nano Helmet Armor item, meta = visual charge indicator, implements IElectricItem - nanoBodyarmor Nano Bodyarmor item, meta = visual charge indicator, implements IElectricItem - nanoLeggings Nano Leggings Armor item, meta = visual charge indicator, implements IElectricItem - nanoBoots Nano Boots Armor item, meta = visual charge indicator, implements IElectricItem - - quantumHelmet Quantum Helmet Armor item, meta = visual charge indicator, implements IElectricItem - quantumBodyarmor Quantum Bodyarmor item, meta = visual charge indicator, implements IElectricItem - quantumLeggings Quantum Leggings Armor item, meta = visual charge indicator, implements IElectricItem - quantumBoots Quantum Boots Armor item, meta = visual charge indicator, implements IElectricItem - - jetpack Jetpack item, meta = damage value for fuel level - electricJetpack Electric Jetpack item, meta = visual charge indicator, implements IElectricItem - - batPack BatPack item, meta = visual charge indicator, implements IElectricItem, can provide energy - lapPack LapPack item, meta = visual charge indicator, implements IElectricItem, can provide energy - - cfPack CF Pack item, meta = charges (as of v1.45) - - solarHelmet Solar Helmet item, currently not meta sensitive - staticBoots Static Boots item, currently not meta sensitive - - batteries - reBattery Empty RE Battery item, currently not meta sensitive, implements IElectricItem - chargedReBattery RE Battery item, meta = visual charge indicator, implements IElectricItem, can provide energy - energyCrystal Energy Crystal item, meta = visual charge indicator, implements IElectricItem, can provide energy - lapotronCrystal Lapotron Crystal item, meta = visual charge indicator, implements IElectricItem, can provide energy - suBattery SU Battery item, currently not meta sensitive - - cables - copperCableItem Copper Cable item, meta sensitive - insulatedCopperCableItem Insulated Copper Cable item, meta sensitive - - goldCableItem Gold Cable item, meta sensitive - insulatedGoldCableItem Insulated Gold Cable item, meta sensitive - doubleInsulatedGoldCableItem Double Insulated Gold Cable item, meta sensitive - - ironCableItem Iron Cable item, meta sensitive - insulatedIronCableItem Insulated Iron Cable item, meta sensitive - doubleInsulatedIronCableItem Double Insulated Iron Cable item, meta sensitive - trippleInsulatedIronCableItem Tripple Insulated Iron Cable item, meta sensitive - - glassFiberCableItem Glass Fiber Cable item, meta sensitive - - tinCableItem Tin Cable item, meta sensitive - - detectorCableItem Detector Cable item, meta sensitive - splitterCableItem Splitter Cable item, meta sensitive - - cells/containers (without reactor components) - cell Empty Cell item, currently not meta sensitive - lavaCell Lava Cell item, currently not meta sensitive - hydratedCoalCell Hydrated Coal Cell item, currently not meta sensitive - bioCell Bio Cell item, currently not meta sensitive - coalfuelCell Coalfuel Cell item, currently not meta sensitive - biofuelCell Biofuel Cell item, currently not meta sensitive - waterCell Water Cell item, currently not meta sensitive - electrolyzedWaterCell Electrolyzed Water Cell item, currently not meta sensitive - - fuelCan Empty Fuel Can item, currently not meta sensitive - filledFuelCan Fuel Can item, meta = fuel value (as of v1.45) - - tinCan Empty Tin Can item, currently not meta sensitive - filledTinCan Filled Tin Can item, currently not meta sensitive - - reactor components - uraniumCell Uranium Cell item, meta = damage value - coolingCell Cooling Cell item, meta = damage value - - depletedIsotopeCell Depleted Isotope Cell item, meta = damage value - reEnrichedUraniumCell Re-Enriched Uranium Cell item, currently not meta sensitive - nearDepletedUraniumCell Near-Depleted Uranium Cell item, currently not meta sensitive - - integratedReactorPlating Integrated Reactor Plating item, meta = damage value - integratedHeatDisperser Integrated Heat Disperser item, meta = damage value - - terraformer blueprints - terraformerBlueprint Empty Terraformer Blueprint item, currently not meta sensitive - cultivationTerraformerBlueprint Cultivation Terraformer Blueprint item, currently not meta sensitive - irrigationTerraformerBlueprint Irrigation Terraformer Blueprint item, currently not meta sensitive - chillingTerraformerBlueprint Chilling Terraformer Blueprint item, currently not meta sensitive - desertificationTerraformerBlueprint Desertification Terraformer Blueprint item, currently not meta sensitive - flatificatorTerraformerBlueprint Flatificator Terraformer Blueprint item, currently not meta sensitive - mushroomTerraformerBlueprint Mushroom Terraformer Blueprint item, currently not meta sensitive - - diamond chain - coalBall Coal Ball item, currently not meta sensitive - compressedCoalBall Compressed Coal Ball item, currently not meta sensitive - coalChunk Coal Chunk item, currently not meta sensitive - industrialDiamond Industrial Diamond item, currently not meta sensitive, DEPRECATED - - recycler chain - scrap Scrap item, currently not meta sensitive - scrapBox Scrap Box item, currently not meta sensitive - - fuel production chain - hydratedCoalClump Hydrated Coal Clump item, currently not meta sensitive - plantBall Plant Ball item, currently not meta sensitive - compressedPlantBall Compressed Plant Ball item, currently not meta sensitive - - painting - painter Painter item, currently not meta sensitive - - blackPainter Black Painter item, meta = damage value - redPainter Red Painter item, meta = damage value - greenPainter Green Painter item, meta = damage value - brownPainter Brown Painter item, meta = damage value - bluePainter Blue Painter item, meta = damage value - purplePainter Purple Painter item, meta = damage value - cyanPainter Cyan Painter item, meta = damage value - lightGreyPainter Light Grey Painter item, meta = damage value - darkGreyPainter Dark Grey Painter item, meta = damage value - pinkPainter Pink Painter item, meta = damage value - limePainter Lime Painter item, meta = damage value - yellowPainter Yellow Painter item, meta = damage value - cloudPainter Cloud Painter item, meta = damage value - magentaPainter Magenta Painter item, meta = damage value - orangePainter Orange Painter item, meta = damage value - whitePainter White Painter item, meta = damage value - - explosives + related - dynamite Throwable Dynamite item, currently not meta sensitive - stickyDynamite Throwable Sticky Dynamite item, currently not meta sensitive - - remote Dynamite Remote item, currently not meta sensitive - - misc intermediate recipe ingredients - electronicCircuit Electronic Circuit item, currently not meta sensitive - advancedCircuit Advanced Circuit item, currently not meta sensitive - - advancedAlloy Advanced Alloy item, currently not meta sensitive - - carbonFiber Raw Carbon Fiber item, currently not meta sensitive - carbonMesh Raw Carbon Mesh item, currently not meta sensitive - carbonPlate Carbon Plate item, currently not meta sensitive - - matter UU-Matter item, currently not meta sensitive - iridiumOre Iridium Ore item, currently not meta sensitive - iridiumPlate Iridium Plate item, currently not meta sensitive - - upgrade modules - overclockerUpgrade overclocker upgrade item, meta sensitive - transformerUpgrade transformer upgrade item, meta sensitive - energyStorageUpgrade energy storage upgrade item, meta sensitive - - misc - coin Coin item, currently not meta sensitive - reinforcedDoor Reinforced Door item, currently not meta sensitive - constructionFoamPellet Construction Foam Pellet item, currently not meta sensitive - cropSeed Crop seeds, stuff stored in NBT, don't use for crafting recipes! - cropnalyzer Cropnalyzer handheld device - fertilizer Basic IC2Item, used to provide nutrients toCropBlocks - hydratingCell Cell used to hydrate Crops, meta = Content, 0 = Full, 9999 = Near empty - electricHoe Electric Hoe, meta = charge level - solarHelmet Solar Helmet item, currently not meta sensitive - terraWart Terra Wart item, cures potion effects - weedEx Weed-EX can, meta = uses left - - */ - - /** - * Get the base IC2 package name, used internally. - * - * @return IC2 package name, if unable to be determined defaults to ic2 - */ - private static String getPackage() { - Package pkg = Items.class.getPackage(); - if (pkg != null) return pkg.getName().substring(0, pkg.getName().lastIndexOf('.')); - else return "ic2"; - } - - private static Class Ic2Items; -} - diff --git a/src/minecraft/ic2/api/TECrop.java b/src/minecraft/ic2/api/TECrop.java deleted file mode 100644 index d8b957b81..000000000 --- a/src/minecraft/ic2/api/TECrop.java +++ /dev/null @@ -1,161 +0,0 @@ -package ic2.api; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; - -/** - * Provides access to a crop tile entity. Contains all methods and fields you can access from your CropCard. - */ -public abstract class TECrop extends TileEntity -{ - /** - * ID of the plant currently on the crop. - * -1 if there is no plant currently on the crop. - */ - public short id = -1; - - /** - * Current size of the plant. - * 1 is the starting size and the maximum size varies from plant to plant. - */ - public byte size = 0; - - /** - * Growth ability of a plant. - * Higher values give faster growth. - */ - public byte statGrowth = 0; - /** - * Chances and amount of gain and seeds from harvested crops. - * Higher values give more drops. - */ - public byte statGain = 0; - /** - * Ability for the plant to resist trampling. - * Higher values give more resistance against trampling. - */ - public byte statResistance = 0; - - /** - * Scan level, increases each time a seed goes through analysis. - */ - public byte scanLevel = 0; - - /** - * Custom data stored along a TECrop. - */ - public short[] custumData = new short[16]; - - /** - * Crop nutrients. - * Ranges from 0 (empty) to 100 (full). - */ - public int nutrientStorage = 0; - /** - * Crop hydration. - * Values are: - * - 0 for nothing - * - 1-10 for water hydration - * - 11-100 for distilled water (hydration cell) hydration - */ - public int waterStorage = 0; - /** - * Remaining duration of WeedEX - * PRevents weed from growing and protects against (unimplemented) insects or similar stuff - */ - public int exStorage = 0; - - /** - * Crop humidity. - * Ranges from 0 (dry) to 10 (humid). - * Updates every couple of seconds or when an update is requested. - * - * @see #updateState() - */ - public abstract byte getHumidity(); - - /** - * Get the crop's nutrient level. - * Ranges from 0 (empty) to 10 (full). - * Updates every couple of seconds or when an update is requested. - * - * @see #updateState() - */ - public abstract byte getNutrients(); - - /** - * Get the crop's air quality. - * Ranges from 0 (cluttered) to 10 (fresh). - * Updates every couple of seconds or when an update is requested. - * - * @see #updateState() - * - * @return Crop air quality - */ - public abstract byte getAirQuality(); - - /** - * Get the crop's light level. - * - * @return Crop light level - */ - public int getLightLevel() - { - return worldObj.getBlockLightValue(xCoord, yCoord, zCoord); - } - - - /** - * Pick the crop, removing and giving seeds for the plant. - * - * @param manual whether it was done by hand (not automated) - * @return true if successfully picked - */ - public abstract boolean pick(boolean manual); - - /** - * Harvest the crop, turning it into gain and resetting its size. - * - * @param manual whether it one by hand (not automated) - * @return true if successfully harvested - */ - public abstract boolean harvest(boolean manual); - - /** - * Fully clears the crop without dropping anything. - */ - public abstract void reset(); - - /** - * Request a texture and lighting update. - */ - public abstract void updateState(); - - /** - * Check if a block is under the farmland containing the crop. - * Searches up to 2 blocks below the farmland or an air space, whichever appears first. - * - * @param block block to search - * @return Whether the block was found - */ - public abstract boolean isBlockBelow(Block block); - - /** - * Generate plant seeds with the given parameters. - * - * @param plant plant ID - * @param growth plant growth stat - * @param gain plant gain stat - * @param resis plant resistance stat - * @param scan plant scan level - * @return Plant seed item - */ - public abstract ItemStack generateSeeds(short plant, byte growth, byte gain, byte resis, byte scan); - - /** - * For internal usage only. - */ - public abstract void addLocal(String s1, String s2); - -} diff --git a/src/minecraft/ic2/api/energy/EnergyNet.java b/src/minecraft/ic2/api/energy/EnergyNet.java deleted file mode 100644 index 724aa9bc9..000000000 --- a/src/minecraft/ic2/api/energy/EnergyNet.java +++ /dev/null @@ -1,175 +0,0 @@ -package ic2.api.energy; - -import java.lang.reflect.Method; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -import ic2.api.energy.tile.IEnergySource; - -/** - * Provides access to the energy network. - */ -public final class EnergyNet { - /** - * Gets the EnergyNet instance for the specified world. - * - * @param world world - * @return EnergyNet instance for the world - */ - public static EnergyNet getForWorld(World world) { - try { - if (EnergyNet_getForWorld == null) EnergyNet_getForWorld = Class.forName(getPackage() + ".core.EnergyNet").getMethod("getForWorld", World.class); - - return new EnergyNet(EnergyNet_getForWorld.invoke(null, world)); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - private EnergyNet(Object energyNetInstance) { - this.energyNetInstance = energyNetInstance; - } - - /** - * Add a tile entity to the energy network. - * The tile entity has to be valid and initialized. - * - * @param addedTileEntity tile entity to add - * - * @deprecated use EnergyTileLoadEvent instead - */ - @Deprecated - public void addTileEntity(TileEntity addedTileEntity) { - try { - if (EnergyNet_addTileEntity == null) EnergyNet_addTileEntity = Class.forName(getPackage() + ".core.EnergyNet").getMethod("addTileEntity", TileEntity.class); - - EnergyNet_addTileEntity.invoke(energyNetInstance, addedTileEntity); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Removes a tile entity from the energy network. - * The tile entity has to be still valid. - * - * @param removedTileEntity tile entity to remove - * - * @deprecated use EnergyTileUnloadEvent instead - */ - @Deprecated - public void removeTileEntity(TileEntity removedTileEntity) { - try { - if (EnergyNet_removeTileEntity == null) EnergyNet_removeTileEntity = Class.forName(getPackage() + ".core.EnergyNet").getMethod("removeTileEntity", TileEntity.class); - - EnergyNet_removeTileEntity.invoke(energyNetInstance, removedTileEntity); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Emit energy from an energy source to the energy network. - * - * @param energySource energy source to emit energy from - * @param amount amount of energy to emit in EU - * @return Leftover (unused) power - * - * @deprecated use EnergyTileSourceEvent instead - */ - @Deprecated - public int emitEnergyFrom(IEnergySource energySource, int amount) { - try { - if (EnergyNet_emitEnergyFrom == null) EnergyNet_emitEnergyFrom = Class.forName(getPackage() + ".core.EnergyNet").getMethod("emitEnergyFrom", IEnergySource.class, Integer.TYPE); - - return ((Integer) EnergyNet_emitEnergyFrom.invoke(energyNetInstance, energySource, amount)).intValue(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Get the amount of energy currently being conducted by a conductor. - * Call this twice with a delay to get the average conducted power by doing (call2 - call1) / 2. - * - * @param tileEntity conductor - * - * @deprecated use getTotalEnergyEmitted and getTotalEnergySunken instead - */ - @Deprecated - public long getTotalEnergyConducted(TileEntity tileEntity) { - try { - if (EnergyNet_getTotalEnergyConducted == null) EnergyNet_getTotalEnergyConducted = Class.forName(getPackage() + ".core.EnergyNet").getMethod("getTotalEnergyConducted", TileEntity.class); - - return ((Long) EnergyNet_getTotalEnergyConducted.invoke(energyNetInstance, tileEntity)).longValue(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * determine how much energy has been emitted by the EnergyEmitter specified - * - * @note call this twice with x ticks delay to get the avg. emitted power p = (call2 - call1) / x EU/tick - * - * @param tileEntity energy emitter - */ - public long getTotalEnergyEmitted(TileEntity tileEntity) { - try { - if (EnergyNet_getTotalEnergyEmitted == null) EnergyNet_getTotalEnergyEmitted = Class.forName(getPackage() + ".core.EnergyNet").getMethod("getTotalEnergyEmitted", TileEntity.class); - - return ((Long) EnergyNet_getTotalEnergyEmitted.invoke(energyNetInstance, tileEntity)).longValue(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * determine how much energy has been sunken by the EnergySink specified - * - * @note call this twice with x ticks delay to get the avg. sunken power p = (call2 - call1) / x EU/tick - * - * @param tileEntity energy emitter - */ - public long getTotalEnergySunken(TileEntity tileEntity) { - try { - if (EnergyNet_getTotalEnergySunken == null) EnergyNet_getTotalEnergySunken = Class.forName(getPackage() + ".core.EnergyNet").getMethod("getTotalEnergySunken", TileEntity.class); - - return ((Long) EnergyNet_getTotalEnergySunken.invoke(energyNetInstance, tileEntity)).longValue(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Get the base IC2 package name, used internally. - * - * @return IC2 package name, if unable to be determined defaults to ic2 - */ - private static String getPackage() { - Package pkg = EnergyNet.class.getPackage(); - - if (pkg != null) { - String packageName = pkg.getName(); - - return packageName.substring(0, packageName.length() - ".api.energy".length()); - } - - return "ic2"; - } - - /** - * Instance of the energy network. - */ - Object energyNetInstance; - - private static Method EnergyNet_getForWorld; - private static Method EnergyNet_addTileEntity; - private static Method EnergyNet_removeTileEntity; - private static Method EnergyNet_emitEnergyFrom; - private static Method EnergyNet_getTotalEnergyConducted; - private static Method EnergyNet_getTotalEnergyEmitted; - private static Method EnergyNet_getTotalEnergySunken; -} - diff --git a/src/minecraft/ic2/api/energy/event/EnergyTileEvent.java b/src/minecraft/ic2/api/energy/event/EnergyTileEvent.java deleted file mode 100644 index c8faea4f9..000000000 --- a/src/minecraft/ic2/api/energy/event/EnergyTileEvent.java +++ /dev/null @@ -1,17 +0,0 @@ -package ic2.api.energy.event; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.event.world.WorldEvent; - -import ic2.api.energy.tile.IEnergyTile; - -public class EnergyTileEvent extends WorldEvent { - public final IEnergyTile energyTile; - - public EnergyTileEvent(IEnergyTile energyTile) { - super(((TileEntity) energyTile).worldObj); - - this.energyTile = energyTile; - } -} - diff --git a/src/minecraft/ic2/api/energy/event/EnergyTileLoadEvent.java b/src/minecraft/ic2/api/energy/event/EnergyTileLoadEvent.java deleted file mode 100644 index b80d45b30..000000000 --- a/src/minecraft/ic2/api/energy/event/EnergyTileLoadEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package ic2.api.energy.event; - -import ic2.api.energy.tile.IEnergyTile; - -/** - * Event announcing new energy tiles. - * - * This event notifies subscribers of loaded energy tiles, e.g. after getting - * loaded through the chunk they are in or after being placed down by the - * player or another deployer mechanism. - * - * Every energy tile which wants to get connected to the IC2 Energy Network has - * to either post this event or alternatively call EnergyNet.addTileEntity(). - * - * You may use this event to build a static representation of energy tiles for - * your own energy grid implementation if you need to. It's not required if you - * always lookup energy paths on demand. - */ -public class EnergyTileLoadEvent extends EnergyTileEvent { - public EnergyTileLoadEvent(IEnergyTile energyTile) { - super(energyTile); - } -} - diff --git a/src/minecraft/ic2/api/energy/event/EnergyTileSourceEvent.java b/src/minecraft/ic2/api/energy/event/EnergyTileSourceEvent.java deleted file mode 100644 index 80c230c31..000000000 --- a/src/minecraft/ic2/api/energy/event/EnergyTileSourceEvent.java +++ /dev/null @@ -1,33 +0,0 @@ -package ic2.api.energy.event; - -import ic2.api.energy.tile.IEnergySource; - -/** - * Event announcing an energy source operation. - * - * This event notifies subscribers of energy sources trying to push energy into - * an energy grid. - * - * The amount field indicates the maximum amount of energy left to be - * distributed. You have to substract the amount of energy you accepted from - * 'amount'. - * - * The IEnergySource posting this event has to check 'amount' to see how much - * energy has not been used up and adjust its output buffer accordingly - * (usually buffer -= 'initial amount' - 'amount after posting the event') - */ -public class EnergyTileSourceEvent extends EnergyTileEvent { - /** - * Amount of energy provided by the energy source. - * - * amount needs to be adjusted to show the remaining unused energy. - */ - public int amount; - - public EnergyTileSourceEvent(IEnergySource energySource, int amount) { - super(energySource); - - this.amount = amount; - } -} - diff --git a/src/minecraft/ic2/api/energy/event/EnergyTileUnloadEvent.java b/src/minecraft/ic2/api/energy/event/EnergyTileUnloadEvent.java deleted file mode 100644 index 5e0463752..000000000 --- a/src/minecraft/ic2/api/energy/event/EnergyTileUnloadEvent.java +++ /dev/null @@ -1,25 +0,0 @@ -package ic2.api.energy.event; - -import ic2.api.energy.tile.IEnergyTile; - -/** - * Event announcing terminated energy tiles. - * - * This event notifies subscribers of unloaded energy tiles, e.g. after getting - * unloaded through the chunk they are in or after being destroyed by the - * player or another block pick/destruction mechanism. - * - * Every energy tile which wants to get disconnected from the IC2 Energy - * Network has to either post this event or alternatively call - * EnergyNet.removeTileEntity(). - * - * You may use this event to build a static representation of energy tiles for - * your own energy grid implementation if you need to. It's not required if you - * always lookup energy paths on demand. - */ -public class EnergyTileUnloadEvent extends EnergyTileEvent { - public EnergyTileUnloadEvent(IEnergyTile energyTile) { - super(energyTile); - } -} - diff --git a/src/minecraft/ic2/api/energy/tile/IEnergyAcceptor.java b/src/minecraft/ic2/api/energy/tile/IEnergyAcceptor.java deleted file mode 100644 index c4bb85bcd..000000000 --- a/src/minecraft/ic2/api/energy/tile/IEnergyAcceptor.java +++ /dev/null @@ -1,22 +0,0 @@ -package ic2.api.energy.tile; - -import net.minecraft.tileentity.TileEntity; - -import ic2.api.Direction; - -/** - * For internal usage only. - * - * @see IEnergySink - * @see IEnergyConductor - */ -public interface IEnergyAcceptor extends IEnergyTile { - /** - * Determine if this acceptor can accept current from an adjacent emitter in a direction. - * - * @param emitter energy emitter - * @param direction direction the energy is being received from - */ - boolean acceptsEnergyFrom(TileEntity emitter, Direction direction); -} - diff --git a/src/minecraft/ic2/api/energy/tile/IEnergyConductor.java b/src/minecraft/ic2/api/energy/tile/IEnergyConductor.java deleted file mode 100644 index 2bfc8b6cf..000000000 --- a/src/minecraft/ic2/api/energy/tile/IEnergyConductor.java +++ /dev/null @@ -1,51 +0,0 @@ -package ic2.api.energy.tile; - -/** - * Tile entities which conduct energy pulses without buffering (mostly cables) have to implement this - * interface. - */ -public interface IEnergyConductor extends IEnergyAcceptor, IEnergyEmitter { - /** - * Energy loss for the conductor in EU per block. - * - * @return Energy loss - */ - double getConductionLoss(); - - /** - * Amount of energy the insulation will handle before shocking nearby players and mobs. - * - * @return Insulation energy absorption in EU - */ - int getInsulationEnergyAbsorption(); - - /** - * Amount of energy the insulation will handle before it is destroyed. - * Ensure that this value is greater than the insulation energy absorption + 64. - * - * @return Insulation-destroying energy in EU - */ - int getInsulationBreakdownEnergy(); - - /** - * Amount of energy the conductor will handle before it melts. - * - * @return Conductor-destroying energy in EU - */ - int getConductorBreakdownEnergy(); - - /** - * Remove the conductor's insulation if the insulation breakdown energy was exceeded. - * - * @see #getInsulationBreakdownEnergy() - */ - void removeInsulation(); - - /** - * Remove the conductor if the conductor breakdown energy was exceeded. - * - * @see #getConductorBreakdownEnergy() - */ - void removeConductor(); -} - diff --git a/src/minecraft/ic2/api/energy/tile/IEnergyEmitter.java b/src/minecraft/ic2/api/energy/tile/IEnergyEmitter.java deleted file mode 100644 index 367349f85..000000000 --- a/src/minecraft/ic2/api/energy/tile/IEnergyEmitter.java +++ /dev/null @@ -1,23 +0,0 @@ -package ic2.api.energy.tile; - -import net.minecraft.tileentity.TileEntity; - -import ic2.api.Direction; - -/** - * For internal usage only. - * - * @see IEnergySource - * @see IEnergyConductor - */ -public interface IEnergyEmitter extends IEnergyTile { - /** - * Determine if this emitter can emit energy to an adjacent receiver. - * - * @param receiver receiver - * @param direction direction the receiver is from the emitter - * @return Whether energy should be emitted - */ - boolean emitsEnergyTo(TileEntity receiver, Direction direction); -} - diff --git a/src/minecraft/ic2/api/energy/tile/IEnergySink.java b/src/minecraft/ic2/api/energy/tile/IEnergySink.java deleted file mode 100644 index 19013c1b1..000000000 --- a/src/minecraft/ic2/api/energy/tile/IEnergySink.java +++ /dev/null @@ -1,41 +0,0 @@ -package ic2.api.energy.tile; - -import ic2.api.Direction; - -/** - * Allows a tile entity (mostly a machine) to receive energy. - */ -public interface IEnergySink extends IEnergyAcceptor { - /** - * Determine how much energy the sink accepts. - * - * This value is unrelated to getMaxSafeInput(). - * - * Make sure that injectEnergy() does accepts energy if demandsEnergy() returns anything > 0. - * - * @return max accepted input in eu - */ - int demandsEnergy(); - - /** - * Transfer energy to the sink. - * - * @param directionFrom direction from which the energy comes from - * @param amount energy to be transferred - * @return Energy not consumed (leftover) - */ - int injectEnergy(Direction directionFrom, int amount); - - /** - * Determine the amount of eu which can be safely injected into the specific energy sink without exploding. - * - * Typical values are 32 for LV, 128 for MV, 512 for HV and 2048 for EV. A value of Integer.MAX_VALUE indicates no - * limit. - * - * This value is unrelated to demandsEnergy(). - * - * @return max safe input in eu - */ - int getMaxSafeInput(); -} - diff --git a/src/minecraft/ic2/api/energy/tile/IEnergySource.java b/src/minecraft/ic2/api/energy/tile/IEnergySource.java deleted file mode 100644 index d00864881..000000000 --- a/src/minecraft/ic2/api/energy/tile/IEnergySource.java +++ /dev/null @@ -1,15 +0,0 @@ -package ic2.api.energy.tile; - -/** - * Allows a tile entity (mostly a generator) to emit energy. - */ -public interface IEnergySource extends IEnergyEmitter { - /** - * Maximum energy output provided by the source. - * If unsure, use Integer.MAX_VALUE. - * - * @return Maximum energy output - */ - int getMaxEnergyOutput(); -} - diff --git a/src/minecraft/ic2/api/energy/tile/IEnergyTile.java b/src/minecraft/ic2/api/energy/tile/IEnergyTile.java deleted file mode 100644 index 182e10d56..000000000 --- a/src/minecraft/ic2/api/energy/tile/IEnergyTile.java +++ /dev/null @@ -1,18 +0,0 @@ -package ic2.api.energy.tile; - -/** - * For internal usage only. - * - * @see IEnergySink - * @see IEnergySource - * @see IEnergyConductor - */ -public interface IEnergyTile { - /** - * Determine if this tile entity has been added to the energy network - * - * @return Whether the tile entity has been added - */ - boolean isAddedToEnergyNet(); -} - diff --git a/src/minecraft/ic2/api/energy/usage.txt b/src/minecraft/ic2/api/energy/usage.txt deleted file mode 100644 index b01b3c0b5..000000000 --- a/src/minecraft/ic2/api/energy/usage.txt +++ /dev/null @@ -1,101 +0,0 @@ ------------------------------------------------------ --- How to implement your own energy network blocks -- ------------------------------------------------------ - -There are currently three different types of energy network blocks: -- energy sources, e.g. generators or the output side of a storage block/transformer -- energy sinks, e.g. machines or the input side of a storage block/transformer -- conductors, e.g. cables - -Note that storage blocks or transformers are both sources and sinks. - -All those blocks have to have a tile entity which has to implement the interface corresponding to -its function and also post events to the Forge event bus. - -The energy generation, distribution and consumption is strictly limited to the simulating (server) -side, use the proper side checks before posting the related events. One possibility is to check for -FMLCommonHandler.instance().getEffectiveSide().isClient() being false. - -The energy network works by sources pushing energy into the grid through EnergyTileSourceEvent, -conductors will carry the energy to sinks which will then receive it through injectEnergy(). - --- EnergyTileLoadEvent -- - -For all energy network tiles (sources, sinks, conductors) you have to post an EnergyTileLoadEvent. - -The event has to be posted as soon as the implementing tile entity is fully loaded, usually after -loading the chunk which contains it or after the user placing the block. - -The energy net implementation will use the event to add it to its energy grid map, taking it into -account for further energy transfers. - -You can detect the loading by either using the 1st iteration of updateEntity() or by waiting for -the next world tick after TileEntity.validate(). The 2nd approach is obviously more sophisticated -and requires to use some tick queuing mechanism. - -The event can by posted as following: - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); - --- EnergyTileUnloadEvent -- - -Another event every energy tile has to post is the EnergyTileUnloadEvent. - -The event has to be posted as soon as the implementing tile entity is being unloaded, either by -unloading the containing chunk or by destroying the block containing it. - -It's possible to detect the unloading by triggering on both the beginning of -TileEntity.invalidate() and the beginning of TileEntity.onChunkUnload(). - -It is important that the tile entity is still properly linked to the world while posting the unload -event, otherwise the energy net can't find all affected connections. - --- energy source -- - -An energy source has to post the following events: - - EnergyTileLoadEvent on load - - EnergyTileUnloadEvent on unload - - EnergyTileSourceEvent whenever it wants to send energy - -Additionally the interface IEnergySource has to be implemented. - -The EnergyTileSourceEvent contains a field amount, which should be evaluated after having posted -the event. The value determines how much energy couldn't be delivered somewhere. - --- energy sink -- - -An energy sink has to post the following events: - - EnergyTileLoadEvent on load - - EnergyTileUnloadEvent on unload - -Additionally the interface IEnergySink has to be implemented. - -The method demandsEnergy() will be called fairly often and should be implemented with performance -in mind. It's usually recommended to always fill some small internal buffer regardless of other -conditions, e.g. even if an enabling redstone signal is off. - --- energy conductor -- - -An energy conductor has to post the following events: - - EnergyTileLoadEvent on load - - EnergyTileUnloadEvent on unload - -Additionally the interface IEnergyConductor has to be implemented. - - --------------------------------------------------- --- How to implement/add your own energy network -- --------------------------------------------------- - -If you want to create an alternative way of distributing energy, e.g. to have different -distribution rules or to use energy networks provided by other mods, you can register to the energy -tile events and use the interfaces to handle the energy distribution yourself. It's no longer -required to use conversion blocks. - -IC2's EnergyNet itself is built on top of the api events and interfaces, providing their default -use case. - -Note that is you have a pull-type energy network which lets the sinks retrieve energy from the -sources instead of IC2's method of pushing energy from the sources to the sinks, you'll currently -have to monitor the energy sinks regularly for their energy demand and start/stop pulling energy -accordingly. The load and unload events will tell you when to start/stop monitoring demandsEnergy. - diff --git a/src/minecraft/ic2/api/network/INetworkClientTileEntityEventListener.java b/src/minecraft/ic2/api/network/INetworkClientTileEntityEventListener.java deleted file mode 100644 index ed3ea38fe..000000000 --- a/src/minecraft/ic2/api/network/INetworkClientTileEntityEventListener.java +++ /dev/null @@ -1,17 +0,0 @@ -package ic2.api.network; - -import net.minecraft.entity.player.EntityPlayer; - -/** - * Allows a tile entity to receive network events received from clients. - */ -public interface INetworkClientTileEntityEventListener { - /** - * Called when a network event is received. - * - * @param player client which sent the event - * @param event event ID - */ - void onNetworkEvent(EntityPlayer player, int event); -} - diff --git a/src/minecraft/ic2/api/network/INetworkDataProvider.java b/src/minecraft/ic2/api/network/INetworkDataProvider.java deleted file mode 100644 index c3f283e5f..000000000 --- a/src/minecraft/ic2/api/network/INetworkDataProvider.java +++ /dev/null @@ -1,18 +0,0 @@ -package ic2.api.network; - -import java.util.List; - -/** - * Tile entities which want to synchronized specific fields between client and server have to implement this. - * - * The fields don't update themselves, a field update must be sent every time a synchronized field changes. - */ -public interface INetworkDataProvider { - /** - * Get the list of synchronized fields. - * - * @return Names of the synchronized fields - */ - List getNetworkedFields(); -} - diff --git a/src/minecraft/ic2/api/network/INetworkItemEventListener.java b/src/minecraft/ic2/api/network/INetworkItemEventListener.java deleted file mode 100644 index 02ce470da..000000000 --- a/src/minecraft/ic2/api/network/INetworkItemEventListener.java +++ /dev/null @@ -1,18 +0,0 @@ -package ic2.api.network; - -import net.minecraft.entity.player.EntityPlayer; - -/** - * Allows an item to receive network events received from the server. - */ -public interface INetworkItemEventListener { - /** - * Called when a network event is received. - * - * @param metaData item metadata - * @param player player containing the item - * @param event event ID - */ - void onNetworkEvent(int metaData, EntityPlayer player, int event); -} - diff --git a/src/minecraft/ic2/api/network/INetworkTileEntityEventListener.java b/src/minecraft/ic2/api/network/INetworkTileEntityEventListener.java deleted file mode 100644 index fbb4753c5..000000000 --- a/src/minecraft/ic2/api/network/INetworkTileEntityEventListener.java +++ /dev/null @@ -1,14 +0,0 @@ -package ic2.api.network; - -/** - * Allows a tile entity to receive network events received from the server. - */ -public interface INetworkTileEntityEventListener { - /** - * Called when a network event is received. - * - * @param event Event ID - */ - void onNetworkEvent(int event); -} - diff --git a/src/minecraft/ic2/api/network/INetworkUpdateListener.java b/src/minecraft/ic2/api/network/INetworkUpdateListener.java deleted file mode 100644 index 09414ae38..000000000 --- a/src/minecraft/ic2/api/network/INetworkUpdateListener.java +++ /dev/null @@ -1,14 +0,0 @@ -package ic2.api.network; - -/** - * Allows a tile entity to receive field sync updates received from the server. - */ -public interface INetworkUpdateListener { - /** - * Called when a field is synchronized. - * - * @param field field synchronized - */ - void onNetworkUpdate(String field); -} - diff --git a/src/minecraft/ic2/api/network/NetworkHelper.java b/src/minecraft/ic2/api/network/NetworkHelper.java deleted file mode 100644 index 0981dafbe..000000000 --- a/src/minecraft/ic2/api/network/NetworkHelper.java +++ /dev/null @@ -1,243 +0,0 @@ -package ic2.api.network; - -import java.lang.reflect.Method; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -/** - * Provides methods to initiate events and synchronize tile entity fields in SMP. - * - * The methods are transparent between singleplayer and multiplayer - if a method is called in - * singleplayer, the associated callback will be locally executed. The implementation is different - * between the client and server versions of IC2. - * - * You'll usually want to use the server->client methods defined here to synchronize information - * which is needed by the clients outside the GUI, such as rendering the block, playing sounds or - * producing effects. Anything which is only visible inside the GUI should be synchronized through - * the Container class associated to the GUI in Container.updateProgressBar(). - */ -public final class NetworkHelper { - // server -> client - - - /** - * Schedule a TileEntity's field to be updated to the clients in range. - * - * The updater will query the field's value during the next update, updates happen usually - * every 2 ticks. If low latency is important use initiateTileEntityEvent instead. - * - * IC2's network updates have to get triggered every time, it doesn't continuously poll/send - * the field value. Just call updateTileEntityField after every change to a field which needs - * network synchronization. - * - * The following field data types are currently supported: - * - int, int[], short, short[], byte, byte[], long, long[] - * - float, float[], double, double[] - * - boolean, boolean[] - * - String, String[] - * - ItemStack - * - NBTBase (includes NBTTagCompound) - * - Block, Item, Achievement, Potion, Enchantment - * - ChunkCoordinates, ChunkCoordIntPair - * - TileEntity (does not sync the actual tile entity, instead looks up the tile entity by its position in the client world) - * - World (does not sync the actual world, instead looks up the world by its dimension ID) - * - * Once the update has been processed by the client, it'll call onNetworkUpdate on the client- - * side TileEntity if it implements INetworkUpdateListener. - * - * If this method is being executed on the client (i.e. Singleplayer), it'll just call - * INetworkUpdateListener.onNetworkUpdate (if implemented by the te). - * - * @param te TileEntity to update - * @param field Name of the field to update - */ - public static void updateTileEntityField(TileEntity te, String field) { - try { - if (NetworkManager_updateTileEntityField == null) NetworkManager_updateTileEntityField = Class.forName(getPackage() + ".core.network.NetworkManager").getMethod("updateTileEntityField", TileEntity.class, String.class); - if (instance == null) instance = getInstance(); - - NetworkManager_updateTileEntityField.invoke(instance, te, field); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Immediately send an event for the specified TileEntity to the clients in range. - * - * If this method is being executed on the client (i.e. Singleplayer), it'll just call - * INetworkTileEntityEventListener.onNetworkEvent (if implemented by the te). - * - * @param te TileEntity to notify, should implement INetworkTileEntityEventListener - * @param event Arbitrary integer to represent the event, choosing the values is up to you - * @param limitRange Limit the notification range to (currently) 20 blocks instead of the - * tracking distance if true - */ - public static void initiateTileEntityEvent(TileEntity te, int event, boolean limitRange) { - try { - if (NetworkManager_initiateTileEntityEvent == null) NetworkManager_initiateTileEntityEvent = Class.forName(getPackage() + ".core.network.NetworkManager").getMethod("initiateTileEntityEvent", TileEntity.class, Integer.TYPE, Boolean.TYPE); - if (instance == null) instance = getInstance(); - - NetworkManager_initiateTileEntityEvent.invoke(instance, te, event, limitRange); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Immediately send an event for the specified Item to the clients in range. - * - * The item should implement INetworkItemEventListener to receive the event. - * - * If this method is being executed on the client (i.e. Singleplayer), it'll just call - * INetworkItemEventListener.onNetworkEvent (if implemented by the item). - * - * @param player EntityPlayer holding the item - * @param itemStack ItemStack containing the item - * @param event Arbitrary integer to represent the event, choosing the values is up to you - * @param limitRange Limit the notification range to (currently) 20 blocks instead of the - * tracking distance if true - */ - public static void initiateItemEvent(EntityPlayer player, ItemStack itemStack, int event, boolean limitRange) { - try { - if (NetworkManager_initiateItemEvent == null) NetworkManager_initiateItemEvent = Class.forName(getPackage() + ".core.network.NetworkManager").getMethod("initiateItemEvent", EntityPlayer.class, ItemStack.class, Integer.TYPE, Boolean.TYPE); - if (instance == null) instance = getInstance(); - - NetworkManager_initiateItemEvent.invoke(instance, player, itemStack, event, limitRange); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Schedule a block update (re-render) on the clients in range. - * - * If this method is being executed on the client (i.e. Singleplayer), it'll just trigger the - * block update locally. - * - * @param world World containing the block - * @param x The block's x coordinate - * @param y The block's y coordinate - * @param z The block's z coordinate - */ - public static void announceBlockUpdate(World world, int x, int y, int z) { - try { - if (NetworkManager_announceBlockUpdate == null) NetworkManager_announceBlockUpdate = Class.forName(getPackage() + ".core.network.NetworkManager").getMethod("announceBlockUpdate", World.class, Integer.TYPE, Integer.TYPE, Integer.TYPE); - if (instance == null) instance = getInstance(); - - NetworkManager_announceBlockUpdate.invoke(instance, world, x, y, z); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - - // client -> server - - - /** - * Ask the server to send the values of the fields specified. - * - * See updateTileEntityField for the supported field types. - * - * The implementation is currently limited to TileEntitys as data providers. The tile entity - * has to be fully initialized when executing this method (i.e. valid worldObj+coords). - * - * This method doesn't do anything if executed on the server. - * - * @param dataProvider Object implementing the INetworkDataProvider interface - */ - public static void requestInitialData(INetworkDataProvider dataProvider) { - try { - if (NetworkManager_requestInitialData == null) NetworkManager_requestInitialData = Class.forName(getPackage() + ".core.network.NetworkManager").getMethod("requestInitialData", INetworkDataProvider.class); - if (instance == null) instance = getInstance(); - - NetworkManager_requestInitialData.invoke(instance, dataProvider); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Immediately send an event for the specified TileEntity to the server. - * - * This method doesn't do anything if executed on the server. - * - * @param te TileEntity to notify, should implement INetworkClientTileEntityEventListener - * @param event Arbitrary integer to represent the event, choosing the values is up to you - */ - public static void initiateClientTileEntityEvent(TileEntity te, int event) { - try { - if (NetworkManager_initiateClientTileEntityEvent == null) NetworkManager_initiateClientTileEntityEvent = Class.forName(getPackage() + ".core.network.NetworkManager").getMethod("initiateClientTileEntityEvent", TileEntity.class, Integer.TYPE); - if (instance == null) instance = getInstance(); - - NetworkManager_initiateClientTileEntityEvent.invoke(instance, te, event); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Immediately send an event for the specified Item to the clients in range. - * - * The item should implement INetworkItemEventListener to receive the event. - * - * This method doesn't do anything if executed on the server. - * - * @param itemStack ItemStack containing the item - * @param event Arbitrary integer to represent the event, choosing the values is up to you - */ - public static void initiateClientItemEvent(ItemStack itemStack, int event) { - try { - if (NetworkManager_initiateClientItemEvent == null) NetworkManager_initiateClientItemEvent = Class.forName(getPackage() + ".core.network.NetworkManager").getMethod("initiateClientItemEvent", ItemStack.class, Integer.TYPE); - if (instance == null) instance = getInstance(); - - NetworkManager_initiateClientItemEvent.invoke(instance, itemStack, event); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Get the base IC2 package name, used internally. - * - * @return IC2 package name, if unable to be determined defaults to ic2 - */ - private static String getPackage() { - Package pkg = NetworkHelper.class.getPackage(); - - if (pkg != null) { - String packageName = pkg.getName(); - - return packageName.substring(0, packageName.length() - ".api.network".length()); - } - - return "ic2"; - } - - /** - * Get the NetworkManager instance, used internally. - * - * @return NetworkManager instance - */ - private static Object getInstance() { - try { - return Class.forName(getPackage() + ".core.IC2").getDeclaredField("network").get(null); - } catch (Throwable e) { - throw new RuntimeException(e); - } - } - - private static Object instance; - private static Method NetworkManager_updateTileEntityField; - private static Method NetworkManager_initiateTileEntityEvent; - private static Method NetworkManager_initiateItemEvent; - private static Method NetworkManager_announceBlockUpdate; - private static Method NetworkManager_requestInitialData; - private static Method NetworkManager_initiateClientTileEntityEvent; - private static Method NetworkManager_initiateClientItemEvent; -} -