powerconverters/src/main/java/covers1624/powerconverters/tile/steam/TileEntitySteamConsumer.java
2023-06-16 22:17:05 +02:00

76 lines
2.6 KiB
Java

package covers1624.powerconverters.tile.steam;
import covers1624.powerconverters.PowerConverters;
import covers1624.powerconverters.handler.ConfigurationHandler;
import covers1624.powerconverters.init.PowerSystems;
import covers1624.powerconverters.tile.main.TileEntityEnergyConsumer;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
public class TileEntitySteamConsumer
extends TileEntityEnergyConsumer implements IFluidHandler {
private FluidTank _steamTank = new FluidTank(10000);
private int _mBLastTick;
public TileEntitySteamConsumer() {
super(PowerSystems.powerSystemSteam, 0, IFluidHandler.class);
}
public void updateEntity() {
super.updateEntity();
if (this._steamTank != null && this._steamTank.getFluid() != null) {
int amount = this._steamTank.getFluid().amount;
double energy
= (double) (amount * PowerSystems.powerSystemSteam.getScaleAmmount());
energy = this.storeEnergy(energy, false);
int toDrain = amount
- (int) (energy / (double) PowerSystems.powerSystemSteam.getScaleAmmount()
);
this._steamTank.drain(toDrain, true);
this._mBLastTick = toDrain;
} else {
this._mBLastTick = 0;
}
}
public int getVoltageIndex() {
return 0;
}
public double getInputRate() {
return (double) this._mBLastTick;
}
public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {
return resource != null && resource.getFluidID() == PowerConverters.steamId
&& PowerConverters.steamId != -1
? this._steamTank.fill(resource, doFill)
: 0;
}
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {
return null;
}
public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) {
return null;
}
public boolean canFill(ForgeDirection from, Fluid fluid) {
return fluid != null && fluid.getID() == PowerConverters.steamId
&& !ConfigurationHandler.dissableSteamConsumer;
}
public boolean canDrain(ForgeDirection from, Fluid fluid) {
return false;
}
public FluidTankInfo[] getTankInfo(ForgeDirection from) {
return new FluidTankInfo[] { this._steamTank.getInfo() };
}
}