From 0bea6d701efb7b3f57641846106e28bed9878134 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sat, 25 Nov 2017 00:22:03 +0100 Subject: [PATCH] Removed craft-only mode for the Exporter and Fixed Exporter with Stack Upgrade not working correctly in Regulator Mode --- CHANGELOG.md | 2 + .../network/node/NetworkNodeExporter.java | 97 ++++++------------- .../refinedstorage/gui/GuiExporter.java | 6 +- .../SideButtonExporterCraftOnly.java | 27 ------ .../refinedstorage/tile/TileExporter.java | 8 +- .../refinedstorage/util/TimeUtils.java | 2 +- 6 files changed, 37 insertions(+), 105 deletions(-) delete mode 100644 src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonExporterCraftOnly.java diff --git a/CHANGELOG.md b/CHANGELOG.md index eb88516ea..9b921bed8 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ### 1.5.24 - The Grid now displays last modified information (player name and date) and size on tooltips of stacks (raoulvdberge) +- Removed craft-only mode for the Exporter (raoulvdberge) +- Fixed Exporter with Stack Upgrade not working correctly in Regulator Mode (raoulvdberge) ### 1.5.23 - Fixed duplication bug with autocrafting (raoulvdberge) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java index 4ab720842..740485572 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java @@ -2,7 +2,6 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask; import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; @@ -33,7 +32,6 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy private static final String NBT_COMPARE = "Compare"; private static final String NBT_TYPE = "Type"; private static final String NBT_REGULATOR = "Regulator"; - private static final String NBT_CRAFT_ONLY = "CraftOnly"; private ItemHandlerBase itemFilters = new ItemHandlerBase(9, new ItemHandlerListenerNetworkNode(this)); private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerListenerNetworkNode(this)); @@ -43,9 +41,6 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE; private int type = IType.ITEMS; private boolean regulator = false; - private boolean craftOnly = false; - private ICraftingTask[] craftOnlyTask = new ICraftingTask[9]; - private Integer[] craftOnlyToExtract = new Integer[9]; public NetworkNodeExporter(World world, BlockPos pos) { super(world, pos); @@ -72,11 +67,11 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy if (slot.getItem() == RSItems.FILTER) { for (ItemStack slotInFilter : ItemFilter.getFilterItemsFromCache(slot)) { if (!slotInFilter.isEmpty()) { - doExport(handler, -1, slotInFilter); + doExport(handler, slotInFilter); } } } else { - doExport(handler, i, slot); + doExport(handler, slot); } } } @@ -136,63 +131,40 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy } } - private void doExport(IItemHandler handler, int i, ItemStack slot) { - if (craftOnly && i >= 0) { - if (craftOnlyTask[i] == null) { - craftOnlyTask[i] = network.getCraftingManager().schedule(slot, 1, compare); + private void doExport(IItemHandler handler, ItemStack slot) { + int stackSize = upgrades.getItemInteractCount(); - if (craftOnlyTask[i] != null) { - craftOnlyToExtract[i] = craftOnlyTask[i].getPattern().getQuantityPerRequest(slot, compare); - } - } else if (craftOnlyTask[i].isFinished() && craftOnlyTask[i].getMissing().isEmpty()) { - ItemStack took = network.extractItem(slot, 1, compare, true); + if (regulator) { + int found = 0; - if (took != null && ItemHandlerHelper.insertItem(handler, took, true).isEmpty()) { - took = network.extractItem(slot, 1, compare, false); + for (int index = 0; index < handler.getSlots(); index++) { + ItemStack handlerStack = handler.getStackInSlot(index); - if (took != null) { - ItemHandlerHelper.insertItem(handler, took, false); - - craftOnlyToExtract[i]--; - - if (craftOnlyToExtract[i] <= 0) { - craftOnlyToExtract[i] = null; - craftOnlyTask[i] = null; - } - } - } - } else if (!network.getCraftingManager().getTasks().contains(craftOnlyTask[i])) { - craftOnlyTask[i] = null; - } - } else { - int stackSize = upgrades.getItemInteractCount(); - - if (regulator) { - for (int index = 0; index < handler.getSlots(); index++) { - ItemStack exporterStack = handler.getStackInSlot(index); - - if (API.instance().getComparer().isEqual(slot, exporterStack, compare)) { - if (exporterStack.getCount() >= slot.getCount()) { - return; - } else { - stackSize = upgrades.hasUpgrade(ItemUpgrade.TYPE_STACK) ? slot.getCount() - exporterStack.getCount() : 1; - } - } + if (API.instance().getComparer().isEqual(slot, handlerStack, compare)) { + found += handlerStack.getCount(); } } - ItemStack took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, true); + stackSize = slot.getCount() - found; - if (took == null) { - if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) { - network.getCraftingManager().schedule(slot, 1, compare); - } - } else if (ItemHandlerHelper.insertItem(handler, took, true).isEmpty()) { - took = network.extractItem(slot, upgrades.getItemInteractCount(), compare, false); + if (stackSize <= 0) { + return; + } else if (!upgrades.hasUpgrade(ItemUpgrade.TYPE_STACK)) { + stackSize = 1; + } + } - if (took != null) { - ItemHandlerHelper.insertItem(handler, took, false); - } + ItemStack took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, true); + + if (took == null) { + if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) { + network.getCraftingManager().schedule(slot, 1, compare); + } + } else if (ItemHandlerHelper.insertItem(handler, took, true).isEmpty()) { + took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, false); + + if (took != null) { + ItemHandlerHelper.insertItem(handler, took, false); } } } @@ -237,7 +209,6 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_TYPE, type); tag.setBoolean(NBT_REGULATOR, regulator); - tag.setBoolean(NBT_CRAFT_ONLY, craftOnly); StackUtils.writeItems(itemFilters, 0, tag); StackUtils.writeItems(fluidFilters, 2, tag); @@ -261,10 +232,6 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy regulator = tag.getBoolean(NBT_REGULATOR); } - if (tag.hasKey(NBT_CRAFT_ONLY)) { - craftOnly = tag.getBoolean(NBT_CRAFT_ONLY); - } - StackUtils.readItems(itemFilters, 0, tag); StackUtils.readItems(fluidFilters, 2, tag); } @@ -310,12 +277,4 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy public IItemHandler getFilterInventory() { return getType() == IType.ITEMS ? itemFilters : fluidFilters; } - - public boolean isCraftOnly() { - return craftOnly; - } - - public void setCraftOnly(boolean craftOnly) { - this.craftOnly = craftOnly; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiExporter.java index d344f05bf..89a53a75c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiExporter.java @@ -2,7 +2,10 @@ package com.raoulvdberge.refinedstorage.gui; import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.container.ContainerExporter; -import com.raoulvdberge.refinedstorage.gui.sidebutton.*; +import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonCompare; +import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonExporterRegulator; +import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode; +import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonType; import com.raoulvdberge.refinedstorage.tile.TileExporter; public class GuiExporter extends GuiBase { @@ -21,7 +24,6 @@ public class GuiExporter extends GuiBase { addSideButton(new SideButtonCompare(this, TileExporter.COMPARE, IComparer.COMPARE_OREDICT)); addSideButton(new SideButtonExporterRegulator(this)); - addSideButton(new SideButtonExporterCraftOnly(this)); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonExporterCraftOnly.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonExporterCraftOnly.java deleted file mode 100644 index 1009b490d..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonExporterCraftOnly.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.raoulvdberge.refinedstorage.gui.sidebutton; - -import com.raoulvdberge.refinedstorage.gui.GuiBase; -import com.raoulvdberge.refinedstorage.tile.TileExporter; -import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; -import net.minecraft.util.text.TextFormatting; - -public class SideButtonExporterCraftOnly extends SideButton { - public SideButtonExporterCraftOnly(GuiBase gui) { - super(gui); - } - - @Override - protected void drawButtonIcon(int x, int y) { - gui.drawTexture(x, y, 64 + (TileExporter.CRAFT_ONLY.getValue() ? 16 : 0), 32, 16, 16); - } - - @Override - public String getTooltip() { - return GuiBase.t("sidebutton.refinedstorage:exporter.craft_only") + "\n" + TextFormatting.GRAY + GuiBase.t(TileExporter.CRAFT_ONLY.getValue() ? "gui.yes" : "gui.no"); - } - - @Override - public void actionPerformed() { - TileDataManager.setParameter(TileExporter.CRAFT_ONLY, !TileExporter.CRAFT_ONLY.getValue()); - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java index f08c5b65f..5bb9bf9c3 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileExporter.java @@ -14,7 +14,8 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; -public class TileExporter extends TileNode { +public class +TileExporter extends TileNode { public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); public static final TileDataParameter REGULATOR = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isRegulator(), (t, v) -> { @@ -43,16 +44,11 @@ public class TileExporter extends TileNode { ((ContainerExporter) ((GuiExporter) Minecraft.getMinecraft().currentScreen).inventorySlots).initSlots(); } }); - public static final TileDataParameter CRAFT_ONLY = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isCraftOnly(), (t, v) -> { - t.getNode().setCraftOnly(v); - t.getNode().markDirty(); - }); public TileExporter() { dataManager.addWatchedParameter(COMPARE); dataManager.addWatchedParameter(TYPE); dataManager.addWatchedParameter(REGULATOR); - dataManager.addWatchedParameter(CRAFT_ONLY); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/util/TimeUtils.java b/src/main/java/com/raoulvdberge/refinedstorage/util/TimeUtils.java index 2e54bfa2d..b4a8115d5 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/util/TimeUtils.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/util/TimeUtils.java @@ -13,7 +13,7 @@ public final class TimeUtils { public static String getAgo(long ago, String by) { long diff = System.currentTimeMillis() - ago; - if (diff < SECOND * 5) { + if (diff < SECOND * 10) { return I18n.format("misc.refinedstorage:last_modified.just_now", by); } else if (diff < MINUTE) { return I18n.format("misc.refinedstorage:last_modified.second" + ((diff / SECOND) > 1 ? "s" : ""), diff / SECOND, by);