package advancedsystemsmanager.compatibility.rf.buffer;
import advancedsystemsmanager.api.execution.IBufferElement;
import advancedsystemsmanager.api.execution.Key;
import advancedsystemsmanager.flow.execution.buffers.elements.BufferElementBase;
import cofh.api.energy.IEnergyProvider;
import net.minecraftforge.common.util.ForgeDirection;
public class RFBufferElement extends BufferElementBase<Integer>
{
private IEnergyProvider source;
private ForgeDirection direction;
public RFBufferElement(int id, IEnergyProvider provider, ForgeDirection direction, int amount)
{
super(id);
this.source = provider;
this.direction = direction;
this.amount = amount;
}
@Override
public Key<Integer> getKey()
{
return new Key.RFKey(source, id);
}
@Override
public void remove()
{
}
@Override
public void onUpdate()
{
}
@Override
public int getSizeLeft()
{
return source.extractEnergy(direction, amount, true);
}
@Override
public int reduceBufferAmount(int amount)
{
amount = Math.min(amount, getSizeLeft());
amount = source.extractEnergy(direction, amount, false);
this.amount -= amount;
return amount;
}
@Override
public int getMaxWithSetting(int amount)
{
return Math.min(amount, this.amount);
}
@Override
public IBufferElement<Integer> getSplitElement(int elementAmount, int id, boolean fair)
{
return this;
}
}