2013-05-07 22:12:07 +02:00
|
|
|
package ic2.api.reactor;
|
2013-04-13 16:35:13 +02:00
|
|
|
|
|
|
|
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
|
2013-11-21 22:50:40 +01:00
|
|
|
* @param heatrun every Stack will cycle 2 time (true,false) first run for heat, sec for Eu calculation
|
2013-04-13 16:35:13 +02:00
|
|
|
*/
|
2013-11-21 22:50:40 +01:00
|
|
|
public void processChamber(IReactor reactor, ItemStack yourStack, int x, int y,boolean heatrun);
|
|
|
|
|
2013-04-13 16:35:13 +02:00
|
|
|
/**
|
|
|
|
* 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
|
2013-11-21 22:50:40 +01:00
|
|
|
* @param heatrun true for only create heat not EU, false for only EU not heat
|
2013-04-13 16:35:13 +02:00
|
|
|
* @return true if this component reacts to the pulse (and pulse is therefore meant to produce heat)
|
|
|
|
*/
|
2013-11-21 22:50:40 +01:00
|
|
|
public boolean acceptUraniumPulse(IReactor reactor, ItemStack yourStack, ItemStack pulsingStack, int youX, int youY, int pulseX, int pulseY,boolean heatrun);
|
|
|
|
|
2013-04-13 16:35:13 +02:00
|
|
|
/**
|
|
|
|
* 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);
|
2013-11-21 22:50:40 +01:00
|
|
|
|
2013-04-13 16:35:13 +02:00
|
|
|
/**
|
|
|
|
* 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);
|
2013-11-21 22:50:40 +01:00
|
|
|
|
2013-04-13 16:35:13 +02:00
|
|
|
/**
|
|
|
|
* 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);
|
2013-11-21 22:50:40 +01:00
|
|
|
|
2013-04-13 16:35:13 +02:00
|
|
|
/**
|
|
|
|
* 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);
|
2013-11-21 22:50:40 +01:00
|
|
|
|
2013-04-13 16:35:13 +02:00
|
|
|
/**
|
|
|
|
* 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);
|
|
|
|
}
|