use of appeng.api.storage.channels.IItemStorageChannel in project LogisticsPipes by RS485.
the class LPActionSource method add.
@Override
@Nonnull
public ItemStack add(@Nonnull ItemStack stack, EnumFacing from, boolean doAdd) {
ItemStack st = stack.copy();
IItemStorageChannel channel = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class);
IAEItemStack tst = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class).createStack(stack);
IStorageMonitorable tmp = acc.getInventory(source);
if (tmp == null || tmp.getInventory(channel) == null) {
return st;
}
IAEItemStack overflow = tmp.getInventory(channel).injectItems(tst, Actionable.MODULATE, source);
if (overflow != null) {
st.setCount((int) (st.getCount() - overflow.getStackSize()));
}
return st;
}
use of appeng.api.storage.channels.IItemStorageChannel in project LogisticsPipes by RS485.
the class LPActionSource method roomForItem.
@Override
public int roomForItem(@Nonnull ItemStack itemStack) {
IItemStorageChannel channel = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class);
IStorageMonitorable tmp = acc.getInventory(source);
if (tmp == null || tmp.getInventory(channel) == null) {
return 0;
}
IAEItemStack stack = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class).createStack(itemStack);
if (stack == null)
return 0;
while (stack.getStackSize() > 0) {
if (tmp.getInventory(channel).canAccept(stack)) {
return stack.getStackSize() > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) stack.getStackSize();
}
stack.decStackSize(1);
}
return 0;
}
use of appeng.api.storage.channels.IItemStorageChannel in project LogisticsPipes by RS485.
the class LPActionSource method getMultipleItems.
@Override
@Nonnull
public ItemStack getMultipleItems(@Nonnull ItemIdentifier itemIdent, int count) {
if (itemCount(itemIdent) < count) {
return ItemStack.EMPTY;
}
IItemStorageChannel channel = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class);
IStorageMonitorable tmp = acc.getInventory(source);
if (tmp == null || tmp.getInventory(channel) == null) {
return ItemStack.EMPTY;
}
IAEItemStack stack = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class).createStack(itemIdent.makeNormalStack(count));
IAEItemStack extract = tmp.getInventory(channel).extractItems(stack, Actionable.MODULATE, source);
if (extract == null) {
return ItemStack.EMPTY;
}
return extract.createItemStack();
}
use of appeng.api.storage.channels.IItemStorageChannel in project LogisticsPipes by RS485.
the class LPActionSource method getSingleItem.
@Override
@Nonnull
public ItemStack getSingleItem(ItemIdentifier item) {
IItemStorageChannel channel = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class);
IStorageMonitorable tmp = acc.getInventory(source);
if (tmp == null || tmp.getInventory(channel) == null) {
return ItemStack.EMPTY;
}
IAEItemStack stack = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class).createStack(item.makeNormalStack(1));
IAEItemStack extract = tmp.getInventory(channel).extractItems(stack, Actionable.MODULATE, source);
if (extract == null) {
return ItemStack.EMPTY;
}
return extract.createItemStack();
}
use of appeng.api.storage.channels.IItemStorageChannel in project LogisticsPipes by RS485.
the class LPActionSource method containsUndamagedItem.
@Override
public boolean containsUndamagedItem(@Nonnull ItemIdentifier itemIdent) {
IItemStorageChannel channel = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class);
IStorageMonitorable tmp = acc.getInventory(source);
if (tmp == null || tmp.getInventory(channel) == null || tmp.getInventory(channel).getStorageList() == null) {
return false;
}
IItemList<IAEItemStack> items = tmp.getInventory(channel).getStorageList();
for (IAEItemStack item : items) {
ItemIdentifier ident = ItemIdentifier.get(item.createItemStack());
if (ident.equals(itemIdent)) {
return true;
}
}
return false;
}
Aggregations