From 423ecee0996fca203099fc69735878f45b541f46 Mon Sep 17 00:00:00 2001 From: way2muchnoise Date: Sun, 18 Sep 2016 15:09:03 +0200 Subject: [PATCH 1/2] add extraction from network to manipulator also some small consistency change --- src/main/java/refinedstorage/gui/GuiBase.java | 2 +- .../gui/GuiDiskManipulator.java | 2 + .../inventory/ItemHandlerFluid.java | 4 + .../refinedstorage/proxy/CommonProxy.java | 2 +- .../refinedstorage/tile/TileConstructor.java | 2 +- .../refinedstorage/tile/TileDetector.java | 2 +- .../tile/TileDiskManipulator.java | 79 +++++++++++++++++++ .../tile/TileFluidInterface.java | 2 +- .../tile/config/IFilterable.java | 11 ++- .../assets/refinedstorage/lang/en_US.lang | 2 +- 10 files changed, 100 insertions(+), 8 deletions(-) diff --git a/src/main/java/refinedstorage/gui/GuiBase.java b/src/main/java/refinedstorage/gui/GuiBase.java index fb9059861..b9166dd98 100755 --- a/src/main/java/refinedstorage/gui/GuiBase.java +++ b/src/main/java/refinedstorage/gui/GuiBase.java @@ -93,7 +93,7 @@ public abstract class GuiBase extends GuiContainer { Slot slot = inventorySlots.inventorySlots.get(i); if (slot instanceof SlotItemHandler && ((SlotItemHandler) slot).getItemHandler() instanceof ItemHandlerFluid) { - FluidStack stack = ((ItemHandlerFluid) ((SlotItemHandler) slot).getItemHandler()).getFluids()[slot.getSlotIndex()]; + FluidStack stack = ((ItemHandlerFluid) ((SlotItemHandler) slot).getItemHandler()).getFluidStackInSlot(slot.getSlotIndex()); if (stack != null) { FLUID_RENDERER.draw(mc, guiLeft + slot.xDisplayPosition, guiTop + slot.yDisplayPosition, stack); diff --git a/src/main/java/refinedstorage/gui/GuiDiskManipulator.java b/src/main/java/refinedstorage/gui/GuiDiskManipulator.java index 2361d6511..3ce80b208 100644 --- a/src/main/java/refinedstorage/gui/GuiDiskManipulator.java +++ b/src/main/java/refinedstorage/gui/GuiDiskManipulator.java @@ -36,5 +36,7 @@ public class GuiDiskManipulator extends GuiBase { public void drawForeground(int mouseX, int mouseY) { drawString(7, 7, t("block.refinedstorage:disk_manipulator.name")); drawString(7, 117, t("container.inventory")); + drawString(25, 45, t("gui.refinedstorage:fluid_interface.in")); + drawString(115, 45, t("gui.refinedstorage:fluid_interface.out")); } } diff --git a/src/main/java/refinedstorage/inventory/ItemHandlerFluid.java b/src/main/java/refinedstorage/inventory/ItemHandlerFluid.java index 5e6f98bbf..860a60b15 100755 --- a/src/main/java/refinedstorage/inventory/ItemHandlerFluid.java +++ b/src/main/java/refinedstorage/inventory/ItemHandlerFluid.java @@ -28,6 +28,10 @@ public class ItemHandlerFluid extends ItemHandlerBasic { } } + public FluidStack getFluidStackInSlot(int slot) { + return fluids[slot]; + } + public FluidStack[] getFluids() { return fluids; } diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 106d010a3..e924f184f 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -39,7 +39,7 @@ import java.util.ArrayList; import java.util.List; public class CommonProxy { - public static final boolean ENABLE_DISK_MANIPULATOR = false; + public static final boolean ENABLE_DISK_MANIPULATOR = true; protected List cableTypes = new ArrayList<>(); diff --git a/src/main/java/refinedstorage/tile/TileConstructor.java b/src/main/java/refinedstorage/tile/TileConstructor.java index 9126ed796..7978179de 100755 --- a/src/main/java/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/refinedstorage/tile/TileConstructor.java @@ -92,7 +92,7 @@ public class TileConstructor extends TileMultipartNode implements IComparable, I } } } else if (type == IType.FLUIDS) { - FluidStack stack = fluidFilters.getFluids()[0]; + FluidStack stack = fluidFilters.getFluidStackInSlot(0); if (stack != null && stack.getFluid().canBePlacedInWorld()) { BlockPos front = pos.offset(getDirection()); diff --git a/src/main/java/refinedstorage/tile/TileDetector.java b/src/main/java/refinedstorage/tile/TileDetector.java index 4cad82b03..67c41f14e 100755 --- a/src/main/java/refinedstorage/tile/TileDetector.java +++ b/src/main/java/refinedstorage/tile/TileDetector.java @@ -136,7 +136,7 @@ public class TileDetector extends TileNode implements IComparable, IType { powered = mode == MODE_AUTOCRAFTING && !network.getCraftingTasks().isEmpty(); } } else if (type == IType.FLUIDS) { - FluidStack slot = fluidFilters.getFluids()[0]; + FluidStack slot = fluidFilters.getFluidStackInSlot(0); if (slot != null) { FluidStack stack = network.getFluidStorage().get(slot, compare); diff --git a/src/main/java/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/refinedstorage/tile/TileDiskManipulator.java index a11bdef20..27ab7703b 100644 --- a/src/main/java/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/refinedstorage/tile/TileDiskManipulator.java @@ -27,6 +27,8 @@ import refinedstorage.tile.data.ITileDataConsumer; import refinedstorage.tile.data.ITileDataProducer; import refinedstorage.tile.data.TileDataParameter; +import java.util.ArrayList; + public class TileDiskManipulator extends TileNode implements IComparable, IFilterable, IType { public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter MODE = IFilterable.createParameter(); @@ -49,6 +51,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; private static final String NBT_TYPE = "Type"; + private static final String NBT_IO_MOD = "IOMode"; private int compare = 0; private int mode = IFilterable.WHITELIST; @@ -211,7 +214,42 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte } private void extractFromNetwork(ItemStorage storage, int slot) { + if (storage.getStored() == storage.getCapacity()) { + moveDriveToOutput(slot); + return; + } + ItemStack extracted = null; + int ii = 0; + if (IFilterable.isEmpty(itemFilters)) { + ItemStack toExtract = null; + ArrayList networkItems = new ArrayList<>(network.getItemStorage().getStacks()); + int iii = 0; + while ((toExtract == null || toExtract.stackSize == 0) && iii < networkItems.size()) { + toExtract = networkItems.get(iii++); + } + if (toExtract != null) { + extracted = network.extractItem(toExtract, 1, compare); + } + } else { + while (itemFilters.getSlots() > ii && extracted == null) { + ItemStack stack = null; + while (itemFilters.getSlots() > ii && stack == null) { + stack = itemFilters.getStackInSlot(ii++); + } + if (stack != null) { + extracted = network.extractItem(stack, 1, compare); + } + } + } + if (extracted == null) { + moveDriveToOutput(slot); + return; + } + ItemStack leftOver = storage.insertItem(extracted, extracted.stackSize, false); + if (leftOver != null) { + network.insertItem(leftOver, leftOver.stackSize, false); + } } private void insertIntoNetwork(FluidStorage storage, int slot) { @@ -241,6 +279,42 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte } private void extractFromNetwork(FluidStorage storage, int slot) { + if (storage.getStored() == storage.getCapacity()) { + moveDriveToOutput(slot); + return; + } + FluidStack extracted = null; + int ii = 0; + if (IFilterable.isEmpty(itemFilters)) { + FluidStack toExtract = null; + ArrayList networkFluids = new ArrayList<>(network.getFluidStorage().getStacks()); + int iii = 0; + while ((toExtract == null || toExtract.amount == 0) && iii < networkFluids.size()) { + toExtract = networkFluids.get(iii++); + } + if (toExtract != null) { + extracted = network.extractFluid(toExtract, 1, compare); + } + } else { + while (fluidFilters.getSlots() > ii && extracted == null) { + FluidStack stack = null; + while (fluidFilters.getSlots() > ii && stack == null) { + stack = fluidFilters.getFluidStackInSlot(ii++); + } + if (stack != null) { + extracted = network.extractFluid(stack, 1, compare); + } + } + } + + if (extracted == null) { + moveDriveToOutput(slot); + return; + } + FluidStack leftOver = storage.insertFluid(extracted, extracted.amount, false); + if (leftOver != null) { + network.insertFluid(leftOver, leftOver.amount, false); + } } private void moveDriveToOutput(int slot) { @@ -326,6 +400,10 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte if (tag.hasKey(NBT_TYPE)) { type = tag.getInteger(NBT_TYPE); } + + if (tag.hasKey(NBT_IO_MOD)) { + ioMode = tag.getInteger(NBT_IO_MOD); + } } @Override @@ -339,6 +417,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_MODE, mode); tag.setInteger(NBT_TYPE, type); + tag.setInteger(NBT_IO_MOD, ioMode); return tag; } diff --git a/src/main/java/refinedstorage/tile/TileFluidInterface.java b/src/main/java/refinedstorage/tile/TileFluidInterface.java index dd3e13930..02d3f3d34 100755 --- a/src/main/java/refinedstorage/tile/TileFluidInterface.java +++ b/src/main/java/refinedstorage/tile/TileFluidInterface.java @@ -110,7 +110,7 @@ public class TileFluidInterface extends TileNode implements IComparable { } } - FluidStack stack = out.getFluids()[0]; + FluidStack stack = out.getFluidStackInSlot(0); if (tankOut.getFluid() != null && (stack == null || (tankOut.getFluid().getFluid() != stack.getFluid()))) { FluidStack remainder = tankOut.drainInternal(Fluid.BUCKET_VOLUME, true); diff --git a/src/main/java/refinedstorage/tile/config/IFilterable.java b/src/main/java/refinedstorage/tile/config/IFilterable.java index 5f605f3f2..b6e6cff2c 100755 --- a/src/main/java/refinedstorage/tile/config/IFilterable.java +++ b/src/main/java/refinedstorage/tile/config/IFilterable.java @@ -68,7 +68,7 @@ public interface IFilterable { int slots = 0; for (int i = 0; i < filters.getSlots(); ++i) { - FluidStack slot = filters.getFluids()[i]; + FluidStack slot = filters.getFluidStackInSlot(i); if (slot != null) { slots++; @@ -82,7 +82,7 @@ public interface IFilterable { return slots == 0; } else if (mode == BLACKLIST) { for (int i = 0; i < filters.getSlots(); ++i) { - FluidStack slot = filters.getFluids()[i]; + FluidStack slot = filters.getFluidStackInSlot(i); if (slot != null && CompareUtils.compareStack(slot, stack, compare)) { return false; @@ -95,6 +95,13 @@ public interface IFilterable { return false; } + static boolean isEmpty(IItemHandler filter) { + for (int i = 0; i < filter.getSlots(); i++) + if (filter.getStackInSlot(i) != null) + return false; + return true; + } + void setMode(int mode); int getMode(); diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index 1dcfc5c36..5eb672641 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -96,7 +96,7 @@ sidebutton.refinedstorage:mode=Mode sidebutton.refinedstorage:mode.whitelist=Whitelist sidebutton.refinedstorage:mode.blacklist=Blacklist -sidebutton.refinedstorage:iomode=IOMode +sidebutton.refinedstorage:iomode=IO Mode sidebutton.refinedstorage:iomode.insert=Insert into network sidebutton.refinedstorage:iomode.extract=Extract from network From 9cfb33c80553c1b06265a76606585d04cf9604f3 Mon Sep 17 00:00:00 2001 From: way2muchnoise Date: Sun, 18 Sep 2016 15:21:57 +0200 Subject: [PATCH 2/2] improve style begone comments --- .../tile/TileDiskManipulator.java | 72 +++++++++---------- .../tile/config/IFilterable.java | 6 +- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/src/main/java/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/refinedstorage/tile/TileDiskManipulator.java index 27ab7703b..b28903da3 100644 --- a/src/main/java/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/refinedstorage/tile/TileDiskManipulator.java @@ -51,7 +51,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; private static final String NBT_TYPE = "Type"; - private static final String NBT_IO_MOD = "IOMode"; + private static final String NBT_IO_MODE = "IOMode"; private int compare = 0; private int mode = IFilterable.WHITELIST; @@ -193,23 +193,23 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte return; } ItemStack extracted = null; - int ii = 0; + int i = 0; do { ItemStack stack = null; - while (storage.getItems().size() > ii && stack == null) { - stack = storage.getItems().get(ii++); + while (storage.getItems().size() > i && stack == null) { + stack = storage.getItems().get(i++); } if (stack != null) { extracted = storage.extractItem(stack, 1, compare); } - } while (storage.getItems().size() > ii && extracted == null); + } while (storage.getItems().size() > i && extracted == null); if (extracted == null) { moveDriveToOutput(slot); return; } - ItemStack leftOver = network.insertItem(extracted, extracted.stackSize, false); - if (leftOver != null) { - storage.insertItem(leftOver, leftOver.stackSize, false); + ItemStack remainder = network.insertItem(extracted, extracted.stackSize, false); + if (remainder != null) { + storage.insertItem(remainder, remainder.stackSize, false); } } @@ -219,7 +219,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte return; } ItemStack extracted = null; - int ii = 0; + int i = 0; if (IFilterable.isEmpty(itemFilters)) { ItemStack toExtract = null; ArrayList networkItems = new ArrayList<>(network.getItemStorage().getStacks()); @@ -231,10 +231,10 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte extracted = network.extractItem(toExtract, 1, compare); } } else { - while (itemFilters.getSlots() > ii && extracted == null) { + while (itemFilters.getSlots() > i && extracted == null) { ItemStack stack = null; - while (itemFilters.getSlots() > ii && stack == null) { - stack = itemFilters.getStackInSlot(ii++); + while (itemFilters.getSlots() > i && stack == null) { + stack = itemFilters.getStackInSlot(i++); } if (stack != null) { extracted = network.extractItem(stack, 1, compare); @@ -246,9 +246,9 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte moveDriveToOutput(slot); return; } - ItemStack leftOver = storage.insertItem(extracted, extracted.stackSize, false); - if (leftOver != null) { - network.insertItem(leftOver, leftOver.stackSize, false); + ItemStack remainder = storage.insertItem(extracted, extracted.stackSize, false); + if (remainder != null) { + network.insertItem(remainder, remainder.stackSize, false); } } @@ -258,23 +258,23 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte return; } FluidStack extracted = null; - int ii = 0; + int i = 0; do { - FluidStack stack = storage.getStacks().get(ii); - while (stack == null && storage.getStacks().size() > ii) { - ii++; + FluidStack stack = storage.getStacks().get(i); + while (stack == null && storage.getStacks().size() > i) { + i++; } if (stack != null) { extracted = storage.extractFluid(stack, 1, compare); } - } while (extracted == null && storage.getStacks().size() > ii); + } while (extracted == null && storage.getStacks().size() > i); if (extracted == null) { moveDriveToOutput(slot); return; } - FluidStack leftOver = network.insertFluid(extracted, extracted.amount, false); - if (leftOver != null) { - storage.insertFluid(leftOver, leftOver.amount, false); + FluidStack remainder = network.insertFluid(extracted, extracted.amount, false); + if (remainder != null) { + storage.insertFluid(remainder, remainder.amount, false); } } @@ -284,22 +284,22 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte return; } FluidStack extracted = null; - int ii = 0; + int i = 0; if (IFilterable.isEmpty(itemFilters)) { FluidStack toExtract = null; ArrayList networkFluids = new ArrayList<>(network.getFluidStorage().getStacks()); - int iii = 0; - while ((toExtract == null || toExtract.amount == 0) && iii < networkFluids.size()) { - toExtract = networkFluids.get(iii++); + int j = 0; + while ((toExtract == null || toExtract.amount == 0) && j < networkFluids.size()) { + toExtract = networkFluids.get(j++); } if (toExtract != null) { extracted = network.extractFluid(toExtract, 1, compare); } } else { - while (fluidFilters.getSlots() > ii && extracted == null) { + while (fluidFilters.getSlots() > i && extracted == null) { FluidStack stack = null; - while (fluidFilters.getSlots() > ii && stack == null) { - stack = fluidFilters.getFluidStackInSlot(ii++); + while (fluidFilters.getSlots() > i && stack == null) { + stack = fluidFilters.getFluidStackInSlot(i++); } if (stack != null) { extracted = network.extractFluid(stack, 1, compare); @@ -311,9 +311,9 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte moveDriveToOutput(slot); return; } - FluidStack leftOver = storage.insertFluid(extracted, extracted.amount, false); - if (leftOver != null) { - network.insertFluid(leftOver, leftOver.amount, false); + FluidStack remainder = storage.insertFluid(extracted, extracted.amount, false); + if (remainder != null) { + network.insertFluid(remainder, remainder.amount, false); } } @@ -401,8 +401,8 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte type = tag.getInteger(NBT_TYPE); } - if (tag.hasKey(NBT_IO_MOD)) { - ioMode = tag.getInteger(NBT_IO_MOD); + if (tag.hasKey(NBT_IO_MODE)) { + ioMode = tag.getInteger(NBT_IO_MODE); } } @@ -417,7 +417,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_MODE, mode); tag.setInteger(NBT_TYPE, type); - tag.setInteger(NBT_IO_MOD, ioMode); + tag.setInteger(NBT_IO_MODE, ioMode); return tag; } diff --git a/src/main/java/refinedstorage/tile/config/IFilterable.java b/src/main/java/refinedstorage/tile/config/IFilterable.java index b6e6cff2c..8ca11e802 100755 --- a/src/main/java/refinedstorage/tile/config/IFilterable.java +++ b/src/main/java/refinedstorage/tile/config/IFilterable.java @@ -96,9 +96,11 @@ public interface IFilterable { } static boolean isEmpty(IItemHandler filter) { - for (int i = 0; i < filter.getSlots(); i++) - if (filter.getStackInSlot(i) != null) + for (int i = 0; i < filter.getSlots(); i++) { + if (filter.getStackInSlot(i) != null) { return false; + } + } return true; }