Do some cleanup.

This commit is contained in:
raoulvdberge
2018-07-27 22:37:43 +02:00
parent 883742c28c
commit 12bc0a2c41
13 changed files with 64 additions and 55 deletions

View File

@@ -21,9 +21,7 @@ public interface IStackList<T> {
*
* @param stack the stack
*/
default void add(@Nonnull T stack) {
add(stack, getSizeFromStack(stack));
}
void add(@Nonnull T stack);
/**
* Decrements the count of that stack in the list.
@@ -40,9 +38,7 @@ public interface IStackList<T> {
* @param stack the stack
* @return true if the remove was successful for the full amount, false otherwise
*/
default boolean remove(@Nonnull T stack) {
return remove(stack, getSizeFromStack(stack));
}
boolean remove(@Nonnull T stack);
/**
* Returns a stack.
@@ -84,12 +80,6 @@ public interface IStackList<T> {
*/
boolean isEmpty();
/**
* @param stack the stack
* @return the size of the stack
*/
int getSizeFromStack(T stack);
/**
* @return a collection of stacks in this list
*/

View File

@@ -232,7 +232,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
ItemStack extracted = null;
int i = 0;
if (IFilterable.isEmpty(itemFilters)) {
if (itemFilters.isEmpty()) {
ItemStack toExtract = null;
ArrayList<ItemStack> networkItems = new ArrayList<>(network.getItemStorageCache().getList().getStacks());
@@ -331,7 +331,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
FluidStack extracted = null;
int i = 0;
if (IFilterable.isEmpty(itemFilters)) {
if (fluidFilters.isEmpty()) {
FluidStack toExtract = null;
ArrayList<FluidStack> networkFluids = new ArrayList<>(network.getFluidStorageCache().getList().getStacks());

View File

@@ -10,6 +10,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeF
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage;
import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType;
import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType;
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.item.ItemPattern;
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
import net.minecraft.item.Item;
@@ -205,10 +206,10 @@ public class OneSixMigrationHelper implements IOneSixMigrationHelper {
public static void removalHook() {
}
public static void migrateEmptyWhitelistToEmptyBlacklist(String version, IFilterable filterable, @Nullable IItemHandler itemFilterInv) {
public static void migrateEmptyWhitelistToEmptyBlacklist(String version, IFilterable filterable, @Nullable ItemHandlerBase itemFilterInv) {
// Only migrate if we come from a version where the RS version tag stuff in NetworkNode wasn't added yet.
// Otherwise, we would constantly migrate empty whitelists to empty blacklists...
if (version == null && filterable.getMode() == IFilterable.WHITELIST && IFilterable.isEmpty(itemFilterInv)) {
if (version == null && filterable.getMode() == IFilterable.WHITELIST && (itemFilterInv == null || itemFilterInv.isEmpty())) {
filterable.setMode(IFilter.MODE_BLACKLIST);
}
}

View File

@@ -18,7 +18,7 @@ public class StackListFluid implements IStackList<FluidStack> {
if (stack == null || size < 0) {
throw new IllegalArgumentException("Cannot accept empty stack");
}
for (FluidStack otherStack : stacks.get(stack.getFluid())) {
if (stack.isFluidEqual(otherStack)) {
if ((long) otherStack.amount + (long) size > Integer.MAX_VALUE) {
@@ -36,6 +36,11 @@ public class StackListFluid implements IStackList<FluidStack> {
stacks.put(stack.getFluid(), newStack);
}
@Override
public void add(@Nonnull FluidStack stack) {
add(stack, stack.amount);
}
@Override
public boolean remove(@Nonnull FluidStack stack, int size) {
for (FluidStack otherStack : stacks.get(stack.getFluid())) {
@@ -55,6 +60,11 @@ public class StackListFluid implements IStackList<FluidStack> {
return false;
}
@Override
public boolean remove(@Nonnull FluidStack stack) {
return remove(stack, stack.amount);
}
@Override
@Nullable
public FluidStack get(@Nonnull FluidStack stack, int flags) {
@@ -89,11 +99,6 @@ public class StackListFluid implements IStackList<FluidStack> {
return stacks.isEmpty();
}
@Override
public int getSizeFromStack(FluidStack stack) {
return stack.amount;
}
@Nonnull
@Override
public Collection<FluidStack> getStacks() {

View File

@@ -35,6 +35,11 @@ public class StackListItem implements IStackList<ItemStack> {
stacks.put(stack.getItem(), ItemHandlerHelper.copyStackWithSize(stack, size));
}
@Override
public void add(@Nonnull ItemStack stack) {
add(stack, stack.getCount());
}
@Override
public boolean remove(@Nonnull ItemStack stack, int size) {
for (ItemStack otherStack : stacks.get(stack.getItem())) {
@@ -54,6 +59,11 @@ public class StackListItem implements IStackList<ItemStack> {
return false;
}
@Override
public boolean remove(@Nonnull ItemStack stack) {
return remove(stack, stack.getCount());
}
@Override
@Nullable
public ItemStack get(@Nonnull ItemStack stack, int flags) {
@@ -88,11 +98,6 @@ public class StackListItem implements IStackList<ItemStack> {
return stacks.isEmpty();
}
@Override
public int getSizeFromStack(ItemStack stack) {
return stack.getCount();
}
@Nonnull
@Override
public Collection<ItemStack> getStacks() {

View File

@@ -11,6 +11,7 @@ public class FluidInventory {
private FluidStack[] fluids;
private int maxAmount;
private boolean empty = true;
@Nullable
private Consumer<Integer> listener;
@@ -56,6 +57,8 @@ public class FluidInventory {
if (listener != null) {
listener.accept(slot);
}
updateEmptyState();
}
public NBTTagCompound writeToNbt() {
@@ -80,5 +83,23 @@ public class FluidInventory {
fluids[i] = FluidStack.loadFluidStackFromNBT(tag.getCompoundTag(key));
}
}
updateEmptyState();
}
private void updateEmptyState() {
this.empty = true;
for (FluidStack fluid : fluids) {
if (fluid != null) {
this.empty = false;
return;
}
}
}
public boolean isEmpty() {
return empty;
}
}

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.inventory.item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.items.ItemStackHandler;
import javax.annotation.Nonnull;
@@ -27,15 +28,6 @@ public class ItemHandlerBase extends ItemStackHandler {
this(size, null, validators);
}
@Override
public void setStackInSlot(int slot, @Nonnull ItemStack stack) {
validateSlotIndex(slot);
stacks.set(slot, stack);
onContentsChanged(slot);
}
@Override
@Nonnull
public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) {
@@ -63,6 +55,13 @@ public class ItemHandlerBase extends ItemStackHandler {
this.empty = stacks.stream().allMatch(ItemStack::isEmpty);
}
@Override
public void deserializeNBT(NBTTagCompound tag) {
super.deserializeNBT(tag);
this.empty = stacks.stream().allMatch(ItemStack::isEmpty);
}
public boolean isEmpty() {
return empty;
}

View File

@@ -1,6 +1,8 @@
package com.raoulvdberge.refinedstorage.tile;
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
import com.raoulvdberge.refinedstorage.tile.direction.DirectionHandlerTile;
import com.raoulvdberge.refinedstorage.tile.direction.IDirectionHandler;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.block.state.IBlockState;
import net.minecraft.nbt.NBTTagCompound;

View File

@@ -11,6 +11,7 @@ import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import com.raoulvdberge.refinedstorage.tile.direction.DirectionHandlerNetworkNode;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;

View File

@@ -10,8 +10,6 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.items.IItemHandler;
import javax.annotation.Nullable;
public interface IFilterable {
int WHITELIST = 0;
int BLACKLIST = 1;
@@ -76,20 +74,6 @@ public interface IFilterable {
return false;
}
static boolean isEmpty(@Nullable IItemHandler filter) {
if (filter == null) {
return true;
}
for (int i = 0; i < filter.getSlots(); i++) {
if (!filter.getStackInSlot(i).isEmpty()) {
return false;
}
}
return true;
}
void setMode(int mode);
int getMode();

View File

@@ -1,5 +1,6 @@
package com.raoulvdberge.refinedstorage.tile;
package com.raoulvdberge.refinedstorage.tile.direction;
import com.raoulvdberge.refinedstorage.tile.TileNode;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.tile;
package com.raoulvdberge.refinedstorage.tile.direction;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.tile;
package com.raoulvdberge.refinedstorage.tile.direction;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;