diff --git a/CHANGELOG.md b/CHANGELOG.md index 1da8bb612..be19baed6 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Refined Storage Changelog +### 1.5.33 +- Added Crafter Manager (raoulvdberge) +- Fixed Disk Manipulator not extracting items (ineternet) +- Various internal refactors (raoulvdberge) + ### 1.5.32 - Added Spanish translation (Samuelrock) - Fixed issue where the Pattern Grid can only overwrite patterns when blank ones are present (ineternet) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafterManager.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafterManager.java index 0f7abc5a3..91b8064f8 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafterManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafterManager.java @@ -22,11 +22,11 @@ import java.util.List; import java.util.Map; public class ContainerCrafterManager extends ContainerBase { - public class Listener implements IContainerListener { + public class CrafterManagerListener implements IContainerListener { private IContainerListener base; private boolean receivedContainerData; - public Listener(IContainerListener base) { + public CrafterManagerListener(IContainerListener base) { this.base = base; } @@ -35,16 +35,16 @@ public class ContainerCrafterManager extends ContainerBase { } @Override - public void sendAllContents(Container containerToSend, NonNullList itemsList) { + public void sendAllContents(Container container, NonNullList items) { if (receivedContainerData) { - base.sendAllContents(containerToSend, itemsList); + base.sendAllContents(container, items); } } @Override - public void sendSlotContents(Container containerToSend, int slotInd, ItemStack stack) { + public void sendSlotContents(Container container, int slotInd, ItemStack stack) { if (receivedContainerData) { - base.sendSlotContents(containerToSend, slotInd, stack); + base.sendSlotContents(container, slotInd, stack); } } @@ -53,13 +53,13 @@ public class ContainerCrafterManager extends ContainerBase { } @Override - public void sendWindowProperty(Container containerIn, int varToUpdate, int newValue) { - base.sendWindowProperty(containerIn, varToUpdate, newValue); + public void sendWindowProperty(Container container, int varToUpdate, int newValue) { + base.sendWindowProperty(container, varToUpdate, newValue); } @Override - public void sendAllWindowProperties(Container containerIn, IInventory inventory) { - base.sendAllWindowProperties(containerIn, inventory); + public void sendAllWindowProperties(Container container, IInventory inventory) { + base.sendAllWindowProperties(container, inventory); } } @@ -69,7 +69,7 @@ public class ContainerCrafterManager extends ContainerBase { @Override public void addListener(IContainerListener listener) { - super.addListener(new Listener(listener)); + super.addListener(new CrafterManagerListener(listener)); } public List getListeners() { @@ -116,7 +116,6 @@ public class ContainerCrafterManager extends ContainerBase { int x = 8; for (Map.Entry entry : containerData.entrySet()) { - // @todo: Test on servers boolean visible = I18n.format(entry.getKey()).toLowerCase().contains(display.getSearchFieldText().toLowerCase()); IItemHandlerModifiable dummy; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewBase.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewBase.java index ad4b151a5..8dd1795c6 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewBase.java @@ -8,44 +8,37 @@ import com.raoulvdberge.refinedstorage.gui.grid.sorting.GridSorterName; import com.raoulvdberge.refinedstorage.gui.grid.sorting.IGridSorter; import com.raoulvdberge.refinedstorage.gui.grid.stack.IGridStack; -import java.util.Iterator; -import java.util.List; +import java.util.*; import java.util.function.Predicate; public abstract class GridViewBase implements IGridView { - protected void sortAndFilter(GuiGrid gui, List stacks, List sorters) { - IGrid grid = gui.getGrid(); + private GuiGrid gui; + private boolean canCraft; - List> filters = GridFilterParser.getFilters( - grid, - gui.getSearchField() != null ? gui.getSearchField().getText() : "", - (grid.getTabSelected() >= 0 && grid.getTabSelected() < grid.getTabs().size()) ? grid.getTabs().get(grid.getTabSelected()).getFilters() : grid.getFilters() - ); + private List sorters; + private SorterThread sorterThread = new SorterThread(); - Iterator it = stacks.iterator(); + private List stacks; + protected Map map = new HashMap<>(); - while (it.hasNext()) { - IGridStack stack = it.next(); - - for (Predicate filter : filters) { - if (!filter.test(stack)) { - it.remove(); - - break; - } - } - } - - GridSorterDirection sortingDirection = grid.getSortingDirection() == IGrid.SORTING_DIRECTION_DESCENDING ? GridSorterDirection.DESCENDING : GridSorterDirection.ASCENDING; - - stacks.sort((left, right) -> new GridSorterName().compare(left, right, sortingDirection)); - - sorters.stream().filter(s -> s.isApplicable(grid)).forEach(s -> { - stacks.sort((left, right) -> s.compare(left, right, sortingDirection)); - }); + public GridViewBase(GuiGrid gui, List sorters) { + this.gui = gui; + this.sorters = sorters; } - protected void updateUI(GuiGrid gui) { + @Override + public List getStacks() { + return stacks; + } + + @Override + public void sort() { + if (!sorterThread.sorting) { + new Thread(sorterThread, "RS grid sorting").start(); + } + } + + private void updateUI(GuiGrid gui) { if (gui.getScrollbar() != null) { gui.getScrollbar().setEnabled(gui.getRows() > gui.getVisibleRows()); gui.getScrollbar().setMaxOffset(gui.getRows() - gui.getVisibleRows()); @@ -59,4 +52,65 @@ public abstract class GridViewBase implements IGridView { gui.getTabPageRight().visible = gui.getGrid().getTotalTabPages() > 0; } } + + @Override + public void setCanCraft(boolean canCraft) { + this.canCraft = canCraft; + } + + @Override + public boolean canCraft() { + return canCraft; + } + + private class SorterThread implements Runnable { + private boolean sorting; + + @Override + public void run() { + this.sorting = true; + + List stacks = new ArrayList<>(); + + if (gui.getGrid().isActive()) { + stacks.addAll(map.values()); + + IGrid grid = gui.getGrid(); + + List> filters = GridFilterParser.getFilters( + grid, + gui.getSearchField() != null ? gui.getSearchField().getText() : "", + (grid.getTabSelected() >= 0 && grid.getTabSelected() < grid.getTabs().size()) ? grid.getTabs().get(grid.getTabSelected()).getFilters() : grid.getFilters() + ); + + Iterator it = stacks.iterator(); + + while (it.hasNext()) { + IGridStack stack = it.next(); + + for (Predicate filter : filters) { + if (!filter.test(stack)) { + it.remove(); + + break; + } + } + } + + GridSorterDirection sortingDirection = grid.getSortingDirection() == IGrid.SORTING_DIRECTION_DESCENDING ? GridSorterDirection.DESCENDING : GridSorterDirection.ASCENDING; + + stacks.sort((left, right) -> new GridSorterName().compare(left, right, sortingDirection)); + + sorters.stream().filter(s -> s.isApplicable(grid)).forEach(s -> { + stacks.sort((left, right) -> s.compare(left, right, sortingDirection)); + }); + } + + GridViewBase.this.stacks = stacks; + + updateUI(gui); + + this.sorting = false; + } + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewFluid.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewFluid.java index e0d3fe75f..e9db94a35 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewFluid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewFluid.java @@ -5,26 +5,11 @@ import com.raoulvdberge.refinedstorage.gui.grid.sorting.IGridSorter; import com.raoulvdberge.refinedstorage.gui.grid.stack.GridStackFluid; import com.raoulvdberge.refinedstorage.gui.grid.stack.IGridStack; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; public class GridViewFluid extends GridViewBase { - private Map map = new HashMap<>(); - private List stacks; - private GuiGrid gui; - private List sorters; - private boolean canCraft; - public GridViewFluid(GuiGrid gui, List sorters) { - this.sorters = sorters; - this.gui = gui; - } - - @Override - public List getStacks() { - return stacks; + super(gui, sorters); } @Override @@ -32,16 +17,16 @@ public class GridViewFluid extends GridViewBase { map.clear(); for (IGridStack stack : stacks) { - map.put(stack.getHash(), (GridStackFluid) stack); + map.put(stack.getHash(), stack); } } @Override public void postChange(IGridStack stack, int delta) { - GridStackFluid existing = map.get(stack.getHash()); + GridStackFluid existing = (GridStackFluid) map.get(stack.getHash()); if (existing == null) { - map.put(stack.getHash(), (GridStackFluid) stack); + map.put(stack.getHash(), stack); } else { if (existing.getStack().amount + delta <= 0) { map.remove(existing.getHash()); @@ -52,29 +37,4 @@ public class GridViewFluid extends GridViewBase { existing.setTrackerEntry(stack.getTrackerEntry()); } } - - @Override - public void setCanCraft(boolean canCraft) { - this.canCraft = canCraft; - } - - @Override - public boolean canCraft() { - return canCraft; - } - - @Override - public void sort() { - List stacks = new ArrayList<>(); - - if (gui.getGrid().isActive()) { - stacks.addAll(map.values()); - - new Thread(() -> sortAndFilter(gui, stacks, sorters)).start(); - } - - this.stacks = stacks; - - updateUI(gui); - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewItem.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewItem.java index 5ae067b50..004ff857e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/view/GridViewItem.java @@ -5,26 +5,11 @@ import com.raoulvdberge.refinedstorage.gui.grid.sorting.IGridSorter; import com.raoulvdberge.refinedstorage.gui.grid.stack.GridStackItem; import com.raoulvdberge.refinedstorage.gui.grid.stack.IGridStack; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; public class GridViewItem extends GridViewBase { - private Map map = new HashMap<>(); - private List stacks; - private GuiGrid gui; - private List sorters; - private boolean canCraft; - public GridViewItem(GuiGrid gui, List sorters) { - this.gui = gui; - this.sorters = sorters; - } - - @Override - public List getStacks() { - return stacks; + super(gui, sorters); } @Override @@ -37,18 +22,18 @@ public class GridViewItem extends GridViewBase { continue; } - map.put(stack.getHash(), (GridStackItem) stack); + map.put(stack.getHash(), stack); } } @Override public void postChange(IGridStack stack, int delta) { - GridStackItem existing = map.get(stack.getHash()); + GridStackItem existing = (GridStackItem) map.get(stack.getHash()); if (existing == null) { ((GridStackItem) stack).getStack().setCount(delta); - map.put(stack.getHash(), (GridStackItem) stack); + map.put(stack.getHash(), stack); } else { if (existing.getStack().getCount() + delta <= 0) { if (existing.isCraftable()) { @@ -69,29 +54,4 @@ public class GridViewItem extends GridViewBase { existing.setTrackerEntry(stack.getTrackerEntry()); } } - - @Override - public void setCanCraft(boolean canCraft) { - this.canCraft = canCraft; - } - - @Override - public boolean canCraft() { - return canCraft; - } - - @Override - public void sort() { - List stacks = new ArrayList<>(); - - if (gui.getGrid().isActive()) { - stacks.addAll(map.values()); - - new Thread(() -> sortAndFilter(gui, stacks, sorters)).start(); - } - - this.stacks = stacks; - - updateUI(gui); - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCrafterManagerRequestSlotData.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCrafterManagerRequestSlotData.java index 5a91987d0..d55d2fc5c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCrafterManagerRequestSlotData.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCrafterManagerRequestSlotData.java @@ -19,11 +19,11 @@ public class MessageCrafterManagerRequestSlotData extends MessageHandlerPlayerTo protected void handle(MessageCrafterManagerRequestSlotData message, EntityPlayerMP player) { if (player.openContainer instanceof ContainerCrafterManager) { for (IContainerListener listener : ((ContainerCrafterManager) player.openContainer).getListeners()) { - ContainerCrafterManager.Listener crafterListener = (ContainerCrafterManager.Listener) listener; + ContainerCrafterManager.CrafterManagerListener crafterCrafterManagerListener = (ContainerCrafterManager.CrafterManagerListener) listener; - if (crafterListener.getPlayer() == player) { - crafterListener.setReceivedContainerData(); - crafterListener.sendAllContents(player.openContainer, player.openContainer.getInventory()); + if (crafterCrafterManagerListener.getPlayer() == player) { + crafterCrafterManagerListener.setReceivedContainerData(); + crafterCrafterManagerListener.sendAllContents(player.openContainer, player.openContainer.getInventory()); } } }