package advancedsystemsmanager.flow.execution.buffers.elements; import advancedsystemsmanager.api.execution.IBufferElement; import advancedsystemsmanager.api.execution.Key; import advancedsystemsmanager.flow.setting.Setting; public abstract class BufferElementBase<Type> implements IBufferElement<Type> { protected int id; protected int amount; protected Type content; protected Setting<Type> setting; protected boolean whitelist; public BufferElementBase(int id) { this.id = id; } @Override public Key<Type> getKey() { return new Key<Type>(content); } @Override public Type getContent() { return content; } @Override public int getMaxWithSetting(int amount) { if (setting != null && setting.isLimitedByAmount()) return whitelist ? Math.min(amount, setting.getAmountLeft()) : amount - setting.getAmountLeft(); return amount; } @Override public int getCommandID() { return this.id; } }