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 16ffd17c1..e35aabeb1 100644 Binary files a/src/main/resources/assets/refinedstorage/textures/gui/drive.png and b/src/main/resources/assets/refinedstorage/textures/gui/drive.png differ diff --git a/src/main/resources/assets/refinedstorage/textures/gui/storage.png b/src/main/resources/assets/refinedstorage/textures/gui/storage.png index dd56ea278..5d30982d3 100644 Binary files a/src/main/resources/assets/refinedstorage/textures/gui/storage.png and b/src/main/resources/assets/refinedstorage/textures/gui/storage.png differ