AnvilAPI/ley/anvil/api/energy/IEnergy.java
2020-04-23 23:02:47 +02:00

79 lines
2.2 KiB
Java

package ley.anvil.api.energy;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.energy.IEnergyStorage;
import javax.annotation.Nullable;
public interface IEnergy /*Forge Specific*/extends IEnergyStorage {
IEnergyType getType();
default IEnergyType[] getTypes() {
return new IEnergyType[] {getType()};
}
long getCapacity();
long getStored();
void setStored(long energy);
long getOutputPower(IEnergyType type);
long getInputPower(IEnergyType type);
long insertEnergy(long energy, IEnergyType type, boolean simulate);
long extractEnergy(long energy, IEnergyType type, boolean simulate);
boolean canInput(IEnergyType type);
boolean canOutput(IEnergyType type);
@Deprecated
default long getOutputPower(IEnergyType type, @Nullable EnumFacing to) {return getOutputPower(type);}
@Deprecated
default long getInputPower(IEnergyType type, @Nullable EnumFacing to) {return getInputPower(type);}
@Deprecated
default long insertEnergy(long energy, IEnergyType type, @Nullable EnumFacing from, boolean simulate) {return insertEnergy(energy,type, simulate);}
@Deprecated
default long extractEnergy(long energy, IEnergyType type, @Nullable EnumFacing from, boolean simulate) {return extractEnergy(energy, type, simulate);}
@Deprecated
default boolean canInput(IEnergyType type, @Nullable EnumFacing from) {return canInput(type);}
@Deprecated
default boolean canOutput(IEnergyType type, @Nullable EnumFacing to) {return canOutput(type);}
//Forge Specific
@Override
default int receiveEnergy(int maxReceive, boolean simulate) {
return (int) insertEnergy(maxReceive, CommonType.FLUX, simulate);
}
@Override
default int extractEnergy(int maxExtract, boolean simulate) {
return (int) extractEnergy(maxExtract, CommonType.FLUX, simulate);
}
@Override
default int getEnergyStored() {
return (int) getStored();
}
@Override
default int getMaxEnergyStored() {
return (int) getCapacity();
}
@Override
default boolean canExtract() {
return canOutput(CommonType.FLUX);
}
@Override
default boolean canReceive() {
return canInput(CommonType.FLUX);
}
}