Removed "void excess items or fluids" functionality on storages

This commit is contained in:
raoulvdberge
2018-06-25 09:33:23 +02:00
parent 5ea1d15674
commit 9b3b83e246
26 changed files with 26 additions and 230 deletions

View File

@@ -6,11 +6,6 @@ import com.raoulvdberge.refinedstorage.api.storage.AccessType;
* Stores relevant information about the container where the {@link IStorageDisk} is in.
*/
public interface IStorageDiskContainerContext {
/**
* @return true if excess stacks can be voided, false otherwise
*/
boolean isVoidExcess();
/**
* @return the access type
*/

View File

@@ -18,8 +18,6 @@ public interface IGuiStorage {
TileDataParameter<AccessType, ?> getAccessTypeParameter();
TileDataParameter<Boolean, ?> getVoidExcessParameter();
String getVoidExcessType();
int getStored();

View File

@@ -36,7 +36,7 @@ import net.minecraftforge.items.IItemHandler;
import java.util.List;
import java.util.function.Predicate;
public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IType, IExcessVoidable, IAccessType, IStorageDiskContainerContext {
public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IType, IAccessType, IStorageDiskContainerContext {
public static final Predicate<ItemStack> VALIDATOR_STORAGE_DISK = s -> s.getItem() instanceof IStorageDiskProvider && ((IStorageDiskProvider) s.getItem()).isValid(s);
public static final String ID = "disk_drive";
@@ -45,7 +45,6 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode";
private static final String NBT_TYPE = "Type";
private static final String NBT_VOID_EXCESS = "VoidExcess";
private ItemHandlerBase disks = new ItemHandlerBase(8, new ItemHandlerListenerNetworkNode(this), VALIDATOR_STORAGE_DISK) {
@Override
@@ -84,7 +83,6 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
private int mode = IFilterable.BLACKLIST;
private int type = IType.ITEMS;
private boolean voidExcess = false;
public NetworkNodeDiskDrive(World world, BlockPos pos) {
super(world, pos);
@@ -180,7 +178,6 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
tag.setInteger(NBT_COMPARE, compare);
tag.setInteger(NBT_MODE, mode);
tag.setInteger(NBT_TYPE, type);
tag.setBoolean(NBT_VOID_EXCESS, voidExcess);
AccessTypeUtils.writeAccessType(tag, accessType);
@@ -210,10 +207,6 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
type = tag.getInteger(NBT_TYPE);
}
if (tag.hasKey(NBT_VOID_EXCESS)) {
voidExcess = tag.getBoolean(NBT_VOID_EXCESS);
}
accessType = AccessTypeUtils.readAccessType(tag);
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, itemFilters, fluidFilters);
@@ -273,11 +266,6 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
return TileDiskDrive.PRIORITY;
}
@Override
public TileDataParameter<Boolean, ?> getVoidExcessParameter() {
return TileDiskDrive.VOID_EXCESS;
}
@Override
public TileDataParameter<AccessType, ?> getAccessTypeParameter() {
return TileDiskDrive.ACCESS_TYPE;
@@ -336,18 +324,6 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
return disks;
}
@Override
public boolean isVoidExcess() {
return voidExcess;
}
@Override
public void setVoidExcess(boolean voidExcess) {
this.voidExcess = voidExcess;
markDirty();
}
@Override
public int getType() {
return world.isRemote ? TileDiskDrive.TYPE.getValue() : type;

View File

@@ -534,11 +534,6 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
return new CombinedInvWrapper(inputDisks, outputDisks, upgrades);
}
@Override
public boolean isVoidExcess() {
return false;
}
@Override
public AccessType getAccessType() {
return AccessType.INSERT_EXTRACT;

View File

@@ -251,11 +251,6 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
return TileExternalStorage.PRIORITY;
}
@Override
public TileDataParameter<Boolean, ?> getVoidExcessParameter() {
return null;
}
@Override
public TileDataParameter<AccessType, ?> getAccessTypeParameter() {
return TileExternalStorage.ACCESS_TYPE;

View File

@@ -19,7 +19,10 @@ import com.raoulvdberge.refinedstorage.block.FluidStorageType;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.tile.TileFluidStorage;
import com.raoulvdberge.refinedstorage.tile.config.*;
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
import com.raoulvdberge.refinedstorage.util.StackUtils;
@@ -32,13 +35,12 @@ import net.minecraftforge.fluids.FluidStack;
import java.util.List;
import java.util.UUID;
public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IExcessVoidable, IAccessType, IStorageDiskContainerContext {
public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IAccessType, IStorageDiskContainerContext {
public static final String ID = "fluid_storage";
private static final String NBT_PRIORITY = "Priority";
private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode";
private static final String NBT_VOID_EXCESS = "VoidExcess";
public static final String NBT_ID = "Id";
private ItemHandlerFluid filters = new ItemHandlerFluid(9, new ItemHandlerListenerNetworkNode(this));
@@ -49,7 +51,6 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
private int priority = 0;
private int compare = IComparer.COMPARE_NBT;
private int mode = IFilterable.BLACKLIST;
private boolean voidExcess = false;
private UUID storageId;
private IStorageDisk<FluidStack> storage;
@@ -141,7 +142,6 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
tag.setInteger(NBT_PRIORITY, priority);
tag.setInteger(NBT_COMPARE, compare);
tag.setInteger(NBT_MODE, mode);
tag.setBoolean(NBT_VOID_EXCESS, voidExcess);
AccessTypeUtils.writeAccessType(tag, accessType);
@@ -166,10 +166,6 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
mode = tag.getInteger(NBT_MODE);
}
if (tag.hasKey(NBT_VOID_EXCESS)) {
voidExcess = tag.getBoolean(NBT_VOID_EXCESS);
}
accessType = AccessTypeUtils.readAccessType(tag);
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, null, filters);
@@ -241,11 +237,6 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
return TileFluidStorage.PRIORITY;
}
@Override
public TileDataParameter<Boolean, ?> getVoidExcessParameter() {
return TileFluidStorage.VOID_EXCESS;
}
@Override
public TileDataParameter<AccessType, ?> getAccessTypeParameter() {
return TileFluidStorage.ACCESS_TYPE;
@@ -297,16 +288,4 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
network.getFluidStorageCache().sort();
}
}
@Override
public boolean isVoidExcess() {
return voidExcess;
}
@Override
public void setVoidExcess(boolean value) {
this.voidExcess = value;
markDirty();
}
}

View File

@@ -19,7 +19,10 @@ import com.raoulvdberge.refinedstorage.block.ItemStorageType;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.tile.TileStorage;
import com.raoulvdberge.refinedstorage.tile.config.*;
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
import com.raoulvdberge.refinedstorage.util.StackUtils;
@@ -32,13 +35,12 @@ import net.minecraftforge.fluids.FluidStack;
import java.util.List;
import java.util.UUID;
public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IExcessVoidable, IAccessType, IStorageDiskContainerContext {
public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IAccessType, IStorageDiskContainerContext {
public static final String ID = "storage";
private static final String NBT_PRIORITY = "Priority";
private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode";
private static final String NBT_VOID_EXCESS = "VoidExcess";
public static final String NBT_ID = "Id";
private ItemHandlerBase filters = new ItemHandlerBase(9, new ItemHandlerListenerNetworkNode(this));
@@ -49,7 +51,6 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
private int priority = 0;
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
private int mode = IFilterable.BLACKLIST;
private boolean voidExcess = false;
private UUID storageId;
private IStorageDisk<ItemStack> storage;
@@ -141,7 +142,6 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
tag.setInteger(NBT_PRIORITY, priority);
tag.setInteger(NBT_COMPARE, compare);
tag.setInteger(NBT_MODE, mode);
tag.setBoolean(NBT_VOID_EXCESS, voidExcess);
AccessTypeUtils.writeAccessType(tag, accessType);
@@ -166,10 +166,6 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
mode = tag.getInteger(NBT_MODE);
}
if (tag.hasKey(NBT_VOID_EXCESS)) {
voidExcess = tag.getBoolean(NBT_VOID_EXCESS);
}
accessType = AccessTypeUtils.readAccessType(tag);
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, filters, null);
@@ -207,18 +203,6 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
markDirty();
}
@Override
public boolean isVoidExcess() {
return voidExcess;
}
@Override
public void setVoidExcess(boolean voidExcess) {
this.voidExcess = voidExcess;
markDirty();
}
public ItemHandlerBase getFilters() {
return filters;
}
@@ -253,11 +237,6 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
return TileStorage.PRIORITY;
}
@Override
public TileDataParameter<Boolean, ?> getVoidExcessParameter() {
return TileStorage.VOID_EXCESS;
}
@Override
public TileDataParameter<AccessType, ?> getAccessTypeParameter() {
return TileStorage.ACCESS_TYPE;

View File

@@ -72,10 +72,6 @@ public class StorageDiskFluid implements IStorageDisk<FluidStack> {
int remainingSpace = getCapacity() - getStored();
if (remainingSpace <= 0) {
if (context.isVoidExcess()) {
return null;
}
return StackUtils.copy(stack, size);
}
@@ -85,7 +81,7 @@ public class StorageDiskFluid implements IStorageDisk<FluidStack> {
onChanged();
}
return context.isVoidExcess() ? null : StackUtils.copy(otherStack, size - remainingSpace);
return StackUtils.copy(otherStack, size - remainingSpace);
} else {
if (!simulate) {
otherStack.amount += size;
@@ -102,10 +98,6 @@ public class StorageDiskFluid implements IStorageDisk<FluidStack> {
int remainingSpace = getCapacity() - getStored();
if (remainingSpace <= 0) {
if (context.isVoidExcess()) {
return null;
}
return StackUtils.copy(stack, size);
}
@@ -115,7 +107,7 @@ public class StorageDiskFluid implements IStorageDisk<FluidStack> {
onChanged();
}
return context.isVoidExcess() ? null : StackUtils.copy(stack, size - remainingSpace);
return StackUtils.copy(stack, size - remainingSpace);
} else {
if (!simulate) {
stacks.put(stack.getFluid(), StackUtils.copy(stack, size));
@@ -179,13 +171,7 @@ public class StorageDiskFluid implements IStorageDisk<FluidStack> {
return 0;
}
int inserted = remainder == null ? size : (size - remainder.amount);
if (context.isVoidExcess() && storedPreInsertion + inserted > getCapacity()) {
inserted = getCapacity() - storedPreInsertion;
}
return inserted;
return remainder == null ? size : (size - remainder.amount);
}
@Override

View File

@@ -107,10 +107,6 @@ public class StorageDiskItem implements IStorageDisk<ItemStack> {
int remainingSpace = getCapacity() - getStored();
if (remainingSpace <= 0) {
if (context.isVoidExcess()) {
return null;
}
return ItemHandlerHelper.copyStackWithSize(stack, size);
}
@@ -120,7 +116,7 @@ public class StorageDiskItem implements IStorageDisk<ItemStack> {
onChanged();
}
return context.isVoidExcess() ? null : ItemHandlerHelper.copyStackWithSize(otherStack, size - remainingSpace);
return ItemHandlerHelper.copyStackWithSize(otherStack, size - remainingSpace);
} else {
if (!simulate) {
otherStack.grow(size);
@@ -137,10 +133,6 @@ public class StorageDiskItem implements IStorageDisk<ItemStack> {
int remainingSpace = getCapacity() - getStored();
if (remainingSpace <= 0) {
if (context.isVoidExcess()) {
return null;
}
return ItemHandlerHelper.copyStackWithSize(stack, size);
}
@@ -150,7 +142,7 @@ public class StorageDiskItem implements IStorageDisk<ItemStack> {
onChanged();
}
return context.isVoidExcess() ? null : ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace);
return ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace);
} else {
if (!simulate) {
stacks.put(stack.getItem(), ItemHandlerHelper.copyStackWithSize(stack, size));
@@ -236,13 +228,7 @@ public class StorageDiskItem implements IStorageDisk<ItemStack> {
return 0;
}
int inserted = remainder == null ? size : (size - remainder.getCount());
if (context.isVoidExcess() && storedPreInsertion + inserted > getCapacity()) {
inserted = getCapacity() - storedPreInsertion;
}
return inserted;
return remainder == null ? size : (size - remainder.getCount());
}
Multimap<Item, ItemStack> getRawStacks() {

View File

@@ -53,10 +53,6 @@ public class GuiStorage extends GuiBase {
addSideButton(new SideButtonCompare(this, gui.getCompareParameter(), IComparer.COMPARE_OREDICT));
}
if (gui.getVoidExcessParameter() != null) {
addSideButton(new SideButtonVoidExcess(this, gui.getVoidExcessParameter(), gui.getVoidExcessType()));
}
if (gui.getAccessTypeParameter() != null) {
addSideButton(new SideButtonAccessType(this, gui.getAccessTypeParameter()));
}

View File

@@ -1,33 +0,0 @@
package com.raoulvdberge.refinedstorage.gui.control;
import com.raoulvdberge.refinedstorage.gui.GuiBase;
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.util.text.TextFormatting;
public class SideButtonVoidExcess extends SideButton {
private TileDataParameter<Boolean, ?> parameter;
private String type;
public SideButtonVoidExcess(GuiBase gui, TileDataParameter<Boolean, ?> parameter, String type) {
super(gui);
this.parameter = parameter;
this.type = type;
}
@Override
public String getTooltip() {
return GuiBase.t("sidebutton.refinedstorage:void_excess." + type) + "\n" + TextFormatting.GRAY + GuiBase.t(parameter.getValue() ? "gui.yes" : "gui.no");
}
@Override
protected void drawButtonIcon(int x, int y) {
gui.drawTexture(x, y, parameter.getValue() ? 16 : 0, 192, 16, 16);
}
@Override
public void actionPerformed() {
TileDataManager.setParameter(parameter, !parameter.getValue());
}
}

View File

@@ -21,7 +21,6 @@ public class TileDiskDrive extends TileNode<NetworkNodeDiskDrive> {
public static final TileDataParameter<Integer, TileDiskDrive> COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer, TileDiskDrive> MODE = IFilterable.createParameter();
public static final TileDataParameter<Integer, TileDiskDrive> TYPE = IType.createParameter();
public static final TileDataParameter<Boolean, TileDiskDrive> VOID_EXCESS = IExcessVoidable.createParameter();
public static final TileDataParameter<AccessType, TileDiskDrive> ACCESS_TYPE = IAccessType.createParameter();
public static final TileDataParameter<Integer, TileDiskDrive> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> {
int stored = 0;
@@ -81,7 +80,6 @@ public class TileDiskDrive extends TileNode<NetworkNodeDiskDrive> {
dataManager.addWatchedParameter(COMPARE);
dataManager.addWatchedParameter(MODE);
dataManager.addWatchedParameter(TYPE);
dataManager.addWatchedParameter(VOID_EXCESS);
dataManager.addWatchedParameter(ACCESS_TYPE);
dataManager.addWatchedParameter(STORED);
dataManager.addWatchedParameter(CAPACITY);

View File

@@ -2,7 +2,10 @@ package com.raoulvdberge.refinedstorage.tile;
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage;
import com.raoulvdberge.refinedstorage.tile.config.*;
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.util.math.BlockPos;
@@ -13,7 +16,6 @@ import javax.annotation.Nonnull;
public class TileFluidStorage extends TileNode<NetworkNodeFluidStorage> {
public static final TileDataParameter<Integer, TileFluidStorage> PRIORITY = IPrioritizable.createParameter();
public static final TileDataParameter<Integer, TileFluidStorage> COMPARE = IComparable.createParameter();
public static final TileDataParameter<Boolean, TileFluidStorage> VOID_EXCESS = IExcessVoidable.createParameter();
public static final TileDataParameter<Integer, TileFluidStorage> MODE = IFilterable.createParameter();
public static final TileDataParameter<AccessType, TileFluidStorage> ACCESS_TYPE = IAccessType.createParameter();
public static final TileDataParameter<Integer, TileFluidStorage> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getStorage().getStored());
@@ -23,7 +25,6 @@ public class TileFluidStorage extends TileNode<NetworkNodeFluidStorage> {
dataManager.addWatchedParameter(COMPARE);
dataManager.addWatchedParameter(MODE);
dataManager.addWatchedParameter(STORED);
dataManager.addWatchedParameter(VOID_EXCESS);
dataManager.addWatchedParameter(ACCESS_TYPE);
}

View File

@@ -2,7 +2,10 @@ package com.raoulvdberge.refinedstorage.tile;
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage;
import com.raoulvdberge.refinedstorage.tile.config.*;
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.tile.config.IPrioritizable;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.util.math.BlockPos;
@@ -16,14 +19,12 @@ public class TileStorage extends TileNode<NetworkNodeStorage> {
public static final TileDataParameter<Integer, TileStorage> MODE = IFilterable.createParameter();
public static final TileDataParameter<AccessType, TileStorage> ACCESS_TYPE = IAccessType.createParameter();
public static final TileDataParameter<Integer, TileStorage> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getStorage().getStored());
public static final TileDataParameter<Boolean, TileStorage> VOID_EXCESS = IExcessVoidable.createParameter();
public TileStorage() {
dataManager.addWatchedParameter(PRIORITY);
dataManager.addWatchedParameter(COMPARE);
dataManager.addWatchedParameter(MODE);
dataManager.addWatchedParameter(STORED);
dataManager.addWatchedParameter(VOID_EXCESS);
dataManager.addWatchedParameter(ACCESS_TYPE);
}

View File

@@ -1,16 +0,0 @@
package com.raoulvdberge.refinedstorage.tile.config;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.tileentity.TileEntity;
public interface IExcessVoidable {
static <T extends TileEntity & INetworkNodeProxy> TileDataParameter<Boolean, T> createParameter() {
return new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> ((IExcessVoidable) t.getNode()).isVoidExcess(), (t, v) -> ((IExcessVoidable) t.getNode()).setVoidExcess(v));
}
boolean isVoidExcess();
void setVoidExcess(boolean voidExcess);
}

View File

@@ -388,11 +388,6 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
return true;
}
@Override
public boolean isVoidExcess() {
return false;
}
@Override
public AccessType getAccessType() {
return AccessType.INSERT_EXTRACT;

View File

@@ -661,11 +661,6 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
}
}
@Override
public boolean isVoidExcess() {
return false;
}
@Override
public AccessType getAccessType() {
return AccessType.INSERT_EXTRACT;