Give drive better interface.

This commit is contained in:
Raoul Van den Berge
2016-03-22 17:46:30 +01:00
parent 09830a8342
commit 2cfc31b663
12 changed files with 435 additions and 408 deletions

View File

@@ -1,73 +1,25 @@
package refinedstorage.container; package refinedstorage.container;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageItems;
import refinedstorage.container.slot.BasicItemValidator; import refinedstorage.container.slot.BasicItemValidator;
import refinedstorage.container.slot.SlotFiltered; import refinedstorage.container.slot.SlotFiltered;
import refinedstorage.tile.TileDrive; import refinedstorage.tile.TileDrive;
public class ContainerDrive extends ContainerBase public class ContainerDrive extends ContainerStorage
{ {
public ContainerDrive(EntityPlayer player, TileDrive drive) public ContainerDrive(EntityPlayer player, TileDrive drive)
{ {
super(player); super(player, drive.getInventory());
int x = 8; for (int i = 0; i < 4; ++i)
int y = 20;
for (int i = 0; i < 8; ++i)
{ {
addSlotToContainer(new SlotFiltered(drive, i, x, y, new BasicItemValidator(RefinedStorageItems.STORAGE_CELL))); addSlotToContainer(new SlotFiltered(drive, i, 98 + (i * 18), 78, new BasicItemValidator(RefinedStorageItems.STORAGE_CELL)));
if ((i + 1) % 2 == 0)
{
x = 8;
y += 18;
}
else
{
x += 18;
}
} }
addPlayerInventory(8, 108); for (int i = 0; i < 4; ++i)
}
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int index)
{
ItemStack stack = null;
Slot slot = getSlot(index);
if (slot != null && slot.getHasStack())
{ {
stack = slot.getStack().copy(); addSlotToContainer(new SlotFiltered(drive, 4 + i, 98 + (i * 18), 96, new BasicItemValidator(RefinedStorageItems.STORAGE_CELL)));
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();
}
} }
return stack;
} }
} }

View File

@@ -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);
}
}
}

View File

@@ -66,7 +66,7 @@ public class GuiHandler implements IGuiHandler
case RefinedStorageGui.GRID: case RefinedStorageGui.GRID:
return new GuiGrid((ContainerGrid) getContainer(ID, player, tile), (TileGrid) tile); return new GuiGrid((ContainerGrid) getContainer(ID, player, tile), (TileGrid) tile);
case RefinedStorageGui.DRIVE: 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: case RefinedStorageGui.IMPORTER:
return new GuiImporter((ContainerImporter) getContainer(ID, player, tile), (TileImporter) tile); return new GuiImporter((ContainerImporter) getContainer(ID, player, tile), (TileImporter) tile);
case RefinedStorageGui.EXPORTER: case RefinedStorageGui.EXPORTER:

View File

@@ -13,6 +13,7 @@ import refinedstorage.util.InventoryUtils;
public class GuiStorage extends GuiBase public class GuiStorage extends GuiBase
{ {
private IStorageGui gui; private IStorageGui gui;
private String texture;
private GuiTextField priorityField; private GuiTextField priorityField;
@@ -21,11 +22,17 @@ public class GuiStorage extends GuiBase
private int barWidth = 16; private int barWidth = 16;
private int barHeight = 58; private int barHeight = 58;
public GuiStorage(ContainerStorage container, IStorageGui gui) public GuiStorage(ContainerStorage container, IStorageGui gui, String texture)
{ {
super(container, 176, 211); super(container, 176, 211);
this.gui = gui; this.gui = gui;
this.texture = texture;
}
public GuiStorage(ContainerStorage container, IStorageGui gui)
{
this(container, gui, "gui/storage.png");
} }
@Override @Override
@@ -47,8 +54,8 @@ public class GuiStorage extends GuiBase
addSideButton(new SideButtonCompare(gui.getCompareSetting(), InventoryUtils.COMPARE_NBT)); addSideButton(new SideButtonCompare(gui.getCompareSetting(), InventoryUtils.COMPARE_NBT));
} }
priorityField = new GuiTextField(0, fontRendererObj, x + 116 + 1, y + 54 + 1, 25, fontRendererObj.FONT_HEIGHT); priorityField = new GuiTextField(0, fontRendererObj, x + 98 + 1, y + 54 + 1, 25, fontRendererObj.FONT_HEIGHT);
priorityField.setText(String.valueOf(gui.getStorage().getPriority())); priorityField.setText(String.valueOf(gui.getPriority()));
priorityField.setEnableBackgroundDrawing(false); priorityField.setEnableBackgroundDrawing(false);
priorityField.setVisible(true); priorityField.setVisible(true);
priorityField.setTextColor(16777215); priorityField.setTextColor(16777215);
@@ -64,7 +71,7 @@ public class GuiStorage extends GuiBase
@Override @Override
public void drawBackground(int x, int y, int mouseX, int mouseY) public void drawBackground(int x, int y, int mouseX, int mouseY)
{ {
bindTexture("gui/storage.png"); bindTexture(texture);
drawTexture(x, y, 0, 0, width, height); drawTexture(x, y, 0, 0, width, height);
@@ -80,7 +87,7 @@ public class GuiStorage extends GuiBase
{ {
drawString(7, 7, t(gui.getName())); drawString(7, 7, t(gui.getName()));
drawString(7, 42, t("misc.refinedstorage:storage")); 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(7, 117, t("container.inventory"));
drawString(30, 54, t("misc.refinedstorage:storage.stored", gui.getStored())); drawString(30, 54, t("misc.refinedstorage:storage.stored", gui.getStored()));

View File

@@ -2,12 +2,29 @@ package refinedstorage.storage;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import refinedstorage.item.ItemStorageCell; import refinedstorage.item.ItemStorageCell;
import refinedstorage.tile.TileDrive;
import refinedstorage.tile.settings.ModeSettingUtils;
public class CellStorage extends NBTStorage 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) public static int getCapacity(ItemStack cell)

View File

@@ -14,7 +14,7 @@ public interface IStorageGui
public String getName(); public String getName();
public IStorage getStorage(); public int getPriority();
public IInventory getInventory(); public IInventory getInventory();

View File

@@ -1,215 +1,336 @@
package refinedstorage.tile; package refinedstorage.tile;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import java.util.List; import java.util.List;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import refinedstorage.inventory.InventorySimple; import refinedstorage.RefinedStorage;
import refinedstorage.storage.CellStorage; import refinedstorage.inventory.InventorySimple;
import refinedstorage.storage.IStorage; import refinedstorage.network.MessagePriorityUpdate;
import refinedstorage.storage.IStorageProvider; import refinedstorage.storage.CellStorage;
import refinedstorage.util.InventoryUtils; import refinedstorage.storage.IStorage;
import refinedstorage.storage.IStorageGui;
public class TileDrive extends TileMachine implements IInventory, IStorageProvider import refinedstorage.storage.IStorageProvider;
{ import refinedstorage.tile.settings.ICompareSetting;
public static final String NBT_PRIORITY = "Priority"; import refinedstorage.tile.settings.IModeSetting;
import refinedstorage.tile.settings.IRedstoneModeSetting;
private InventorySimple inventory = new InventorySimple("drive", 8); import refinedstorage.util.InventoryUtils;
private int priority = 0; public class TileDrive extends TileMachine implements IStorageProvider, IStorageGui, ICompareSetting, IModeSetting, IInventory
{
@Override public static final String NBT_PRIORITY = "Priority";
public int getEnergyUsage() public static final String NBT_COMPARE = "Compare";
{ public static final String NBT_MODE = "Mode";
int base = 5;
private InventorySimple filterInventory = new InventorySimple("filters", 9, this);
for (int i = 0; i < getSizeInventory(); ++i) private InventorySimple inventory = new InventorySimple("drive", 8, this);
{
if (getStackInSlot(i) != null) private int priority = 0;
{ private int compare = 0;
base += 2; private int mode = 0;
}
} @Override
public int getEnergyUsage()
return base; {
} int base = 5;
@Override for (int i = 0; i < getSizeInventory(); ++i)
public void updateMachine() {
{ if (getStackInSlot(i) != null)
} {
base += 2;
public int getPriority() }
{ }
return priority;
} return base;
}
public void setPriority(int priority)
{ @Override
markDirty(); public void updateMachine()
{
this.priority = priority; }
}
@Override
@Override public void addStorages(List<IStorage> storages)
public void readFromNBT(NBTTagCompound nbt) {
{ for (int i = 0; i < getSizeInventory(); ++i)
super.readFromNBT(nbt); {
if (getStackInSlot(i) != null)
InventoryUtils.restoreInventory(this, 0, nbt); {
storages.add(new CellStorage(getStackInSlot(i), this));
if (nbt.hasKey(NBT_PRIORITY)) }
{ }
priority = nbt.getInteger(NBT_PRIORITY); }
}
} @Override
public void readFromNBT(NBTTagCompound nbt)
@Override {
public void writeToNBT(NBTTagCompound nbt) super.readFromNBT(nbt);
{
super.writeToNBT(nbt); InventoryUtils.restoreInventory(filterInventory, 0, nbt);
InventoryUtils.restoreInventory(inventory, 1, nbt);
InventoryUtils.saveInventory(this, 0, nbt);
if (nbt.hasKey(NBT_PRIORITY))
nbt.setInteger(NBT_PRIORITY, priority); {
} priority = nbt.getInteger(NBT_PRIORITY);
}
@Override
public void toBytes(ByteBuf buf) if (nbt.hasKey(NBT_COMPARE))
{ {
super.toBytes(buf); compare = nbt.getInteger(NBT_COMPARE);
}
buf.writeInt(priority);
} if (nbt.hasKey(NBT_MODE))
{
@Override mode = nbt.getInteger(NBT_MODE);
public void fromBytes(ByteBuf buf) }
{ }
super.fromBytes(buf);
@Override
priority = buf.readInt(); public void writeToNBT(NBTTagCompound nbt)
} {
super.writeToNBT(nbt);
@Override
public void addStorages(List<IStorage> storages) InventoryUtils.saveInventory(filterInventory, 0, nbt);
{ InventoryUtils.saveInventory(inventory, 1, nbt);
for (int i = 0; i < getSizeInventory(); ++i)
{ nbt.setInteger(NBT_PRIORITY, priority);
if (getStackInSlot(i) != null) nbt.setInteger(NBT_COMPARE, compare);
{ nbt.setInteger(NBT_MODE, mode);
storages.add(new CellStorage(getStackInSlot(i), priority)); }
}
} @Override
} public void toBytes(ByteBuf buf)
{
@Override super.toBytes(buf);
public int getSizeInventory()
{ buf.writeInt(priority);
return inventory.getSizeInventory(); buf.writeInt(compare);
} buf.writeInt(mode);
}
@Override
public ItemStack getStackInSlot(int slot) @Override
{ public void fromBytes(ByteBuf buf)
return inventory.getStackInSlot(slot); {
} super.fromBytes(buf);
@Override priority = buf.readInt();
public ItemStack decrStackSize(int slot, int count) compare = buf.readInt();
{ mode = buf.readInt();
return inventory.decrStackSize(slot, count); }
}
@Override
@Override public int getCompare()
public ItemStack removeStackFromSlot(int slot) {
{ return compare;
return inventory.removeStackFromSlot(slot); }
}
@Override
@Override public void setCompare(int compare)
public void setInventorySlotContents(int slot, ItemStack stack) {
{ markDirty();
inventory.setInventorySlotContents(slot, stack);
} this.compare = compare;
}
@Override
public int getInventoryStackLimit() @Override
{ public boolean isWhitelist()
return inventory.getInventoryStackLimit(); {
} return mode == 0;
}
@Override
public boolean isUseableByPlayer(EntityPlayer player) @Override
{ public boolean isBlacklist()
return inventory.isUseableByPlayer(player); {
} return mode == 1;
}
@Override
public void openInventory(EntityPlayer player) @Override
{ public void setToWhitelist()
inventory.openInventory(player); {
} markDirty();
@Override this.mode = 0;
public void closeInventory(EntityPlayer player) }
{
inventory.closeInventory(player); @Override
} public void setToBlacklist()
{
@Override markDirty();
public boolean isItemValidForSlot(int slot, ItemStack stack)
{ this.mode = 1;
return inventory.isItemValidForSlot(slot, stack); }
}
@Override
@Override public String getName()
public int getField(int id) {
{ return "block.refinedstorage:drive.name";
return inventory.getField(id); }
}
@Override
@Override public IInventory getInventory()
public void setField(int id, int value) {
{ return filterInventory;
inventory.setField(id, value); }
}
@Override
@Override public IRedstoneModeSetting getRedstoneModeSetting()
public int getFieldCount() {
{ return this;
return inventory.getFieldCount(); }
}
@Override
@Override public ICompareSetting getCompareSetting()
public void clear() {
{ return this;
inventory.clear(); }
}
@Override
@Override public IModeSetting getWhitelistBlacklistSetting()
public String getName() {
{ return this;
return inventory.getName(); }
}
@Override
@Override public IPriorityHandler getPriorityHandler()
public boolean hasCustomName() {
{ return new IPriorityHandler()
return inventory.hasCustomName(); {
} @Override
public void onPriorityChanged(int priority)
@Override {
public ITextComponent getDisplayName() RefinedStorage.NETWORK.sendToServer(new MessagePriorityUpdate(pos, priority));
{ }
return inventory.getDisplayName(); };
} }
@Override @Override
public IInventory getDroppedInventory() public int getPriority()
{ {
return inventory; 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;
}
}

View File

@@ -18,6 +18,7 @@ import refinedstorage.storage.StorageItem;
import refinedstorage.tile.settings.ICompareSetting; import refinedstorage.tile.settings.ICompareSetting;
import refinedstorage.tile.settings.IModeSetting; import refinedstorage.tile.settings.IModeSetting;
import refinedstorage.tile.settings.IRedstoneModeSetting; import refinedstorage.tile.settings.IRedstoneModeSetting;
import refinedstorage.tile.settings.ModeSettingUtils;
import refinedstorage.util.InventoryUtils; import refinedstorage.util.InventoryUtils;
public class TileExternalStorage extends TileMachine implements IStorageProvider, IStorage, IStorageGui, ICompareSetting, IModeSetting 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 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() public IInventory getConnectedInventory()
@@ -266,12 +267,6 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider
return "gui.refinedstorage:external_storage"; return "gui.refinedstorage:external_storage";
} }
@Override
public IStorage getStorage()
{
return this;
}
@Override @Override
public IRedstoneModeSetting getRedstoneModeSetting() public IRedstoneModeSetting getRedstoneModeSetting()
{ {

View File

@@ -8,6 +8,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks;
import refinedstorage.block.BlockStorage; import refinedstorage.block.BlockStorage;
import refinedstorage.block.EnumStorageType; import refinedstorage.block.EnumStorageType;
import refinedstorage.inventory.InventorySimple; import refinedstorage.inventory.InventorySimple;
@@ -20,6 +21,7 @@ import refinedstorage.storage.StorageItem;
import refinedstorage.tile.settings.ICompareSetting; import refinedstorage.tile.settings.ICompareSetting;
import refinedstorage.tile.settings.IModeSetting; import refinedstorage.tile.settings.IModeSetting;
import refinedstorage.tile.settings.IRedstoneModeSetting; import refinedstorage.tile.settings.IRedstoneModeSetting;
import refinedstorage.tile.settings.ModeSettingUtils;
import refinedstorage.util.InventoryUtils; import refinedstorage.util.InventoryUtils;
public class TileStorage extends TileMachine implements IStorageProvider, IStorage, IStorageGui, ICompareSetting, IModeSetting 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() 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 @Override
@@ -154,48 +161,7 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora
@Override @Override
public boolean canPush(ItemStack stack) public boolean canPush(ItemStack stack)
{ {
return checkWhitelistBlacklist(inventory, this, compare, stack) && getStorage().canPush(stack); return ModeSettingUtils.doesNotViolateMode(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;
} }
@Override @Override
@@ -283,7 +249,6 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora
}; };
} }
@Override
public NBTStorage getStorage() public NBTStorage getStorage()
{ {
return new NBTStorage(tag, getCapacity(), priority); return new NBTStorage(tag, getCapacity(), priority);

View File

@@ -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;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB