basic-components/src/main/java/universalelectricity/compat/ic2/ElectricityTileWrapper.java
Timo Ley a83fd143d8
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
feat: big overhaul
2022-11-01 17:43:28 +01:00

86 lines
2.7 KiB
Java

package universalelectricity.compat.ic2;
import ic2.api.energy.tile.IEnergySink;
import ic2.api.energy.tile.IEnergySource;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import universalelectricity.compat.IElectricityTileHandler;
import universalelectricity.core.electricity.ElectricityPack;
public class ElectricityTileWrapper implements IElectricityTileHandler {
TileEntity baseTile;
public ElectricityTileWrapper(TileEntity baseTile) {
this.baseTile = baseTile;
}
@Override
public boolean canInsert() {
return baseTile instanceof IEnergySink;
}
@Override
public boolean canExtract() {
return baseTile instanceof IEnergySource;
}
@Override
public boolean canInsertOn(ForgeDirection side) {
return baseTile instanceof IEnergySink && ((IEnergySink) baseTile).acceptsEnergyFrom(null, side);
}
@Override
public boolean canExtractOn(ForgeDirection side) {
return baseTile instanceof IEnergySource && ((IEnergySource) baseTile).emitsEnergyTo(null, side);
}
@Override
public void insert(ElectricityPack pack, ForgeDirection side) {
if (baseTile instanceof IEnergySink) {
IEnergySink sink = (IEnergySink) baseTile;
sink.injectEnergy(side, IC2CompatHelper.joulesToEU(pack.getWatts()), IC2CompatHelper.voltToTier(pack.voltage));
}
}
@Override
public void extract(ElectricityPack pack, ForgeDirection side) {
if (baseTile instanceof IEnergySource) {
IEnergySource source = (IEnergySource) baseTile;
source.drawEnergy(IC2CompatHelper.joulesToEU(pack.getWatts()));
}
}
@Override
public ElectricityPack getDemandedJoules() {
if (baseTile instanceof IEnergySink) {
IEnergySink sink = (IEnergySink) baseTile;
double voltage = IC2CompatHelper.tierToVolt(sink.getSinkTier());
return new ElectricityPack(IC2CompatHelper.EUToJoules(sink.getDemandedEnergy()) / voltage, voltage);
}
return new ElectricityPack();
}
@Override
public ElectricityPack getProvidedJoules() {
if (baseTile instanceof IEnergySource) {
IEnergySource source = (IEnergySource) baseTile;
double voltage = IC2CompatHelper.tierToVolt(source.getSourceTier());
return new ElectricityPack(IC2CompatHelper.EUToJoules(source.getOfferedEnergy()) / voltage, voltage);
}
return new ElectricityPack();
}
@Override
public TileEntity getTile() {
return baseTile;
}
@Override
public double getVoltage() {
// TODO Auto-generated method stub
return 0;
}
}