101 lines
2.2 KiB
Java
101 lines
2.2 KiB
Java
|
package resonantinduction.core.prefab.tile;
|
||
|
|
||
|
import net.minecraft.tileentity.TileEntity;
|
||
|
import net.minecraftforge.common.ForgeDirection;
|
||
|
import universalelectricity.api.CompatibilityModule;
|
||
|
import universalelectricity.api.vector.Vector3;
|
||
|
import universalelectricity.api.vector.VectorHelper;
|
||
|
|
||
|
public abstract class TileGenerator extends TileEntityEnergyMachine
|
||
|
{
|
||
|
public TileGenerator()
|
||
|
{
|
||
|
super();
|
||
|
}
|
||
|
|
||
|
public TileGenerator(long wattsPerTick)
|
||
|
{
|
||
|
super(wattsPerTick);
|
||
|
}
|
||
|
|
||
|
public TileGenerator(long wattsPerTick, long maxEnergy)
|
||
|
{
|
||
|
super(wattsPerTick, maxEnergy);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void updateEntity()
|
||
|
{
|
||
|
super.updateEntity();
|
||
|
if (!this.worldObj.isRemote && this.enabled)
|
||
|
{
|
||
|
this.consumeFuel();
|
||
|
if (this.isFunctioning())
|
||
|
{
|
||
|
this.produce();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void produce()
|
||
|
{
|
||
|
for (ForgeDirection direction : this.getOutputDirections())
|
||
|
{
|
||
|
if (direction != ForgeDirection.UNKNOWN)
|
||
|
{
|
||
|
TileEntity entity = VectorHelper.getTileEntityFromSide(this.worldObj, new Vector3(this), direction);
|
||
|
if (CompatibilityModule.canConnect(entity, direction.getOpposite()))
|
||
|
{
|
||
|
CompatibilityModule.receiveEnergy(entity, direction.getOpposite(), this.JOULES_PER_TICK, true);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public long onExtractEnergy(ForgeDirection from, long receive, boolean doReceive)
|
||
|
{
|
||
|
if (this.canConnect(from) && this.getOutputDirections().contains(from))
|
||
|
{
|
||
|
return Math.min(receive, this.JOULES_PER_TICK);
|
||
|
}
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean canFunction()
|
||
|
{
|
||
|
return this.enabled && this.hasFuel();
|
||
|
}
|
||
|
|
||
|
/** Does this generator have fuel time left to burn */
|
||
|
public abstract boolean hasFuel();
|
||
|
|
||
|
/** Called each tick to handle anything fuel related */
|
||
|
public abstract void consumeFuel();
|
||
|
|
||
|
/* ********************************************
|
||
|
* Electricity reception logic - all of which is set to zero to prevent input from wires
|
||
|
* *********************************************
|
||
|
*/
|
||
|
|
||
|
@Override
|
||
|
public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive)
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public long getEnergy(ForgeDirection from)
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public long getEnergyCapacity(ForgeDirection from)
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|