Specify compare on interface

This commit is contained in:
Raoul Van den Berge
2016-03-20 22:32:59 +01:00
parent 68c3b95043
commit b5ccd927c3
2 changed files with 51 additions and 3 deletions

View File

@@ -1,8 +1,10 @@
package refinedstorage.gui; package refinedstorage.gui;
import refinedstorage.container.ContainerInterface; import refinedstorage.container.ContainerInterface;
import refinedstorage.gui.sidebutton.SideButtonCompare;
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
import refinedstorage.tile.TileInterface; import refinedstorage.tile.TileInterface;
import refinedstorage.util.InventoryUtils;
public class GuiInterface extends GuiBase public class GuiInterface extends GuiBase
{ {
@@ -19,6 +21,9 @@ public class GuiInterface extends GuiBase
public void init(int x, int y) public void init(int x, int y)
{ {
addSideButton(new SideButtonRedstoneMode(tile)); addSideButton(new SideButtonRedstoneMode(tile));
addSideButton(new SideButtonCompare(tile, InventoryUtils.COMPARE_DAMAGE));
addSideButton(new SideButtonCompare(tile, InventoryUtils.COMPARE_NBT));
} }
@Override @Override

View File

@@ -1,5 +1,6 @@
package refinedstorage.tile; package refinedstorage.tile;
import io.netty.buffer.ByteBuf;
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.inventory.ISidedInventory; import net.minecraft.inventory.ISidedInventory;
@@ -8,12 +9,17 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import refinedstorage.inventory.InventorySimple; import refinedstorage.inventory.InventorySimple;
import refinedstorage.tile.settings.ICompareSetting;
import refinedstorage.util.InventoryUtils; import refinedstorage.util.InventoryUtils;
public class TileInterface extends TileMachine implements ISidedInventory public class TileInterface extends TileMachine implements ICompareSetting, ISidedInventory
{ {
public static final String NBT_COMPARE = "Compare";
private InventorySimple inventory = new InventorySimple("interface", 9 * 3); private InventorySimple inventory = new InventorySimple("interface", 9 * 3);
private int compare = 0;
@Override @Override
public int getEnergyUsage() public int getEnergyUsage()
{ {
@@ -47,7 +53,7 @@ public class TileInterface extends TileMachine implements ISidedInventory
if (got != null) if (got != null)
{ {
if (!InventoryUtils.compareStackNoQuantity(wanted, got)) if (!InventoryUtils.compareStack(wanted, got, compare))
{ {
if (getController().push(got)) if (getController().push(got))
{ {
@@ -73,7 +79,7 @@ public class TileInterface extends TileMachine implements ISidedInventory
ItemStack goingToTake = wanted.copy(); ItemStack goingToTake = wanted.copy();
goingToTake.stackSize = needed; goingToTake.stackSize = needed;
ItemStack took = getController().take(goingToTake); ItemStack took = getController().take(goingToTake, compare);
if (took != null) if (took != null)
{ {
@@ -104,6 +110,11 @@ public class TileInterface extends TileMachine implements ISidedInventory
super.readFromNBT(nbt); super.readFromNBT(nbt);
InventoryUtils.restoreInventory(this, 0, nbt); InventoryUtils.restoreInventory(this, 0, nbt);
if (nbt.hasKey(NBT_COMPARE))
{
compare = nbt.getInteger(NBT_COMPARE);
}
} }
@Override @Override
@@ -112,6 +123,24 @@ public class TileInterface extends TileMachine implements ISidedInventory
super.writeToNBT(nbt); super.writeToNBT(nbt);
InventoryUtils.saveInventory(this, 0, nbt); InventoryUtils.saveInventory(this, 0, nbt);
nbt.setInteger(NBT_COMPARE, compare);
}
@Override
public void fromBytes(ByteBuf buf)
{
super.fromBytes(buf);
compare = buf.readInt();
}
@Override
public void toBytes(ByteBuf buf)
{
super.toBytes(buf);
buf.writeInt(compare);
} }
@Override @Override
@@ -257,4 +286,18 @@ public class TileInterface extends TileMachine implements ISidedInventory
{ {
return slot >= 18; return slot >= 18;
} }
@Override
public int getCompare()
{
return compare;
}
@Override
public void setCompare(int compare)
{
markDirty();
this.compare = compare;
}
} }