Merge remote-tracking branch 'origin/mc1.10' into mc1.10
This commit is contained in:
@@ -49,4 +49,13 @@ public interface IFluidStorage {
|
||||
* @return the priority of this storage
|
||||
*/
|
||||
int getPriority();
|
||||
|
||||
/**
|
||||
* READ(0) : Can see the fluid stored in this storage
|
||||
* WRITE(1) : Can insert and/or extract fluid from this storage
|
||||
* READ_WRITE(2) : Can see, insert and extract fluid from this storage
|
||||
*
|
||||
* @return the access type of this storage
|
||||
*/
|
||||
int getAccessType();
|
||||
}
|
||||
|
||||
@@ -49,4 +49,13 @@ public interface IItemStorage {
|
||||
* @return The priority of this storage
|
||||
*/
|
||||
int getPriority();
|
||||
|
||||
/**
|
||||
* READ(0) : Can see the items stored in this storage
|
||||
* WRITE(1) : Can insert and/or extract items from this storage
|
||||
* READ_WRITE(2) : Can see, insert and extract items from this storage
|
||||
*
|
||||
* @return the access type of this storage
|
||||
*/
|
||||
int getAccessType();
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@ import refinedstorage.api.storage.fluid.IFluidStorageProvider;
|
||||
import refinedstorage.api.storage.fluid.IGroupedFluidStorage;
|
||||
import refinedstorage.api.util.IFluidStackList;
|
||||
import refinedstorage.apiimpl.API;
|
||||
import refinedstorage.tile.config.IAccessType;
|
||||
import refinedstorage.tile.externalstorage.FluidStorageExternal;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.ArrayList;
|
||||
@@ -32,6 +34,10 @@ public class GroupedFluidStorage implements IGroupedFluidStorage {
|
||||
list.clear();
|
||||
|
||||
for (IFluidStorage storage : storages) {
|
||||
if (storage.getAccessType() == IAccessType.WRITE) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (FluidStack stack : storage.getStacks()) {
|
||||
add(stack, true);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ import refinedstorage.api.storage.item.IItemStorage;
|
||||
import refinedstorage.api.storage.item.IItemStorageProvider;
|
||||
import refinedstorage.api.util.IItemStackList;
|
||||
import refinedstorage.apiimpl.API;
|
||||
import refinedstorage.tile.config.IAccessType;
|
||||
import refinedstorage.tile.externalstorage.ItemStorageItemHandler;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.ArrayList;
|
||||
@@ -33,6 +35,10 @@ public class GroupedItemStorage implements IGroupedItemStorage {
|
||||
list.clear();
|
||||
|
||||
for (IItemStorage storage : storages) {
|
||||
if (storage.getAccessType() == IAccessType.WRITE) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (ItemStack stack : storage.getItems()) {
|
||||
add(stack, true);
|
||||
}
|
||||
|
||||
@@ -55,6 +55,10 @@ public class GuiStorage extends GuiBase {
|
||||
addSideButton(new SideButtonVoidExcess(this, gui.getVoidExcessParameter(), gui.getVoidExcessType()));
|
||||
}
|
||||
|
||||
if (gui.getAccessTypeParameter() != null) {
|
||||
addSideButton(new SideButtonAccessType(this, gui.getAccessTypeParameter()));
|
||||
}
|
||||
|
||||
priorityField = new GuiTextField(0, fontRendererObj, x + 98 + 1, y + 54 + 1, 29, fontRendererObj.FONT_HEIGHT);
|
||||
priorityField.setEnableBackgroundDrawing(false);
|
||||
priorityField.setVisible(true);
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package refinedstorage.gui.sidebutton;
|
||||
|
||||
import refinedstorage.gui.GuiBase;
|
||||
import refinedstorage.tile.config.IAccessType;
|
||||
import refinedstorage.tile.data.TileDataManager;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public class SideButtonAccessType extends SideButton {
|
||||
private TileDataParameter<Integer> parameter;
|
||||
|
||||
public SideButtonAccessType(GuiBase gui, TileDataParameter<Integer> parameter) {
|
||||
super(gui);
|
||||
|
||||
this.parameter = parameter;
|
||||
}
|
||||
|
||||
protected void drawButtonIcon(int x, int y) {
|
||||
//TODO
|
||||
}
|
||||
|
||||
public String getTooltip() {
|
||||
switch (parameter.getValue()) {
|
||||
case IAccessType.READ:
|
||||
return gui.t("sidebutton.refinedstorage:access_type.read");
|
||||
case IAccessType.WRITE:
|
||||
return gui.t("sidebutton.refinedstorage:access_type.write");
|
||||
default:
|
||||
case IAccessType.READ_WRITE:
|
||||
return gui.t("sidebutton.refinedstorage:access_type.read_write");
|
||||
}
|
||||
}
|
||||
|
||||
public void actionPerformed() {
|
||||
TileDataManager.setParameter(parameter, ((parameter.getValue() + 1 > IAccessType.READ_WRITE) ? IAccessType.READ : parameter.getValue() + 1));
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ import net.minecraftforge.fluids.FluidStack;
|
||||
import refinedstorage.RSItems;
|
||||
import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
||||
import refinedstorage.block.EnumFluidStorageType;
|
||||
import refinedstorage.tile.config.IAccessType;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -55,6 +56,11 @@ public class ItemFluidStorageDisk extends ItemBase {
|
||||
public int getPriority() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return IAccessType.READ_WRITE;
|
||||
}
|
||||
};
|
||||
|
||||
for (Fluid fluid : FluidRegistry.getRegisteredFluids().values()) {
|
||||
|
||||
@@ -15,6 +15,7 @@ import net.minecraft.world.World;
|
||||
import refinedstorage.RSItems;
|
||||
import refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
||||
import refinedstorage.block.EnumItemStorageType;
|
||||
import refinedstorage.tile.config.IAccessType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
@@ -67,6 +68,11 @@ public class ItemStorageDisk extends ItemBase {
|
||||
public int getPriority() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return IAccessType.READ_WRITE;
|
||||
}
|
||||
};
|
||||
|
||||
Iterator<Item> it = Item.REGISTRY.iterator();
|
||||
|
||||
@@ -17,6 +17,8 @@ public interface IStorageGui {
|
||||
|
||||
TileDataParameter<Boolean> getVoidExcessParameter();
|
||||
|
||||
TileDataParameter<Integer> getAccessTypeParameter();
|
||||
|
||||
String getVoidExcessType();
|
||||
|
||||
int getStored();
|
||||
|
||||
@@ -61,6 +61,7 @@ import refinedstorage.network.MessageGridFluidDelta;
|
||||
import refinedstorage.network.MessageGridFluidUpdate;
|
||||
import refinedstorage.network.MessageGridItemDelta;
|
||||
import refinedstorage.network.MessageGridItemUpdate;
|
||||
import refinedstorage.tile.config.IAccessType;
|
||||
import refinedstorage.tile.config.IRedstoneConfigurable;
|
||||
import refinedstorage.tile.config.RedstoneMode;
|
||||
import refinedstorage.tile.data.ITileDataProducer;
|
||||
@@ -68,6 +69,7 @@ import refinedstorage.tile.data.RSSerializers;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
import refinedstorage.tile.externalstorage.FluidStorageExternal;
|
||||
import refinedstorage.tile.externalstorage.ItemStorageExternal;
|
||||
import refinedstorage.tile.externalstorage.ItemStorageItemHandler;
|
||||
import refinedstorage.tile.grid.IGrid;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
@@ -518,11 +520,16 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
}
|
||||
|
||||
int orginalSize = size;
|
||||
|
||||
int accessType = IAccessType.READ_WRITE;
|
||||
ItemStack remainder = stack;
|
||||
|
||||
for (IItemStorage storage : this.itemStorage.getStorages()) {
|
||||
remainder = storage.insertItem(remainder, size, simulate);
|
||||
accessType = storage.getAccessType();
|
||||
|
||||
if (accessType != IAccessType.READ) {
|
||||
remainder = storage.insertItem(remainder, size, simulate);
|
||||
}
|
||||
|
||||
|
||||
if (storage instanceof ItemStorageExternal && !simulate) {
|
||||
((ItemStorageExternal) storage).updateCacheForcefully();
|
||||
@@ -547,7 +554,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
inserted = orginalSize - remainder.stackSize;
|
||||
}
|
||||
|
||||
if (!simulate && inserted > 0) {
|
||||
if (!simulate && inserted > 0 && accessType != IAccessType.WRITE) {
|
||||
itemStorage.add(ItemHandlerHelper.copyStackWithSize(stack, inserted), false);
|
||||
|
||||
for (int i = 0; i < inserted; ++i) {
|
||||
@@ -576,11 +583,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
public ItemStack extractItem(ItemStack stack, int size, int flags) {
|
||||
int requested = size;
|
||||
int received = 0;
|
||||
|
||||
ItemStack newStack = null;
|
||||
|
||||
for (IItemStorage storage : this.itemStorage.getStorages()) {
|
||||
ItemStack took = storage.extractItem(stack, requested - received, flags);
|
||||
ItemStack took = null;
|
||||
|
||||
if (storage.getAccessType() != IAccessType.READ) {
|
||||
took = storage.extractItem(stack, requested - received, flags);
|
||||
}
|
||||
|
||||
if (took != null) {
|
||||
if (storage instanceof ItemStorageExternal) {
|
||||
@@ -616,11 +626,15 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
}
|
||||
|
||||
int orginalSize = size;
|
||||
|
||||
int accessType = IAccessType.READ_WRITE;
|
||||
FluidStack remainder = stack;
|
||||
|
||||
for (IFluidStorage storage : this.fluidStorage.getStorages()) {
|
||||
remainder = storage.insertFluid(remainder, size, simulate);
|
||||
accessType = storage.getAccessType();
|
||||
|
||||
if (accessType != IAccessType.READ) {
|
||||
remainder = storage.insertFluid(remainder, size, simulate);
|
||||
}
|
||||
|
||||
if (storage instanceof FluidStorageExternal && !simulate) {
|
||||
((FluidStorageExternal) storage).updateCacheForcefully();
|
||||
@@ -645,7 +659,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
inserted = orginalSize - remainder.amount;
|
||||
}
|
||||
|
||||
if (!simulate && inserted > 0) {
|
||||
if (!simulate && inserted > 0 && accessType != IAccessType.WRITE) {
|
||||
fluidStorage.add(RSUtils.copyStackWithSize(stack, inserted), false);
|
||||
}
|
||||
|
||||
@@ -657,11 +671,13 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
public FluidStack extractFluid(@Nonnull FluidStack stack, int size, int flags) {
|
||||
int requested = size;
|
||||
int received = 0;
|
||||
|
||||
FluidStack newStack = null;
|
||||
|
||||
for (IFluidStorage storage : this.fluidStorage.getStorages()) {
|
||||
FluidStack took = storage.extractFluid(stack, requested - received, flags);
|
||||
FluidStack took = null;
|
||||
if (storage.getAccessType() != IAccessType.READ) {
|
||||
took = storage.extractFluid(stack, requested - received, flags);
|
||||
}
|
||||
|
||||
if (took != null) {
|
||||
if (storage instanceof FluidStorageExternal) {
|
||||
|
||||
@@ -31,12 +31,13 @@ import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFluidStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable, IType, IExcessVoidable {
|
||||
public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFluidStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable, IType, IExcessVoidable, IAccessType {
|
||||
public static final TileDataParameter<Integer> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
|
||||
public static final TileDataParameter<Integer> TYPE = IType.createParameter();
|
||||
public static final TileDataParameter<Boolean> VOID_EXCESS = IExcessVoidable.createParameter();
|
||||
public static final TileDataParameter<Integer> ACCESS_TYPE = IAccessType.createParameter();
|
||||
|
||||
public class ItemStorage extends ItemStorageNBT {
|
||||
public ItemStorage(ItemStack disk) {
|
||||
@@ -63,6 +64,11 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return accessType;
|
||||
}
|
||||
}
|
||||
|
||||
public class FluidStorage extends FluidStorageNBT {
|
||||
@@ -90,6 +96,11 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return accessType;
|
||||
}
|
||||
}
|
||||
|
||||
private static final String NBT_PRIORITY = "Priority";
|
||||
@@ -97,6 +108,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
private static final String NBT_MODE = "Mode";
|
||||
private static final String NBT_TYPE = "Type";
|
||||
private static final String NBT_VOID_EXCESS = "VoidExcess";
|
||||
private static final String NBT_ACCESS_TYPE = "AccessType";
|
||||
|
||||
private ItemHandlerBasic disks = new ItemHandlerBasic(8, this, IItemValidator.STORAGE_DISK) {
|
||||
@Override
|
||||
@@ -137,6 +149,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
private ItemStorage itemStorages[] = new ItemStorage[8];
|
||||
private FluidStorage fluidStorages[] = new FluidStorage[8];
|
||||
|
||||
private int accessType = IAccessType.READ_WRITE;
|
||||
private int priority = 0;
|
||||
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
@@ -149,6 +162,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
dataManager.addWatchedParameter(MODE);
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
dataManager.addWatchedParameter(VOID_EXCESS);
|
||||
dataManager.addWatchedParameter(ACCESS_TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -235,6 +249,10 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
if (tag.hasKey(NBT_VOID_EXCESS)) {
|
||||
voidExcess = tag.getBoolean(NBT_VOID_EXCESS);
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_ACCESS_TYPE)) {
|
||||
accessType = tag.getInteger(NBT_ACCESS_TYPE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -260,6 +278,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
tag.setInteger(NBT_MODE, mode);
|
||||
tag.setInteger(NBT_TYPE, type);
|
||||
tag.setBoolean(NBT_VOID_EXCESS, voidExcess);
|
||||
tag.setInteger(NBT_ACCESS_TYPE, accessType);
|
||||
|
||||
return tag;
|
||||
}
|
||||
@@ -323,11 +342,31 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
return VOID_EXCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getAccessTypeParameter() {
|
||||
return ACCESS_TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVoidExcessType() {
|
||||
return "items_fluids";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return accessType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAccessType(int value) {
|
||||
accessType = value;
|
||||
|
||||
network.getFluidStorage().rebuild();
|
||||
network.getItemStorage().rebuild();
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return priority;
|
||||
|
||||
@@ -23,6 +23,7 @@ import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import refinedstorage.item.ItemUpgrade;
|
||||
import refinedstorage.tile.config.IAccessType;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.config.IType;
|
||||
@@ -127,6 +128,11 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
|
||||
|
||||
return super.extractItem(stack, size, flags);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return IAccessType.READ_WRITE;
|
||||
}
|
||||
}
|
||||
|
||||
public class FluidStorage extends FluidStorageNBT {
|
||||
@@ -156,6 +162,11 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
|
||||
|
||||
return super.extractFluid(stack, size, flags);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return IAccessType.READ_WRITE;
|
||||
}
|
||||
}
|
||||
|
||||
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, this);
|
||||
|
||||
@@ -14,20 +14,18 @@ import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
||||
import refinedstorage.block.BlockFluidStorage;
|
||||
import refinedstorage.block.EnumFluidStorageType;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IExcessVoidable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.config.IPrioritizable;
|
||||
import refinedstorage.tile.config.*;
|
||||
import refinedstorage.tile.data.ITileDataProducer;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TileFluidStorage extends TileNode implements IFluidStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable, IExcessVoidable {
|
||||
public class TileFluidStorage extends TileNode implements IFluidStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable, IExcessVoidable, IAccessType{
|
||||
public static final TileDataParameter<Integer> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Boolean> VOID_EXCESS = IExcessVoidable.createParameter();
|
||||
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
|
||||
public static final TileDataParameter<Integer> ACCESS_TYPE = IAccessType.createParameter();
|
||||
public static final TileDataParameter<Integer> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileFluidStorage>() {
|
||||
@Override
|
||||
public Integer getValue(TileFluidStorage tile) {
|
||||
@@ -59,6 +57,11 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return accessType;
|
||||
}
|
||||
}
|
||||
|
||||
public static final String NBT_STORAGE = "Storage";
|
||||
@@ -67,6 +70,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_MODE = "Mode";
|
||||
private static final String NBT_VOID_EXCESS = "VoidExcess";
|
||||
private static final String NBT_ACCESS_TYPE = "AccessType";
|
||||
|
||||
private ItemHandlerFluid filters = new ItemHandlerFluid(9, this);
|
||||
|
||||
@@ -76,6 +80,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
|
||||
|
||||
private EnumFluidStorageType type;
|
||||
|
||||
private int accessType = IAccessType.READ_WRITE;
|
||||
private int priority = 0;
|
||||
private int compare = IComparer.COMPARE_NBT;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
@@ -87,6 +92,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
|
||||
dataManager.addWatchedParameter(MODE);
|
||||
dataManager.addWatchedParameter(STORED);
|
||||
dataManager.addWatchedParameter(VOID_EXCESS);
|
||||
dataManager.addWatchedParameter(ACCESS_TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -156,6 +162,10 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
|
||||
if (tag.hasKey(NBT_VOID_EXCESS)) {
|
||||
voidExcess = tag.getBoolean(NBT_VOID_EXCESS);
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_ACCESS_TYPE)) {
|
||||
accessType = tag.getInteger(NBT_ACCESS_TYPE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -174,6 +184,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
|
||||
tag.setInteger(NBT_COMPARE, compare);
|
||||
tag.setInteger(NBT_MODE, mode);
|
||||
tag.setBoolean(NBT_VOID_EXCESS, voidExcess);
|
||||
tag.setInteger(NBT_ACCESS_TYPE, accessType);
|
||||
|
||||
return tag;
|
||||
}
|
||||
@@ -245,6 +256,11 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
|
||||
return VOID_EXCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getAccessTypeParameter() {
|
||||
return ACCESS_TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVoidExcessType() {
|
||||
return "fluids";
|
||||
@@ -266,6 +282,20 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
|
||||
return filters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return accessType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAccessType(int value) {
|
||||
accessType = value;
|
||||
|
||||
network.getFluidStorage().rebuild();
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return priority;
|
||||
|
||||
@@ -15,19 +15,17 @@ import refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
||||
import refinedstorage.block.BlockStorage;
|
||||
import refinedstorage.block.EnumItemStorageType;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IExcessVoidable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.config.IPrioritizable;
|
||||
import refinedstorage.tile.config.*;
|
||||
import refinedstorage.tile.data.ITileDataProducer;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TileStorage extends TileNode implements IItemStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable, IExcessVoidable {
|
||||
public class TileStorage extends TileNode implements IItemStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable, IExcessVoidable, IAccessType {
|
||||
public static final TileDataParameter<Integer> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
|
||||
public static final TileDataParameter<Integer> ACCESS_TYPE = IAccessType.createParameter();
|
||||
public static final TileDataParameter<Integer> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileStorage>() {
|
||||
@Override
|
||||
public Integer getValue(TileStorage tile) {
|
||||
@@ -61,6 +59,11 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return accessType;
|
||||
}
|
||||
}
|
||||
|
||||
public static final String NBT_STORAGE = "Storage";
|
||||
@@ -78,6 +81,7 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor
|
||||
|
||||
private EnumItemStorageType type;
|
||||
|
||||
private int accessType = IAccessType.READ_WRITE;
|
||||
private int priority = 0;
|
||||
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
@@ -89,6 +93,7 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor
|
||||
dataManager.addWatchedParameter(MODE);
|
||||
dataManager.addWatchedParameter(STORED);
|
||||
dataManager.addWatchedParameter(VOID_EXCESS);
|
||||
dataManager.addWatchedParameter(ACCESS_TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -259,6 +264,11 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor
|
||||
return VOID_EXCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getAccessTypeParameter() {
|
||||
return ACCESS_TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVoidExcessType() {
|
||||
return "items";
|
||||
@@ -280,6 +290,20 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor
|
||||
return filters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return accessType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAccessType(int value) {
|
||||
accessType = value;
|
||||
|
||||
network.getItemStorage().rebuild();
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return priority;
|
||||
|
||||
34
src/main/java/refinedstorage/tile/config/IAccessType.java
Normal file
34
src/main/java/refinedstorage/tile/config/IAccessType.java
Normal file
@@ -0,0 +1,34 @@
|
||||
package refinedstorage.tile.config;
|
||||
|
||||
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import refinedstorage.tile.data.ITileDataConsumer;
|
||||
import refinedstorage.tile.data.ITileDataProducer;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public interface IAccessType {
|
||||
int READ = 0;
|
||||
int WRITE = 1;
|
||||
int READ_WRITE = 2;
|
||||
|
||||
static <T extends TileEntity>TileDataParameter<Integer> createParameter() {
|
||||
return new TileDataParameter<Integer>(DataSerializers.VARINT, READ_WRITE, new ITileDataProducer<Integer, T>() {
|
||||
@Override
|
||||
public Integer getValue(T tile) {
|
||||
return ((IAccessType) tile).getAccessType();
|
||||
}
|
||||
}, new ITileDataConsumer<Integer, T>() {
|
||||
@Override
|
||||
public void setValue(T tile, Integer value) {
|
||||
if (value == READ || value == WRITE || value == READ_WRITE) {
|
||||
((IAccessType) tile).setAccessType(value);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
int getAccessType();
|
||||
|
||||
void setAccessType(int accessType);
|
||||
}
|
||||
@@ -80,6 +80,10 @@ public class FluidStorageExternal implements IFluidStorage {
|
||||
return externalStorage.getPriority();
|
||||
}
|
||||
|
||||
public int getAccessType() {
|
||||
return externalStorage.getAccessType();
|
||||
}
|
||||
|
||||
public boolean updateCache() {
|
||||
FluidStack stack = getContents();
|
||||
|
||||
|
||||
@@ -110,4 +110,9 @@ public class ItemStorageDSU extends ItemStorageExternal {
|
||||
public int getPriority() {
|
||||
return externalStorage.getPriority();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return externalStorage.getAccessType();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,4 +112,9 @@ public class ItemStorageDrawer extends ItemStorageExternal {
|
||||
public int getPriority() {
|
||||
return externalStorage.getPriority();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return externalStorage.getAccessType();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,4 +93,9 @@ public class ItemStorageItemHandler extends ItemStorageExternal {
|
||||
public int getPriority() {
|
||||
return externalStorage.getPriority();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return externalStorage.getAccessType();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,21 +22,19 @@ import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.tile.IStorageGui;
|
||||
import refinedstorage.tile.TileMultipartNode;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.config.IPrioritizable;
|
||||
import refinedstorage.tile.config.IType;
|
||||
import refinedstorage.tile.config.*;
|
||||
import refinedstorage.tile.data.ITileDataProducer;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TileExternalStorage extends TileMultipartNode implements IItemStorageProvider, IFluidStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable, IType {
|
||||
public class TileExternalStorage extends TileMultipartNode implements IItemStorageProvider, IFluidStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable, IType, IAccessType {
|
||||
public static final TileDataParameter<Integer> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
|
||||
public static final TileDataParameter<Integer> TYPE = IType.createParameter();
|
||||
public static final TileDataParameter<Integer> ACCESS_TYPE = IAccessType.createParameter();
|
||||
|
||||
public static final TileDataParameter<Integer> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileExternalStorage>() {
|
||||
@Override
|
||||
@@ -76,6 +74,7 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
|
||||
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_ACCESS_TYPE = "AccessType";
|
||||
|
||||
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, this);
|
||||
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, this);
|
||||
@@ -84,6 +83,7 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
|
||||
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
private int type = IType.ITEMS;
|
||||
private int accessType = IAccessType.READ_WRITE;
|
||||
|
||||
private List<ItemStorageExternal> itemStorages = new ArrayList<>();
|
||||
private List<FluidStorageExternal> fluidStorages = new ArrayList<>();
|
||||
@@ -97,6 +97,7 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
|
||||
dataManager.addWatchedParameter(STORED);
|
||||
dataManager.addWatchedParameter(CAPACITY);
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
dataManager.addWatchedParameter(ACCESS_TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -180,6 +181,10 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
|
||||
if (tag.hasKey(NBT_TYPE)) {
|
||||
type = tag.getInteger(NBT_TYPE);
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_ACCESS_TYPE)){
|
||||
accessType = tag.getInteger(NBT_ACCESS_TYPE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -193,6 +198,7 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
|
||||
tag.setInteger(NBT_COMPARE, compare);
|
||||
tag.setInteger(NBT_MODE, mode);
|
||||
tag.setInteger(NBT_TYPE, type);
|
||||
tag.setInteger(NBT_ACCESS_TYPE, accessType);
|
||||
|
||||
return tag;
|
||||
}
|
||||
@@ -311,6 +317,11 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getAccessTypeParameter() {
|
||||
return ACCESS_TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVoidExcessType() {
|
||||
return null;
|
||||
@@ -326,6 +337,22 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
|
||||
return CAPACITY.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccessType() {
|
||||
return accessType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAccessType(int type) {
|
||||
accessType = type;
|
||||
|
||||
// Refresh item/fluid cache
|
||||
network.getItemStorage().rebuild();
|
||||
network.getFluidStorage().rebuild();
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getTypeParameter() {
|
||||
return TYPE;
|
||||
|
||||
@@ -123,6 +123,10 @@ sidebutton.refinedstorage:void_excess.items_fluids=Void excess items and fluids
|
||||
|
||||
sidebutton.refinedstorage:constructor.drop=Drop blocks instead of placing
|
||||
|
||||
sidebutton.refinedstorage:access_type.read=Read
|
||||
sidebutton.refinedstorage:access_type.write=Write
|
||||
sidebutton.refinedstorage:access_type.read_write=Read & Write
|
||||
|
||||
block.refinedstorage:controller.0.name=Controller
|
||||
block.refinedstorage:controller.1.name=Creative Controller
|
||||
block.refinedstorage:cable.name=Cable
|
||||
|
||||
Reference in New Issue
Block a user