adds ID sorting option, forward port 7ceea1d6a6b9e40ed7ba889e7180fb9b313fb2c6
This commit is contained in:
@@ -51,6 +51,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
|
||||
|
||||
public static final int SORTING_TYPE_QUANTITY = 0;
|
||||
public static final int SORTING_TYPE_NAME = 1;
|
||||
public static final int SORTING_TYPE_ID= 2;
|
||||
|
||||
public static final int SEARCH_BOX_MODE_NORMAL = 0;
|
||||
public static final int SEARCH_BOX_MODE_NORMAL_AUTOSELECTED = 1;
|
||||
@@ -559,7 +560,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
|
||||
}
|
||||
|
||||
public static boolean isValidSortingType(int type) {
|
||||
return type == SORTING_TYPE_QUANTITY || type == SORTING_TYPE_NAME;
|
||||
return type == SORTING_TYPE_QUANTITY || type == SORTING_TYPE_NAME || type == SORTING_TYPE_ID;
|
||||
}
|
||||
|
||||
public static boolean isValidSortingDirection(int direction) {
|
||||
|
@@ -11,6 +11,8 @@ import com.raoulvdberge.refinedstorage.container.ContainerGrid;
|
||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
||||
import com.raoulvdberge.refinedstorage.gui.Scrollbar;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.filtering.GridFilterParser;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.sorting.GridSorting;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.sorting.GridSortingID;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.sorting.GridSortingName;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.sorting.GridSortingQuantity;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.GridStackFluid;
|
||||
@@ -45,8 +47,9 @@ import java.util.concurrent.ThreadLocalRandom;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class GuiGrid extends GuiBase implements IGridDisplay {
|
||||
private static final GridSortingQuantity SORTING_QUANTITY = new GridSortingQuantity();
|
||||
private static final GridSortingName SORTING_NAME = new GridSortingName();
|
||||
private static final GridSorting SORTING_QUANTITY = new GridSortingQuantity();
|
||||
private static final GridSorting SORTING_NAME = new GridSortingName();
|
||||
private static final GridSorting SORTING_ID = new GridSortingID();
|
||||
|
||||
public static final ListMultimap<Item, GridStackItem> ITEMS = Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
|
||||
public static final ListMultimap<Fluid, GridStackFluid> FLUIDS = Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
|
||||
@@ -187,11 +190,14 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
|
||||
|
||||
SORTING_NAME.setSortingDirection(grid.getSortingDirection());
|
||||
SORTING_QUANTITY.setSortingDirection(grid.getSortingDirection());
|
||||
SORTING_ID.setSortingDirection(grid.getSortingDirection());
|
||||
|
||||
stacks.sort(SORTING_NAME);
|
||||
|
||||
if (grid.getSortingType() == NetworkNodeGrid.SORTING_TYPE_QUANTITY) {
|
||||
stacks.sort(SORTING_QUANTITY);
|
||||
} else if (grid.getSortingType() == NetworkNodeGrid.SORTING_TYPE_ID) {
|
||||
stacks.sort(SORTING_ID);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,28 @@
|
||||
package com.raoulvdberge.refinedstorage.gui.grid.sorting;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.IGridStack;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class GridSortingID extends GridSorting {
|
||||
@Override
|
||||
public int compare(IGridStack left, IGridStack right) {
|
||||
int x = left.getHash();
|
||||
int y = right.getHash();
|
||||
if (left.getIngredient() instanceof ItemStack && right.getIngredient() instanceof ItemStack) {
|
||||
x = Item.getIdFromItem(((ItemStack) left.getIngredient()).getItem());
|
||||
y = Item.getIdFromItem(((ItemStack) right.getIngredient()).getItem());
|
||||
}
|
||||
|
||||
if (x != y) {
|
||||
if (sortingDirection == NetworkNodeGrid.SORTING_DIRECTION_DESCENDING) {
|
||||
return Integer.compare(x, y);
|
||||
} else if (sortingDirection == NetworkNodeGrid.SORTING_DIRECTION_ASCENDING) {
|
||||
return Integer.compare(y, x);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
@@ -1,6 +1,7 @@
|
||||
package com.raoulvdberge.refinedstorage.gui.sidebutton;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
|
||||
import com.raoulvdberge.refinedstorage.block.EnumGridType;
|
||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.IGrid;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
@@ -31,6 +32,12 @@ public class SideButtonGridSortingType extends SideButton {
|
||||
if (type == NetworkNodeGrid.SORTING_TYPE_QUANTITY) {
|
||||
type = NetworkNodeGrid.SORTING_TYPE_NAME;
|
||||
} else if (type == NetworkNodeGrid.SORTING_TYPE_NAME) {
|
||||
if (grid.getType() == EnumGridType.FLUID) {
|
||||
type = NetworkNodeGrid.SORTING_TYPE_QUANTITY;
|
||||
} else {
|
||||
type = NetworkNodeGrid.SORTING_TYPE_ID;
|
||||
}
|
||||
} else if (type == NetworkNodeGrid.SORTING_TYPE_ID) {
|
||||
type = NetworkNodeGrid.SORTING_TYPE_QUANTITY;
|
||||
}
|
||||
|
||||
|
@@ -123,6 +123,7 @@ sidebutton.refinedstorage:grid.sorting.direction.1=Descending
|
||||
sidebutton.refinedstorage:grid.sorting.type=Sorting Type
|
||||
sidebutton.refinedstorage:grid.sorting.type.0=Quantity
|
||||
sidebutton.refinedstorage:grid.sorting.type.1=Name
|
||||
sidebutton.refinedstorage:grid.sorting.type.2=ID
|
||||
sidebutton.refinedstorage:grid.search_box_mode=Search Box Mode
|
||||
sidebutton.refinedstorage:grid.search_box_mode.0=Normal
|
||||
sidebutton.refinedstorage:grid.search_box_mode.1=Normal (autoselected)
|
||||
|
Reference in New Issue
Block a user