From 2cfc31b6637a9f8a9f73d4902369ab4cf08ee774 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Tue, 22 Mar 2016 17:46:30 +0100 Subject: [PATCH] Give drive better interface. --- .../container/ContainerDrive.java | 60 +- .../java/refinedstorage/gui/GuiDrive.java | 79 --- .../java/refinedstorage/gui/GuiHandler.java | 2 +- .../java/refinedstorage/gui/GuiStorage.java | 17 +- .../refinedstorage/storage/CellStorage.java | 21 +- .../refinedstorage/storage/IStorageGui.java | 2 +- .../java/refinedstorage/tile/TileDrive.java | 551 +++++++++++------- .../tile/TileExternalStorage.java | 9 +- .../java/refinedstorage/tile/TileStorage.java | 53 +- .../tile/settings/ModeSettingUtils.java | 49 ++ .../refinedstorage/textures/gui/drive.png | Bin 1898 -> 2286 bytes .../refinedstorage/textures/gui/storage.png | Bin 2258 -> 2257 bytes 12 files changed, 435 insertions(+), 408 deletions(-) delete mode 100644 src/main/java/refinedstorage/gui/GuiDrive.java create mode 100644 src/main/java/refinedstorage/tile/settings/ModeSettingUtils.java diff --git a/src/main/java/refinedstorage/container/ContainerDrive.java b/src/main/java/refinedstorage/container/ContainerDrive.java index 31a08d0fb..f62e8dbcf 100644 --- a/src/main/java/refinedstorage/container/ContainerDrive.java +++ b/src/main/java/refinedstorage/container/ContainerDrive.java @@ -1,73 +1,25 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; import refinedstorage.RefinedStorageItems; import refinedstorage.container.slot.BasicItemValidator; import refinedstorage.container.slot.SlotFiltered; import refinedstorage.tile.TileDrive; -public class ContainerDrive extends ContainerBase +public class ContainerDrive extends ContainerStorage { public ContainerDrive(EntityPlayer player, TileDrive drive) { - super(player); + super(player, drive.getInventory()); - int x = 8; - int y = 20; - - for (int i = 0; i < 8; ++i) + for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotFiltered(drive, i, x, y, new BasicItemValidator(RefinedStorageItems.STORAGE_CELL))); - - if ((i + 1) % 2 == 0) - { - x = 8; - y += 18; - } - else - { - x += 18; - } + addSlotToContainer(new SlotFiltered(drive, i, 98 + (i * 18), 78, new BasicItemValidator(RefinedStorageItems.STORAGE_CELL))); } - addPlayerInventory(8, 108); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer player, int index) - { - ItemStack stack = null; - - Slot slot = getSlot(index); - - if (slot != null && slot.getHasStack()) + for (int i = 0; i < 4; ++i) { - stack = slot.getStack().copy(); - - if (index < 8) - { - if (!mergeItemStack(stack, 8, inventorySlots.size(), true)) - { - return null; - } - } - else if (!mergeItemStack(stack, 0, 8, false)) - { - return null; - } - - if (stack.stackSize == 0) - { - slot.putStack(null); - } - else - { - slot.onSlotChanged(); - } + addSlotToContainer(new SlotFiltered(drive, 4 + i, 98 + (i * 18), 96, new BasicItemValidator(RefinedStorageItems.STORAGE_CELL))); } - - return stack; } } diff --git a/src/main/java/refinedstorage/gui/GuiDrive.java b/src/main/java/refinedstorage/gui/GuiDrive.java deleted file mode 100644 index 86690ea46..000000000 --- a/src/main/java/refinedstorage/gui/GuiDrive.java +++ /dev/null @@ -1,79 +0,0 @@ -package refinedstorage.gui; - -import com.google.common.primitives.Ints; -import java.io.IOException; -import net.minecraft.client.gui.GuiTextField; -import refinedstorage.RefinedStorage; -import refinedstorage.container.ContainerDrive; -import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; -import refinedstorage.network.MessagePriorityUpdate; -import refinedstorage.tile.TileDrive; - -public class GuiDrive extends GuiBase -{ - private TileDrive drive; - - private GuiTextField priorityField; - - public GuiDrive(ContainerDrive container, TileDrive drive) - { - super(container, 176, 190); - - this.drive = drive; - } - - @Override - public void init(int x, int y) - { - addSideButton(new SideButtonRedstoneMode(drive)); - - priorityField = new GuiTextField(0, fontRendererObj, x + 52 + 1, y + 32 + 1, 25, fontRendererObj.FONT_HEIGHT); - priorityField.setText(String.valueOf(drive.getPriority())); - priorityField.setEnableBackgroundDrawing(false); - priorityField.setVisible(true); - priorityField.setTextColor(16777215); - priorityField.setCanLoseFocus(false); - priorityField.setFocused(true); - } - - @Override - public void update(int x, int y) - { - } - - @Override - public void drawBackground(int x, int y, int mouseX, int mouseY) - { - bindTexture("gui/drive.png"); - - drawTexture(x, y, 0, 0, width, height); - - priorityField.drawTextBox(); - } - - @Override - public void drawForeground(int mouseX, int mouseY) - { - drawString(7, 7, t("gui.refinedstorage:drive")); - drawString(51, 20, t("misc.refinedstorage:priority")); - drawString(7, 96, t("container.inventory")); - } - - @Override - protected void keyTyped(char character, int keyCode) throws IOException - { - if (!checkHotbarKeys(keyCode) && priorityField.textboxKeyTyped(character, keyCode)) - { - Integer result = Ints.tryParse(priorityField.getText()); - - if (result != null) - { - RefinedStorage.NETWORK.sendToServer(new MessagePriorityUpdate(drive.getPos(), result)); - } - } - else - { - super.keyTyped(character, keyCode); - } - } -} diff --git a/src/main/java/refinedstorage/gui/GuiHandler.java b/src/main/java/refinedstorage/gui/GuiHandler.java index 46a9f92b3..11b33452a 100644 --- a/src/main/java/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/refinedstorage/gui/GuiHandler.java @@ -66,7 +66,7 @@ public class GuiHandler implements IGuiHandler case RefinedStorageGui.GRID: return new GuiGrid((ContainerGrid) getContainer(ID, player, tile), (TileGrid) tile); case RefinedStorageGui.DRIVE: - return new GuiDrive((ContainerDrive) getContainer(ID, player, tile), (TileDrive) tile); + return new GuiStorage((ContainerStorage) getContainer(ID, player, tile), (IStorageGui) tile, "gui/drive.png"); case RefinedStorageGui.IMPORTER: return new GuiImporter((ContainerImporter) getContainer(ID, player, tile), (TileImporter) tile); case RefinedStorageGui.EXPORTER: diff --git a/src/main/java/refinedstorage/gui/GuiStorage.java b/src/main/java/refinedstorage/gui/GuiStorage.java index 1b57c7131..b4b7016a3 100644 --- a/src/main/java/refinedstorage/gui/GuiStorage.java +++ b/src/main/java/refinedstorage/gui/GuiStorage.java @@ -13,6 +13,7 @@ import refinedstorage.util.InventoryUtils; public class GuiStorage extends GuiBase { private IStorageGui gui; + private String texture; private GuiTextField priorityField; @@ -21,11 +22,17 @@ public class GuiStorage extends GuiBase private int barWidth = 16; private int barHeight = 58; - public GuiStorage(ContainerStorage container, IStorageGui gui) + public GuiStorage(ContainerStorage container, IStorageGui gui, String texture) { super(container, 176, 211); this.gui = gui; + this.texture = texture; + } + + public GuiStorage(ContainerStorage container, IStorageGui gui) + { + this(container, gui, "gui/storage.png"); } @Override @@ -47,8 +54,8 @@ public class GuiStorage extends GuiBase addSideButton(new SideButtonCompare(gui.getCompareSetting(), InventoryUtils.COMPARE_NBT)); } - priorityField = new GuiTextField(0, fontRendererObj, x + 116 + 1, y + 54 + 1, 25, fontRendererObj.FONT_HEIGHT); - priorityField.setText(String.valueOf(gui.getStorage().getPriority())); + priorityField = new GuiTextField(0, fontRendererObj, x + 98 + 1, y + 54 + 1, 25, fontRendererObj.FONT_HEIGHT); + priorityField.setText(String.valueOf(gui.getPriority())); priorityField.setEnableBackgroundDrawing(false); priorityField.setVisible(true); priorityField.setTextColor(16777215); @@ -64,7 +71,7 @@ public class GuiStorage extends GuiBase @Override public void drawBackground(int x, int y, int mouseX, int mouseY) { - bindTexture("gui/storage.png"); + bindTexture(texture); drawTexture(x, y, 0, 0, width, height); @@ -80,7 +87,7 @@ public class GuiStorage extends GuiBase { drawString(7, 7, t(gui.getName())); drawString(7, 42, t("misc.refinedstorage:storage")); - drawString(115, 42, t("misc.refinedstorage:priority")); + drawString(97, 42, t("misc.refinedstorage:priority")); drawString(7, 117, t("container.inventory")); drawString(30, 54, t("misc.refinedstorage:storage.stored", gui.getStored())); diff --git a/src/main/java/refinedstorage/storage/CellStorage.java b/src/main/java/refinedstorage/storage/CellStorage.java index dfbc31b5a..97ccb939e 100644 --- a/src/main/java/refinedstorage/storage/CellStorage.java +++ b/src/main/java/refinedstorage/storage/CellStorage.java @@ -2,12 +2,29 @@ package refinedstorage.storage; import net.minecraft.item.ItemStack; import refinedstorage.item.ItemStorageCell; +import refinedstorage.tile.TileDrive; +import refinedstorage.tile.settings.ModeSettingUtils; public class CellStorage extends NBTStorage { - public CellStorage(ItemStack cell, int priority) + private TileDrive drive; + + public CellStorage(ItemStack cell, TileDrive drive) { - super(cell.getTagCompound(), getCapacity(cell), priority); + super(cell.getTagCompound(), getCapacity(cell), drive.getPriority()); + + this.drive = drive; + } + + @Override + public boolean canPush(ItemStack stack) + { + if (ModeSettingUtils.doesNotViolateMode(drive.getInventory(), drive.getWhitelistBlacklistSetting(), drive.getCompare(), stack)) + { + return super.canPush(stack); + } + + return false; } public static int getCapacity(ItemStack cell) diff --git a/src/main/java/refinedstorage/storage/IStorageGui.java b/src/main/java/refinedstorage/storage/IStorageGui.java index 3b015ab9b..efe8590a1 100644 --- a/src/main/java/refinedstorage/storage/IStorageGui.java +++ b/src/main/java/refinedstorage/storage/IStorageGui.java @@ -14,7 +14,7 @@ public interface IStorageGui public String getName(); - public IStorage getStorage(); + public int getPriority(); public IInventory getInventory(); diff --git a/src/main/java/refinedstorage/tile/TileDrive.java b/src/main/java/refinedstorage/tile/TileDrive.java index e56826c10..897e92a5e 100644 --- a/src/main/java/refinedstorage/tile/TileDrive.java +++ b/src/main/java/refinedstorage/tile/TileDrive.java @@ -1,215 +1,336 @@ -package refinedstorage.tile; - -import io.netty.buffer.ByteBuf; -import java.util.List; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.text.ITextComponent; -import refinedstorage.inventory.InventorySimple; -import refinedstorage.storage.CellStorage; -import refinedstorage.storage.IStorage; -import refinedstorage.storage.IStorageProvider; -import refinedstorage.util.InventoryUtils; - -public class TileDrive extends TileMachine implements IInventory, IStorageProvider -{ - public static final String NBT_PRIORITY = "Priority"; - - private InventorySimple inventory = new InventorySimple("drive", 8); - - private int priority = 0; - - @Override - public int getEnergyUsage() - { - int base = 5; - - for (int i = 0; i < getSizeInventory(); ++i) - { - if (getStackInSlot(i) != null) - { - base += 2; - } - } - - return base; - } - - @Override - public void updateMachine() - { - } - - public int getPriority() - { - return priority; - } - - public void setPriority(int priority) - { - markDirty(); - - this.priority = priority; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - - InventoryUtils.restoreInventory(this, 0, nbt); - - if (nbt.hasKey(NBT_PRIORITY)) - { - priority = nbt.getInteger(NBT_PRIORITY); - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - - InventoryUtils.saveInventory(this, 0, nbt); - - nbt.setInteger(NBT_PRIORITY, priority); - } - - @Override - public void toBytes(ByteBuf buf) - { - super.toBytes(buf); - - buf.writeInt(priority); - } - - @Override - public void fromBytes(ByteBuf buf) - { - super.fromBytes(buf); - - priority = buf.readInt(); - } - - @Override - public void addStorages(List storages) - { - for (int i = 0; i < getSizeInventory(); ++i) - { - if (getStackInSlot(i) != null) - { - storages.add(new CellStorage(getStackInSlot(i), priority)); - } - } - } - - @Override - public int getSizeInventory() - { - return inventory.getSizeInventory(); - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inventory.getStackInSlot(slot); - } - - @Override - public ItemStack decrStackSize(int slot, int count) - { - return inventory.decrStackSize(slot, count); - } - - @Override - public ItemStack removeStackFromSlot(int slot) - { - return inventory.removeStackFromSlot(slot); - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) - { - inventory.setInventorySlotContents(slot, stack); - } - - @Override - public int getInventoryStackLimit() - { - return inventory.getInventoryStackLimit(); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) - { - return inventory.isUseableByPlayer(player); - } - - @Override - public void openInventory(EntityPlayer player) - { - inventory.openInventory(player); - } - - @Override - public void closeInventory(EntityPlayer player) - { - inventory.closeInventory(player); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) - { - return inventory.isItemValidForSlot(slot, stack); - } - - @Override - public int getField(int id) - { - return inventory.getField(id); - } - - @Override - public void setField(int id, int value) - { - inventory.setField(id, value); - } - - @Override - public int getFieldCount() - { - return inventory.getFieldCount(); - } - - @Override - public void clear() - { - inventory.clear(); - } - - @Override - public String getName() - { - return inventory.getName(); - } - - @Override - public boolean hasCustomName() - { - return inventory.hasCustomName(); - } - - @Override - public ITextComponent getDisplayName() - { - return inventory.getDisplayName(); - } - - @Override - public IInventory getDroppedInventory() - { - return inventory; - } -} +package refinedstorage.tile; + +import io.netty.buffer.ByteBuf; +import java.util.List; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.text.ITextComponent; +import refinedstorage.RefinedStorage; +import refinedstorage.inventory.InventorySimple; +import refinedstorage.network.MessagePriorityUpdate; +import refinedstorage.storage.CellStorage; +import refinedstorage.storage.IStorage; +import refinedstorage.storage.IStorageGui; +import refinedstorage.storage.IStorageProvider; +import refinedstorage.tile.settings.ICompareSetting; +import refinedstorage.tile.settings.IModeSetting; +import refinedstorage.tile.settings.IRedstoneModeSetting; +import refinedstorage.util.InventoryUtils; + +public class TileDrive extends TileMachine implements IStorageProvider, IStorageGui, ICompareSetting, IModeSetting, IInventory +{ + public static final String NBT_PRIORITY = "Priority"; + public static final String NBT_COMPARE = "Compare"; + public static final String NBT_MODE = "Mode"; + + private InventorySimple filterInventory = new InventorySimple("filters", 9, this); + private InventorySimple inventory = new InventorySimple("drive", 8, this); + + private int priority = 0; + private int compare = 0; + private int mode = 0; + + @Override + public int getEnergyUsage() + { + int base = 5; + + for (int i = 0; i < getSizeInventory(); ++i) + { + if (getStackInSlot(i) != null) + { + base += 2; + } + } + + return base; + } + + @Override + public void updateMachine() + { + } + + @Override + public void addStorages(List storages) + { + for (int i = 0; i < getSizeInventory(); ++i) + { + if (getStackInSlot(i) != null) + { + storages.add(new CellStorage(getStackInSlot(i), this)); + } + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + + InventoryUtils.restoreInventory(filterInventory, 0, nbt); + InventoryUtils.restoreInventory(inventory, 1, nbt); + + if (nbt.hasKey(NBT_PRIORITY)) + { + priority = nbt.getInteger(NBT_PRIORITY); + } + + if (nbt.hasKey(NBT_COMPARE)) + { + compare = nbt.getInteger(NBT_COMPARE); + } + + if (nbt.hasKey(NBT_MODE)) + { + mode = nbt.getInteger(NBT_MODE); + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + + InventoryUtils.saveInventory(filterInventory, 0, nbt); + InventoryUtils.saveInventory(inventory, 1, nbt); + + nbt.setInteger(NBT_PRIORITY, priority); + nbt.setInteger(NBT_COMPARE, compare); + nbt.setInteger(NBT_MODE, mode); + } + + @Override + public void toBytes(ByteBuf buf) + { + super.toBytes(buf); + + buf.writeInt(priority); + buf.writeInt(compare); + buf.writeInt(mode); + } + + @Override + public void fromBytes(ByteBuf buf) + { + super.fromBytes(buf); + + priority = buf.readInt(); + compare = buf.readInt(); + mode = buf.readInt(); + } + + @Override + public int getCompare() + { + return compare; + } + + @Override + public void setCompare(int compare) + { + markDirty(); + + this.compare = compare; + } + + @Override + public boolean isWhitelist() + { + return mode == 0; + } + + @Override + public boolean isBlacklist() + { + return mode == 1; + } + + @Override + public void setToWhitelist() + { + markDirty(); + + this.mode = 0; + } + + @Override + public void setToBlacklist() + { + markDirty(); + + this.mode = 1; + } + + @Override + public String getName() + { + return "block.refinedstorage:drive.name"; + } + + @Override + public IInventory getInventory() + { + return filterInventory; + } + + @Override + public IRedstoneModeSetting getRedstoneModeSetting() + { + return this; + } + + @Override + public ICompareSetting getCompareSetting() + { + return this; + } + + @Override + public IModeSetting getWhitelistBlacklistSetting() + { + return this; + } + + @Override + public IPriorityHandler getPriorityHandler() + { + return new IPriorityHandler() + { + @Override + public void onPriorityChanged(int priority) + { + RefinedStorage.NETWORK.sendToServer(new MessagePriorityUpdate(pos, priority)); + } + }; + } + + @Override + public int getPriority() + { + return priority; + } + + public void setPriority(int priority) + { + markDirty(); + + this.priority = priority; + } + + @Override + public int getStored() + { + return 0; + } + + @Override + public int getCapacity() + { + return 0; + } + + @Override + public int getSizeInventory() + { + return inventory.getSizeInventory(); + } + + @Override + public ItemStack getStackInSlot(int slot) + { + return inventory.getStackInSlot(slot); + } + + @Override + public ItemStack decrStackSize(int slot, int count) + { + return inventory.decrStackSize(slot, count); + } + + @Override + public ItemStack removeStackFromSlot(int slot) + { + return inventory.removeStackFromSlot(slot); + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) + { + inventory.setInventorySlotContents(slot, stack); + } + + @Override + public int getInventoryStackLimit() + { + return inventory.getInventoryStackLimit(); + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) + { + return inventory.isUseableByPlayer(player); + } + + @Override + public void openInventory(EntityPlayer player) + { + inventory.openInventory(player); + } + + @Override + public void closeInventory(EntityPlayer player) + { + inventory.closeInventory(player); + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) + { + return inventory.isItemValidForSlot(slot, stack); + } + + @Override + public int getField(int id) + { + return inventory.getField(id); + } + + @Override + public void setField(int id, int value) + { + inventory.setField(id, value); + } + + @Override + public int getFieldCount() + { + return inventory.getFieldCount(); + } + + @Override + public void clear() + { + inventory.clear(); + } + + @Override + public boolean hasCustomName() + { + return inventory.hasCustomName(); + } + + @Override + public ITextComponent getDisplayName() + { + return inventory.getDisplayName(); + } + + @Override + public IInventory getDroppedInventory() + { + return inventory; + } +} diff --git a/src/main/java/refinedstorage/tile/TileExternalStorage.java b/src/main/java/refinedstorage/tile/TileExternalStorage.java index 82f7f5625..7f167fe87 100644 --- a/src/main/java/refinedstorage/tile/TileExternalStorage.java +++ b/src/main/java/refinedstorage/tile/TileExternalStorage.java @@ -18,6 +18,7 @@ import refinedstorage.storage.StorageItem; import refinedstorage.tile.settings.ICompareSetting; import refinedstorage.tile.settings.IModeSetting; import refinedstorage.tile.settings.IRedstoneModeSetting; +import refinedstorage.tile.settings.ModeSettingUtils; import refinedstorage.util.InventoryUtils; public class TileExternalStorage extends TileMachine implements IStorageProvider, IStorage, IStorageGui, ICompareSetting, IModeSetting @@ -127,7 +128,7 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider return false; } - return TileStorage.checkWhitelistBlacklist(inventory, this, compare, stack) && InventoryUtils.canPushToInventory(connectedInventory, stack); + return ModeSettingUtils.doesNotViolateMode(inventory, this, compare, stack) && InventoryUtils.canPushToInventory(connectedInventory, stack); } public IInventory getConnectedInventory() @@ -266,12 +267,6 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider return "gui.refinedstorage:external_storage"; } - @Override - public IStorage getStorage() - { - return this; - } - @Override public IRedstoneModeSetting getRedstoneModeSetting() { diff --git a/src/main/java/refinedstorage/tile/TileStorage.java b/src/main/java/refinedstorage/tile/TileStorage.java index 431051f83..bac5bb605 100644 --- a/src/main/java/refinedstorage/tile/TileStorage.java +++ b/src/main/java/refinedstorage/tile/TileStorage.java @@ -8,6 +8,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import refinedstorage.RefinedStorage; +import refinedstorage.RefinedStorageBlocks; import refinedstorage.block.BlockStorage; import refinedstorage.block.EnumStorageType; import refinedstorage.inventory.InventorySimple; @@ -20,6 +21,7 @@ import refinedstorage.storage.StorageItem; import refinedstorage.tile.settings.ICompareSetting; import refinedstorage.tile.settings.IModeSetting; import refinedstorage.tile.settings.IRedstoneModeSetting; +import refinedstorage.tile.settings.ModeSettingUtils; import refinedstorage.util.InventoryUtils; public class TileStorage extends TileMachine implements IStorageProvider, IStorage, IStorageGui, ICompareSetting, IModeSetting @@ -100,7 +102,12 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora public EnumStorageType getType() { - return ((EnumStorageType) worldObj.getBlockState(pos).getValue(BlockStorage.TYPE)); + if (worldObj.getBlockState(pos).getBlock() == RefinedStorageBlocks.STORAGE) + { + return ((EnumStorageType) worldObj.getBlockState(pos).getValue(BlockStorage.TYPE)); + } + + return EnumStorageType.TYPE_1K; } @Override @@ -154,48 +161,7 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora @Override public boolean canPush(ItemStack stack) { - return checkWhitelistBlacklist(inventory, this, compare, stack) && getStorage().canPush(stack); - } - - public static boolean checkWhitelistBlacklist(IInventory inventory, IModeSetting mode, int compare, ItemStack stack) - { - if (mode.isWhitelist()) - { - int slots = 0; - - for (int i = 0; i < inventory.getSizeInventory(); ++i) - { - ItemStack slot = inventory.getStackInSlot(i); - - if (slot != null) - { - slots++; - - if (InventoryUtils.compareStack(slot, stack, compare)) - { - return true; - } - } - } - - return slots == 0; - } - else if (mode.isBlacklist()) - { - for (int i = 0; i < inventory.getSizeInventory(); ++i) - { - ItemStack slot = inventory.getStackInSlot(i); - - if (slot != null && InventoryUtils.compareStack(slot, stack, compare)) - { - return false; - } - } - - return true; - } - - return false; + return ModeSettingUtils.doesNotViolateMode(inventory, this, compare, stack) && getStorage().canPush(stack); } @Override @@ -283,7 +249,6 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora }; } - @Override public NBTStorage getStorage() { return new NBTStorage(tag, getCapacity(), priority); diff --git a/src/main/java/refinedstorage/tile/settings/ModeSettingUtils.java b/src/main/java/refinedstorage/tile/settings/ModeSettingUtils.java new file mode 100644 index 000000000..49a085915 --- /dev/null +++ b/src/main/java/refinedstorage/tile/settings/ModeSettingUtils.java @@ -0,0 +1,49 @@ +package refinedstorage.tile.settings; + +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import refinedstorage.util.InventoryUtils; + +public class ModeSettingUtils +{ + public static boolean doesNotViolateMode(IInventory inventory, IModeSetting mode, int compare, ItemStack stack) + { + if (mode.isWhitelist()) + { + int slots = 0; + + for (int i = 0; i < inventory.getSizeInventory(); ++i) + { + ItemStack slot = inventory.getStackInSlot(i); + + if (slot != null) + { + slots++; + + if (InventoryUtils.compareStack(slot, stack, compare)) + { + return true; + } + } + } + + return slots == 0; + } + else if (mode.isBlacklist()) + { + for (int i = 0; i < inventory.getSizeInventory(); ++i) + { + ItemStack slot = inventory.getStackInSlot(i); + + if (slot != null && InventoryUtils.compareStack(slot, stack, compare)) + { + return false; + } + } + + return true; + } + + return false; + } +} diff --git a/src/main/resources/assets/refinedstorage/textures/gui/drive.png b/src/main/resources/assets/refinedstorage/textures/gui/drive.png index 16ffd17c1762b9f537bf2f30d3444ad1b0262614..e35aabeb1e8adcaa8106fbd3f57da4cfbe5559cd 100644 GIT binary patch literal 2286 zcmeH|Z7^I{7{{M$1xXO1qcoL~dTSFjA)$s0G7LMy7;l4y5X54=lto0BjZQLCl1gNX zM96A~r9o^7LKM|VP${8N)Jv1J)yO8A(Q1VI^xQo)lTZE7ug#fr&+oiF=lMV9o^$WV zzCIpWo8H(209t%cH$MP|R2k6V5hTIODU;>~JFbyyp@{uWJp$4Iqg*GIa!8``@0nagb0az(uC4<#~HGo$ETY&9^K7_jn zV+gY>u-^bX064<1G zfq&V7VyB2;?xKkNeEi9Q`9CM{Usg9GTeUI8Gb9Z_`v&(gpWaC2lTHJXd$7nq`KTx} zGBpNLBIA-o)=4oUk362NzJ4LBCAm{L!Ejjwa+r=RK9IcEj?yT>iPW#!!;lz4Bg;|+hW7Y!DN?D&nRVb`PR*@1lTt(GR; z?~p-)I0{3G5DEv1EQ$>j?i6MeG3o9Trad+)t3Q9q&x=w0Ybxfv>Yzpnhce#d#rim- z7rl-q-9}`#5Q5X{lUvJm=NbmhHx}#8RZy_i+npLY%|_55sDD8pEBaZT;LAf7saYkm5LTymDL5JcZf+PAKmN1q6kBV z%_MPvr^aF-RnLCjfQ7w1@msb|Tb z=qv1DK6|FpDmS1-pq#gsn2~FxCb?&&E-^Py0qA_Wkap;UAv1u#2u5;x_2wS9)yPo= z1bI6Eh6`RU+7q~+X#3M69M-CGKUDGm%+%t516dG6vo|>aIf$wR^IsK^Un(rYiow^x zi&2`PxAGNZYQsH)zKcIr&uDWqxg>pItxs#Dbg3=eGd5MLDNQSp=f^sR-YTA~)sk8y z*4*!XbBc4ROzV!6jhf6N|9F{=2$^ous0qT=&36TIqjdw92^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;5!7ujG`J|4M0JO64!{5;QX|b^2DN4hJwV*yb`^<)Di^~Jp(<<9OF7a z1_q`Jo-U3d6>)EGHD=v55NQk4&%FPC;^td_)%%x}L|&Zx`tIkz9gZRkW%jgn>TJJV zG%xRSbl&OLm0AK3=f3=lkAKFU!=Ru3vS_B>2Bwtn!Ym974RflaKuU_3^xPR{G5$H*d!aDYj`91?z6tvoD-D@8 z0G$I=FrnC=8>H~sTE-`_eL#)ff(>tZ+SwNH9q7GKo7eJ(7bb%6-iAD0h4)1)3=VNU z3}CO6GQ7=iIVT7-2I6G~hcbI$$&KWSpJFHOvELUsdFS_X?W+tszf08?sFu9}75^Xr z^rIMr#lUdD_`ZN;*-{CG?|Rj(<<>K+{nv&tKk<|nwL23Z4XPwS02*>&_KMvnXKoGR znNU4_@1fmu&+J_uwueoXT|!Dcg7*(r(j@n#Fu4&z{kF+nyiS%G*I{i^0>?&t;ucLK6U~ CyG2F- diff --git a/src/main/resources/assets/refinedstorage/textures/gui/storage.png b/src/main/resources/assets/refinedstorage/textures/gui/storage.png index dd56ea27884919130b8a9fbb58c2e8ab230bc9d5..5d30982d34d53f044ea6fd99ad03fe54d0331ea5 100644 GIT binary patch delta 983 zcmca4cu{ae2n*L<1_r*pjPAcDteqUkqF!(A>Eakt5%>0PXP$7RfLmhnp$+FYwAQBG zC>Pqc;mj$&6Tj^zcz%yBE7#&!b7`-!-reGskV~Sk-u+79T-iD2WRBU%%WK|?Pxou~ zO`AN|#`D3F)%HDRC%61RH$Cpbl-2PnQT!iNy)S2~7u;Iv+f>R>_LYV6L67%rmeU*? z^5(vcu8+U2cF>4vPI2bs1WCqoySI35=wT3#xup`}*3hk&E2N`*Ky|tq=QP0wo4}e1 zjslHIW%+RxLY;+BcXwrh^{?9r)_*+~tiKwlKZmd2!1mnY7xi|M4DUduvmV%%oqpAi zt$`hEdi?=si18QanVEq#&z?QI|2WvRc{{)Y{t(mBA+FJeDBlWp&4+df^?b$tvdbWU z{CRr`OuYtEdkVqk+>6ZD1^a{@sMn1B#vs z#qjN3>WW9ZWoJ8kPhQThnRG%BXh6dG*fo|7d#hzv{iwVC>_U+GR>n8+vt331J9f{7 z*#L7tgumju+4d`*sUSZ%+-A6}#W4BZu1qcd4Zn}Co4e4Hx8Ysz1XbITlUgxG;gc&l j94FUs2um(Ln-Eakt5%>0PXP!v7fZM}F0~JOlMT@$EWh;nvo%Bmg>x7; zJiHaPZ8GD7Z6FisIX-L$oAlv)-?eLCGhV-bU49H~|2v5N-y!z@h8QXgv415**BP+= zKgzGv-v(=$w;ODRKExg25G~TLw}O>bJO}#j8H4mM!Jfd=Wkw8p$}{UHCloixa6V{; z7)O& z_#wIy!JbY?eR`n}>_2vh{}wSa071!gwgvkSuIOUe{r`S``M2=c`~bAx0T>^5Qe z%j?FNP`r`}$bGZ38zlQ>b=|++yQi(~Vz5LKWk?A37XZpaO