Protect against null in cyclops storage
This commit is contained in:
@@ -73,7 +73,7 @@ public class StorageItemCyclops extends StorageItemExternal {
|
||||
public ItemStack insert(@Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
InventoryTileEntityBase inv = cyclopsInv.get();
|
||||
|
||||
if (IFilterable.canTake(externalStorage.getItemFilters(), externalStorage.getMode(), externalStorage.getCompare(), stack)) {
|
||||
if (inv != null && IFilterable.canTake(externalStorage.getItemFilters(), externalStorage.getMode(), externalStorage.getCompare(), stack)) {
|
||||
return SlotlessItemHandlerHelper.insertItem(inv, opposite, stack, size, simulate);
|
||||
}
|
||||
|
||||
@@ -84,16 +84,24 @@ public class StorageItemCyclops extends StorageItemExternal {
|
||||
@Override
|
||||
public ItemStack extract(@Nonnull ItemStack stack, int size, int flags, boolean simulate) {
|
||||
InventoryTileEntityBase inv = cyclopsInv.get();
|
||||
return SlotlessItemHandlerHelper.extractItem(inv, opposite, stack, size, flags, simulate);
|
||||
|
||||
return inv != null ? SlotlessItemHandlerHelper.extractItem(inv, opposite, stack, size, flags, simulate) : null;
|
||||
}
|
||||
|
||||
private NonNullList<ItemStack> getStacks(@Nullable InventoryTileEntityBase inv) {
|
||||
if (inv != null) {
|
||||
if (inv.getInventory() instanceof IndexedSlotlessItemHandlerWrapper.IInventoryIndexReference) {
|
||||
return ((IndexedSlotlessItemHandlerWrapper.IInventoryIndexReference) inv.getInventory())
|
||||
.getIndex().values().stream().flatMap(m -> m.valueCollection().stream()).map(ItemStack::copy).collect(RSUtils.toNonNullList());
|
||||
.getIndex()
|
||||
.values()
|
||||
.stream()
|
||||
.flatMap(m -> m.valueCollection().stream())
|
||||
.map(ItemStack::copy)
|
||||
.collect(RSUtils.toNonNullList());
|
||||
} else {
|
||||
return Arrays.stream(((SimpleInventory) inv.getInventory()).getItemStacks()).map(ItemStack::copy).collect(RSUtils.toNonNullList());
|
||||
return Arrays.stream(((SimpleInventory) inv.getInventory()).getItemStacks())
|
||||
.map(ItemStack::copy)
|
||||
.collect(RSUtils.toNonNullList());
|
||||
}
|
||||
} else {
|
||||
return RSUtils.emptyNonNullList();
|
||||
|
||||
@@ -15,45 +15,48 @@ public class SlotlessItemHandlerHelper {
|
||||
return entity != null && entity.hasCapability(SlotlessItemHandlerConfig.CAPABILITY, facing);
|
||||
}
|
||||
|
||||
public static ISlotlessItemHandler getSlotlessHandler(TileEntity entity, EnumFacing facing) {
|
||||
return entity.getCapability(SlotlessItemHandlerConfig.CAPABILITY, facing);
|
||||
public static ISlotlessItemHandler getSlotlessHandler(TileEntity tile, EnumFacing facing) {
|
||||
return tile.getCapability(SlotlessItemHandlerConfig.CAPABILITY, facing);
|
||||
}
|
||||
|
||||
public static ItemStack insertItem(TileEntity entity, EnumFacing facing, @Nonnull ItemStack stack, boolean simulate) {
|
||||
return insertItem(getSlotlessHandler(entity, facing), stack, stack.getCount(), simulate);
|
||||
public static ItemStack insertItem(TileEntity tile, EnumFacing facing, @Nonnull ItemStack stack, boolean simulate) {
|
||||
return insertItem(getSlotlessHandler(tile, facing), stack, stack.getCount(), simulate);
|
||||
}
|
||||
|
||||
public static ItemStack insertItem(TileEntity entity, EnumFacing facing, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
return insertItem(getSlotlessHandler(entity, facing), stack, size, simulate);
|
||||
public static ItemStack insertItem(TileEntity tile, EnumFacing facing, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
return insertItem(getSlotlessHandler(tile, facing), stack, size, simulate);
|
||||
}
|
||||
|
||||
public static ItemStack insertItem(ISlotlessItemHandler slotlessItemHandler, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
ItemStack remainder = slotlessItemHandler.insertItem(ItemHandlerHelper.copyStackWithSize(stack, size), simulate);
|
||||
public static ItemStack insertItem(ISlotlessItemHandler handler, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
ItemStack remainder = handler.insertItem(ItemHandlerHelper.copyStackWithSize(stack, size), simulate);
|
||||
int remainderCount = -1;
|
||||
while (!remainder.isEmpty() && remainder.getCount() != remainderCount)
|
||||
{
|
||||
|
||||
while (!remainder.isEmpty() && remainder.getCount() != remainderCount) {
|
||||
remainderCount = remainder.getCount();
|
||||
remainder = slotlessItemHandler.insertItem(remainder.copy(), simulate);
|
||||
remainder = handler.insertItem(remainder.copy(), simulate);
|
||||
}
|
||||
|
||||
return remainder;
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(TileEntity entity, EnumFacing facing, @Nonnull ItemStack stack, int size, int flags, boolean simulate) {
|
||||
return extractItem(getSlotlessHandler(entity, facing), stack, size, flags, simulate);
|
||||
public static ItemStack extractItem(TileEntity tile, EnumFacing facing, @Nonnull ItemStack stack, int size, int flags, boolean simulate) {
|
||||
return extractItem(getSlotlessHandler(tile, facing), stack, size, flags, simulate);
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(TileEntity entity, EnumFacing facing, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
return extractItem(getSlotlessHandler(entity, facing), stack, size, simulate);
|
||||
public static ItemStack extractItem(TileEntity tile, EnumFacing facing, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
return extractItem(getSlotlessHandler(tile, facing), stack, size, simulate);
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(ISlotlessItemHandler slotlessItemHandler, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
return extractItem(slotlessItemHandler, stack, size, IComparer.COMPARE_DAMAGE | IComparer.COMPARE_NBT, simulate);
|
||||
public static ItemStack extractItem(ISlotlessItemHandler handler, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
return extractItem(handler, stack, size, IComparer.COMPARE_DAMAGE | IComparer.COMPARE_NBT, simulate);
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(ISlotlessItemHandler slotlessItemHandler, @Nonnull ItemStack stack, int size, int flags, boolean simulate) {
|
||||
ItemStack extracted = slotlessItemHandler.extractItem(ItemHandlerHelper.copyStackWithSize(stack, size), CyclopsComparer.comparerFlagsToItemMatch(flags), simulate);
|
||||
public static ItemStack extractItem(ISlotlessItemHandler handler, @Nonnull ItemStack stack, int size, int flags, boolean simulate) {
|
||||
ItemStack extracted = handler.extractItem(ItemHandlerHelper.copyStackWithSize(stack, size), CyclopsComparer.comparerFlagsToItemMatch(flags), simulate);
|
||||
|
||||
while (!extracted.isEmpty() && extracted.getCount() < size) {
|
||||
ItemStack extraExtract = slotlessItemHandler.extractItem(ItemHandlerHelper.copyStackWithSize(extracted, size - extracted.getCount()), CyclopsComparer.comparerFlagsToItemMatch(flags), simulate);
|
||||
ItemStack extraExtract = handler.extractItem(ItemHandlerHelper.copyStackWithSize(extracted, size - extracted.getCount()), CyclopsComparer.comparerFlagsToItemMatch(flags), simulate);
|
||||
|
||||
if (!extraExtract.isEmpty()) {
|
||||
extracted.grow(extraExtract.getCount());
|
||||
} else {
|
||||
@@ -61,14 +64,15 @@ public class SlotlessItemHandlerHelper {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return extracted;
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(TileEntity entity, EnumFacing facing, int size, boolean simulate) {
|
||||
return extractItem(getSlotlessHandler(entity, facing), size, simulate);
|
||||
public static ItemStack extractItem(TileEntity tile, EnumFacing facing, int size, boolean simulate) {
|
||||
return extractItem(getSlotlessHandler(tile, facing), size, simulate);
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(ISlotlessItemHandler slotlessItemHandler, int size, boolean simulate) {
|
||||
return slotlessItemHandler.extractItem(size, simulate);
|
||||
public static ItemStack extractItem(ISlotlessItemHandler handler, int size, boolean simulate) {
|
||||
return handler.extractItem(size, simulate);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user