Give drive better interface.
This commit is contained in:
@@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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:
|
||||||
|
|||||||
@@ -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()));
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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 |
Reference in New Issue
Block a user