Fixed Mana Fluxfield to power every RF receiver

This commit is contained in:
yueh committed 2015-01-08 22:13:46 +01:00
1 parent 733f1d2388
commit addef399d2
3 files changed
+50 -63

No files matched your search

@@ -1,51 +0,0 @@
package cofh.api.energy;
import net.minecraftforge.common.util.ForgeDirection;
/**
* Implement this interface on Tile Entities which should handle energy, generally storing it in one or more internal {@link IEnergyStorage} objects.
*
* A reference implementation is provided {@link TileEnergyHandler}.
*
* @author King Lemming
*
*/
public interface IEnergyHandler extends IEnergyConnection {
/**
* Add energy to an IEnergyHandler, internal distribution is left entirely to the IEnergyHandler.
*
* @param from
* Orientation the energy is received from.
* @param maxReceive
* Maximum amount of energy to receive.
* @param simulate
* If TRUE, the charge will only be simulated.
* @return Amount of energy that was (or would have been, if simulated) received.
*/
int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate);
/**
* Remove energy from an IEnergyHandler, internal distribution is left entirely to the IEnergyHandler.
*
* @param from
* Orientation the energy is extracted from.
* @param maxExtract
* Maximum amount of energy to extract.
* @param simulate
* If TRUE, the extraction will only be simulated.
* @return Amount of energy that was (or would have been, if simulated) extracted.
*/
int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate);
/**
* Returns the amount of energy currently stored.
*/
int getEnergyStored(ForgeDirection from);
/**
* Returns the maximum amount of energy that can be stored.
*/
int getMaxEnergyStored(ForgeDirection from);
}
@@ -0,0 +1,38 @@
package cofh.api.energy;
import net.minecraftforge.common.util.ForgeDirection;
/**
* Implement this interface on Tile Entities which should receive energy, generally storing it in one or more internal {@link IEnergyStorage} objects.
* <p>
* A reference implementation is provided {@link TileEnergyHandler}.
*
* @author King Lemming
*
*/
public interface IEnergyReceiver extends IEnergyConnection {
/**
* Add energy to an IEnergyReceiver, internal distribution is left entirely to the IEnergyReceiver.
*
* @param from
* Orientation the energy is received from.
* @param maxReceive
* Maximum amount of energy to receive.
* @param simulate
* If TRUE, the charge will only be simulated.
* @return Amount of energy that was (or would have been, if simulated) received.
*/
int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate);
/**
* Returns the amount of energy currently stored.
*/
int getEnergyStored(ForgeDirection from);
/**
* Returns the maximum amount of energy that can be stored.
*/
int getMaxEnergyStored(ForgeDirection from);
}
@@ -17,7 +17,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import vazkii.botania.api.mana.IManaReceiver;
import vazkii.botania.common.block.tile.TileMod;
import cofh.api.energy.IEnergyConnection;
import cofh.api.energy.IEnergyHandler;
import cofh.api.energy.IEnergyReceiver;
import cpw.mods.fml.common.Optional;
@Optional.Interface(iface = "cofh.api.energy.IEnergyConnection", modid = "CoFHAPI|energy")
@@ -30,7 +30,7 @@ public class TileRFGenerator extends TileMod implements IManaReceiver, IEnergyCo
int mana = 0;
// Thanks to skyboy for help with this cuz I'm a noob with RF
private IEnergyHandler[] handlerCache;
private IEnergyReceiver[] receiverCache;
private boolean deadCache;
@Override
@@ -38,7 +38,7 @@ public class TileRFGenerator extends TileMod implements IManaReceiver, IEnergyCo
public void validate() {
super.validate();
deadCache = true;
handlerCache = null;
receiverCache = null;
}
@Override
@@ -57,9 +57,9 @@ public class TileRFGenerator extends TileMod implements IManaReceiver, IEnergyCo
@Optional.Method(modid = "CoFHAPI|energy")
protected final int transmitEnergy(int energy) {
if (handlerCache != null)
for(int i = handlerCache.length; i-- > 0;) {
IEnergyHandler tile = handlerCache[i];
if (receiverCache != null)
for(int i = receiverCache.length; i-- > 0;) {
IEnergyReceiver tile = receiverCache[i];
if (tile == null)
continue;
@@ -104,13 +104,13 @@ public class TileRFGenerator extends TileMod implements IManaReceiver, IEnergyCo
@Optional.Method(modid = "CoFHAPI|energy")
private void addCache(TileEntity tile, int side) {
if(handlerCache != null)
handlerCache[side] = null;
if(receiverCache != null)
receiverCache[side] = null;
if(tile instanceof IEnergyHandler && ((IEnergyHandler)tile).canConnectEnergy(ForgeDirection.VALID_DIRECTIONS[side])) {
if(handlerCache == null)
handlerCache = new IEnergyHandler[6];
handlerCache[side] = (IEnergyHandler)tile;
if(tile instanceof IEnergyReceiver && ((IEnergyReceiver)tile).canConnectEnergy(ForgeDirection.VALID_DIRECTIONS[side])) {
if(receiverCache == null)
receiverCache = new IEnergyReceiver[6];
receiverCache[side] = (IEnergyReceiver)tile;
}
}