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

@@ -8,6 +8,7 @@ NOTE: Worlds that used Refined Storage 1.5.x are fully compatible with Refined S
- Removed Project E integration (raoulvdberge) - Removed Project E integration (raoulvdberge)
- Removed blocking mode in autocrafting (raoulvdberge) - Removed blocking mode in autocrafting (raoulvdberge)
- Removed the Wrench (raoulvdberge) - Removed the Wrench (raoulvdberge)
- Removed "void excess items or fluids" functionality on storages (raoulvdberge)
- Rewrote autocrafting (raoulvdberge) - Rewrote autocrafting (raoulvdberge)
- Autocrafting tasks that take longer than 5 seconds to calculate are automatically stopped to avoid server strain (raoulvdberge) - Autocrafting tasks that take longer than 5 seconds to calculate are automatically stopped to avoid server strain (raoulvdberge)
- Added new storage disk system where the storage disk data (items, fluids) are stored off the disk itself, in another file (refinedstorage_disks.dat). The disk itself only stores its ID (raoulvdberge) - Added new storage disk system where the storage disk data (items, fluids) are stored off the disk itself, in another file (refinedstorage_disks.dat). The disk itself only stores its ID (raoulvdberge)

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. * Stores relevant information about the container where the {@link IStorageDisk} is in.
*/ */
public interface IStorageDiskContainerContext { public interface IStorageDiskContainerContext {
/**
* @return true if excess stacks can be voided, false otherwise
*/
boolean isVoidExcess();
/** /**
* @return the access type * @return the access type
*/ */

View File

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

View File

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

View File

@@ -251,11 +251,6 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
return TileExternalStorage.PRIORITY; return TileExternalStorage.PRIORITY;
} }
@Override
public TileDataParameter<Boolean, ?> getVoidExcessParameter() {
return null;
}
@Override @Override
public TileDataParameter<AccessType, ?> getAccessTypeParameter() { public TileDataParameter<AccessType, ?> getAccessTypeParameter() {
return TileExternalStorage.ACCESS_TYPE; 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.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.tile.TileFluidStorage; 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.tile.data.TileDataParameter;
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils; import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.StackUtils;
@@ -32,13 +35,12 @@ import net.minecraftforge.fluids.FluidStack;
import java.util.List; import java.util.List;
import java.util.UUID; 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"; public static final String ID = "fluid_storage";
private static final String NBT_PRIORITY = "Priority"; private static final String NBT_PRIORITY = "Priority";
private static final String NBT_COMPARE = "Compare"; private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode"; private static final String NBT_MODE = "Mode";
private static final String NBT_VOID_EXCESS = "VoidExcess";
public static final String NBT_ID = "Id"; public static final String NBT_ID = "Id";
private ItemHandlerFluid filters = new ItemHandlerFluid(9, new ItemHandlerListenerNetworkNode(this)); 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 priority = 0;
private int compare = IComparer.COMPARE_NBT; private int compare = IComparer.COMPARE_NBT;
private int mode = IFilterable.BLACKLIST; private int mode = IFilterable.BLACKLIST;
private boolean voidExcess = false;
private UUID storageId; private UUID storageId;
private IStorageDisk<FluidStack> storage; private IStorageDisk<FluidStack> storage;
@@ -141,7 +142,6 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
tag.setInteger(NBT_PRIORITY, priority); tag.setInteger(NBT_PRIORITY, priority);
tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_COMPARE, compare);
tag.setInteger(NBT_MODE, mode); tag.setInteger(NBT_MODE, mode);
tag.setBoolean(NBT_VOID_EXCESS, voidExcess);
AccessTypeUtils.writeAccessType(tag, accessType); AccessTypeUtils.writeAccessType(tag, accessType);
@@ -166,10 +166,6 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
mode = tag.getInteger(NBT_MODE); mode = tag.getInteger(NBT_MODE);
} }
if (tag.hasKey(NBT_VOID_EXCESS)) {
voidExcess = tag.getBoolean(NBT_VOID_EXCESS);
}
accessType = AccessTypeUtils.readAccessType(tag); accessType = AccessTypeUtils.readAccessType(tag);
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, null, filters); OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, null, filters);
@@ -241,11 +237,6 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
return TileFluidStorage.PRIORITY; return TileFluidStorage.PRIORITY;
} }
@Override
public TileDataParameter<Boolean, ?> getVoidExcessParameter() {
return TileFluidStorage.VOID_EXCESS;
}
@Override @Override
public TileDataParameter<AccessType, ?> getAccessTypeParameter() { public TileDataParameter<AccessType, ?> getAccessTypeParameter() {
return TileFluidStorage.ACCESS_TYPE; return TileFluidStorage.ACCESS_TYPE;
@@ -297,16 +288,4 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage,
network.getFluidStorageCache().sort(); 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.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.tile.TileStorage; 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.tile.data.TileDataParameter;
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils; import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.StackUtils;
@@ -32,13 +35,12 @@ import net.minecraftforge.fluids.FluidStack;
import java.util.List; import java.util.List;
import java.util.UUID; 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"; public static final String ID = "storage";
private static final String NBT_PRIORITY = "Priority"; private static final String NBT_PRIORITY = "Priority";
private static final String NBT_COMPARE = "Compare"; private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode"; private static final String NBT_MODE = "Mode";
private static final String NBT_VOID_EXCESS = "VoidExcess";
public static final String NBT_ID = "Id"; public static final String NBT_ID = "Id";
private ItemHandlerBase filters = new ItemHandlerBase(9, new ItemHandlerListenerNetworkNode(this)); 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 priority = 0;
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE; private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
private int mode = IFilterable.BLACKLIST; private int mode = IFilterable.BLACKLIST;
private boolean voidExcess = false;
private UUID storageId; private UUID storageId;
private IStorageDisk<ItemStack> storage; private IStorageDisk<ItemStack> storage;
@@ -141,7 +142,6 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
tag.setInteger(NBT_PRIORITY, priority); tag.setInteger(NBT_PRIORITY, priority);
tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_COMPARE, compare);
tag.setInteger(NBT_MODE, mode); tag.setInteger(NBT_MODE, mode);
tag.setBoolean(NBT_VOID_EXCESS, voidExcess);
AccessTypeUtils.writeAccessType(tag, accessType); AccessTypeUtils.writeAccessType(tag, accessType);
@@ -166,10 +166,6 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
mode = tag.getInteger(NBT_MODE); mode = tag.getInteger(NBT_MODE);
} }
if (tag.hasKey(NBT_VOID_EXCESS)) {
voidExcess = tag.getBoolean(NBT_VOID_EXCESS);
}
accessType = AccessTypeUtils.readAccessType(tag); accessType = AccessTypeUtils.readAccessType(tag);
OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, filters, null); OneSixMigrationHelper.migrateEmptyWhitelistToEmptyBlacklist(version, this, filters, null);
@@ -207,18 +203,6 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
markDirty(); markDirty();
} }
@Override
public boolean isVoidExcess() {
return voidExcess;
}
@Override
public void setVoidExcess(boolean voidExcess) {
this.voidExcess = voidExcess;
markDirty();
}
public ItemHandlerBase getFilters() { public ItemHandlerBase getFilters() {
return filters; return filters;
} }
@@ -253,11 +237,6 @@ public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, ISto
return TileStorage.PRIORITY; return TileStorage.PRIORITY;
} }
@Override
public TileDataParameter<Boolean, ?> getVoidExcessParameter() {
return TileStorage.VOID_EXCESS;
}
@Override @Override
public TileDataParameter<AccessType, ?> getAccessTypeParameter() { public TileDataParameter<AccessType, ?> getAccessTypeParameter() {
return TileStorage.ACCESS_TYPE; return TileStorage.ACCESS_TYPE;

View File

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

View File

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

View File

@@ -53,10 +53,6 @@ public class GuiStorage extends GuiBase {
addSideButton(new SideButtonCompare(this, gui.getCompareParameter(), IComparer.COMPARE_OREDICT)); 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) { if (gui.getAccessTypeParameter() != null) {
addSideButton(new SideButtonAccessType(this, gui.getAccessTypeParameter())); 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> COMPARE = IComparable.createParameter();
public static final TileDataParameter<Integer, TileDiskDrive> MODE = IFilterable.createParameter(); public static final TileDataParameter<Integer, TileDiskDrive> MODE = IFilterable.createParameter();
public static final TileDataParameter<Integer, TileDiskDrive> TYPE = IType.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<AccessType, TileDiskDrive> ACCESS_TYPE = IAccessType.createParameter();
public static final TileDataParameter<Integer, TileDiskDrive> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> { public static final TileDataParameter<Integer, TileDiskDrive> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> {
int stored = 0; int stored = 0;
@@ -81,7 +80,6 @@ public class TileDiskDrive extends TileNode<NetworkNodeDiskDrive> {
dataManager.addWatchedParameter(COMPARE); dataManager.addWatchedParameter(COMPARE);
dataManager.addWatchedParameter(MODE); dataManager.addWatchedParameter(MODE);
dataManager.addWatchedParameter(TYPE); dataManager.addWatchedParameter(TYPE);
dataManager.addWatchedParameter(VOID_EXCESS);
dataManager.addWatchedParameter(ACCESS_TYPE); dataManager.addWatchedParameter(ACCESS_TYPE);
dataManager.addWatchedParameter(STORED); dataManager.addWatchedParameter(STORED);
dataManager.addWatchedParameter(CAPACITY); 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.api.storage.AccessType;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage; 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 com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.network.datasync.DataSerializers; import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -13,7 +16,6 @@ import javax.annotation.Nonnull;
public class TileFluidStorage extends TileNode<NetworkNodeFluidStorage> { public class TileFluidStorage extends TileNode<NetworkNodeFluidStorage> {
public static final TileDataParameter<Integer, TileFluidStorage> PRIORITY = IPrioritizable.createParameter(); public static final TileDataParameter<Integer, TileFluidStorage> PRIORITY = IPrioritizable.createParameter();
public static final TileDataParameter<Integer, TileFluidStorage> COMPARE = IComparable.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<Integer, TileFluidStorage> MODE = IFilterable.createParameter();
public static final TileDataParameter<AccessType, TileFluidStorage> ACCESS_TYPE = IAccessType.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()); 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(COMPARE);
dataManager.addWatchedParameter(MODE); dataManager.addWatchedParameter(MODE);
dataManager.addWatchedParameter(STORED); dataManager.addWatchedParameter(STORED);
dataManager.addWatchedParameter(VOID_EXCESS);
dataManager.addWatchedParameter(ACCESS_TYPE); 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.api.storage.AccessType;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage; 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 com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.network.datasync.DataSerializers; import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.util.math.BlockPos; 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<Integer, TileStorage> MODE = IFilterable.createParameter();
public static final TileDataParameter<AccessType, TileStorage> ACCESS_TYPE = IAccessType.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<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() { public TileStorage() {
dataManager.addWatchedParameter(PRIORITY); dataManager.addWatchedParameter(PRIORITY);
dataManager.addWatchedParameter(COMPARE); dataManager.addWatchedParameter(COMPARE);
dataManager.addWatchedParameter(MODE); dataManager.addWatchedParameter(MODE);
dataManager.addWatchedParameter(STORED); dataManager.addWatchedParameter(STORED);
dataManager.addWatchedParameter(VOID_EXCESS);
dataManager.addWatchedParameter(ACCESS_TYPE); 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; return true;
} }
@Override
public boolean isVoidExcess() {
return false;
}
@Override @Override
public AccessType getAccessType() { public AccessType getAccessType() {
return AccessType.INSERT_EXTRACT; 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 @Override
public AccessType getAccessType() { public AccessType getAccessType() {
return AccessType.INSERT_EXTRACT; return AccessType.INSERT_EXTRACT;

View File

@@ -124,10 +124,6 @@ sidebutton.refinedstorage:detector.mode.3=Signal bei automatischer Herstellung
sidebutton.refinedstorage:crafter.triggered_autocrafting=Automatische Herstellung mit Signal einschalten sidebutton.refinedstorage:crafter.triggered_autocrafting=Automatische Herstellung mit Signal einschalten
sidebutton.refinedstorage:void_excess.items=Überlauf löschen (Teile)
sidebutton.refinedstorage:void_excess.fluids=Überlauf löschen (Flüssigkeiten)
sidebutton.refinedstorage:void_excess.items_fluids=Überlauf löschen (Teile und Flüssigkeiten)
sidebutton.refinedstorage:constructor.drop=Teil fallen lassen anstatt platzieren sidebutton.refinedstorage:constructor.drop=Teil fallen lassen anstatt platzieren
sidebutton.refinedstorage:destructor.pickup=Teil aufheben anstatt abbauen sidebutton.refinedstorage:destructor.pickup=Teil aufheben anstatt abbauen

View File

@@ -184,10 +184,6 @@ sidebutton.refinedstorage:detector.mode.1=Emit signal when on the amount
sidebutton.refinedstorage:detector.mode.2=Emit signal when above the amount sidebutton.refinedstorage:detector.mode.2=Emit signal when above the amount
sidebutton.refinedstorage:detector.mode.3=Emit signal when item is being autocrafted sidebutton.refinedstorage:detector.mode.3=Emit signal when item is being autocrafted
sidebutton.refinedstorage:void_excess.items=Void excess items
sidebutton.refinedstorage:void_excess.fluids=Void excess fluids
sidebutton.refinedstorage:void_excess.items_fluids=Void excess items and fluids
sidebutton.refinedstorage:constructor.drop=Drop blocks instead of placing sidebutton.refinedstorage:constructor.drop=Drop blocks instead of placing
sidebutton.refinedstorage:destructor.pickup=Pickup items instead of breaking sidebutton.refinedstorage:destructor.pickup=Pickup items instead of breaking

View File

@@ -178,10 +178,6 @@ sidebutton.refinedstorage:detector.mode.1=Emitir señal si la cantidad se alcanz
sidebutton.refinedstorage:detector.mode.2=Emitir señal si esta más de lo indicado sidebutton.refinedstorage:detector.mode.2=Emitir señal si esta más de lo indicado
sidebutton.refinedstorage:detector.mode.3=Emitir señal si se esta fabricando esto sidebutton.refinedstorage:detector.mode.3=Emitir señal si se esta fabricando esto
sidebutton.refinedstorage:void_excess.items=Vaciar objetos excedentes
sidebutton.refinedstorage:void_excess.fluids=Vaciar fluidos excedentes
sidebutton.refinedstorage:void_excess.items_fluids=Vaciar objetos y fluidos excedentes
sidebutton.refinedstorage:constructor.drop=Soltar bloques en lugar de colocar sidebutton.refinedstorage:constructor.drop=Soltar bloques en lugar de colocar
sidebutton.refinedstorage:destructor.pickup=Recoger objetos en lugar de romper sidebutton.refinedstorage:destructor.pickup=Recoger objetos en lugar de romper

View File

@@ -154,9 +154,6 @@ sidebutton.refinedstorage:detector.mode.0=Emet un signal quand la quantité est
guidebutton.refinedstorage:detector.mode.1=Emet un signal quand la quantité est égale guidebutton.refinedstorage:detector.mode.1=Emet un signal quand la quantité est égale
sidebutton.refinedstorage:detector.mode.2=Emet un signal quand la quantité est supérieure sidebutton.refinedstorage:detector.mode.2=Emet un signal quand la quantité est supérieure
sidebutton.refinedstorage:detector.mode.3=Emet un signal quand l'item est crafté auto sidebutton.refinedstorage:detector.mode.3=Emet un signal quand l'item est crafté auto
sidebutton.refinedstorage:void_excess.items=Supprime les items en surplus
sidebutton.refinedstorage:void_excess.fluids=Supprime les fluides en surplus
sidebutton.refinedstorage:void_excess.items_fluids=Supprime les items et liquides en surplus
sidebutton.refinedstorage:constructor.drop=Laisse tomber les blocs au lieu de les placer sidebutton.refinedstorage:constructor.drop=Laisse tomber les blocs au lieu de les placer

View File

@@ -153,10 +153,6 @@ sidebutton.refinedstorage:detector.mode.1=수량과 일치할 때 신호 출력
sidebutton.refinedstorage:detector.mode.2=수량 이상일 때 신호 출력 sidebutton.refinedstorage:detector.mode.2=수량 이상일 때 신호 출력
sidebutton.refinedstorage:detector.mode.3=자동 조합 시 신호 출력 sidebutton.refinedstorage:detector.mode.3=자동 조합 시 신호 출력
sidebutton.refinedstorage:void_excess.items=수량 초과 아이템 자동 제거
sidebutton.refinedstorage:void_excess.fluids=용량 초과 액체 자동 제거
sidebutton.refinedstorage:void_excess.items_fluids=용량 초과 아이템/액체 자동 제거
sidebutton.refinedstorage:constructor.drop=블럭을 설치하지 않고 떨어트림 sidebutton.refinedstorage:constructor.drop=블럭을 설치하지 않고 떨어트림
sidebutton.refinedstorage:destructor.pickup=블럭을 파괴하지 않고 주움 sidebutton.refinedstorage:destructor.pickup=블럭을 파괴하지 않고 주움

View File

@@ -156,10 +156,6 @@ sidebutton.refinedstorage:detector.mode.1=Emite um sinal quando estiver no valor
sidebutton.refinedstorage:detector.mode.2=Emite sinal quando acima do valor sidebutton.refinedstorage:detector.mode.2=Emite sinal quando acima do valor
sidebutton.refinedstorage:detector.mode.3=Emite o sinal quando o item está sendo auto-fabricado sidebutton.refinedstorage:detector.mode.3=Emite o sinal quando o item está sendo auto-fabricado
sidebutton.refinedstorage:void_excess.items=Excesso de itens vazio
sidebutton.refinedstorage:void_excess.fluids=Excesso de fluidos vazio
sidebutton.refinedstorage:void_excess.items_fluids=Excesso de itens e fluidos vazio
sidebutton.refinedstorage:constructor.drop=Solte os blocos em vez de colocar sidebutton.refinedstorage:constructor.drop=Solte os blocos em vez de colocar
sidebutton.refinedstorage:destructor.pickup=Pegue os itens em vez de quebrar sidebutton.refinedstorage:destructor.pickup=Pegue os itens em vez de quebrar

View File

@@ -179,10 +179,6 @@ sidebutton.refinedstorage:detector.mode.1=Выдача сигнала, если
sidebutton.refinedstorage:detector.mode.2=Выдача сигнала, если количество больше sidebutton.refinedstorage:detector.mode.2=Выдача сигнала, если количество больше
sidebutton.refinedstorage:detector.mode.3=Излучать сигнал, когда предмет начинает автосоздание sidebutton.refinedstorage:detector.mode.3=Излучать сигнал, когда предмет начинает автосоздание
sidebutton.refinedstorage:void_excess.items=Избыток предметов
sidebutton.refinedstorage:void_excess.fluids=Избыток жидкости
sidebutton.refinedstorage:void_excess.items_fluids=Избыток предметов и жидкости
sidebutton.refinedstorage:constructor.drop=Выкидывать блоки вместо размещения sidebutton.refinedstorage:constructor.drop=Выкидывать блоки вместо размещения
sidebutton.refinedstorage:destructor.pickup=Подбирать предметы, а не ломать sidebutton.refinedstorage:destructor.pickup=Подбирать предметы, а не ломать

View File

@@ -157,10 +157,6 @@ sidebutton.refinedstorage:detector.mode.1=物品数量等于输入数量时输
sidebutton.refinedstorage:detector.mode.2=物品数量大于于输入数量时输出信号 sidebutton.refinedstorage:detector.mode.2=物品数量大于于输入数量时输出信号
sidebutton.refinedstorage:detector.mode.3=当正在自动合成的时候输出红石信号 sidebutton.refinedstorage:detector.mode.3=当正在自动合成的时候输出红石信号
sidebutton.refinedstorage:void_excess.items=销毁多余的物品
sidebutton.refinedstorage:void_excess.fluids=销毁多余的流体
sidebutton.refinedstorage:void_excess.items_fluids=销毁多余的物品和流体
sidebutton.refinedstorage:constructor.drop=将物品以掉落物形式抛出 sidebutton.refinedstorage:constructor.drop=将物品以掉落物形式抛出
sidebutton.refinedstorage:destructor.pickup=拾取物品模式 sidebutton.refinedstorage:destructor.pickup=拾取物品模式