Added support for more than 4 grid tabs in the Grid by putting filters IN filters, fixes #1448

This commit is contained in:
raoulvdberge
2017-09-06 15:12:24 +02:00
parent ade8125a6e
commit fefdfcd491
16 changed files with 254 additions and 67 deletions

View File

@@ -3,6 +3,7 @@
### 1.5.18 ### 1.5.18
- Added Project E integration for the External Storage on the Transmutation Table (raoulvdberge) - Added Project E integration for the External Storage on the Transmutation Table (raoulvdberge)
- Added Project E integration for the energy values of Solderer items (raoulvdberge) - Added Project E integration for the energy values of Solderer items (raoulvdberge)
- Added support for more than 4 grid tabs in the Grid by putting filters IN filters (raoulvdberge)
- Fixed network not disconnecting when Controller is broken (raoulvdberge) - Fixed network not disconnecting when Controller is broken (raoulvdberge)
- Fixed bug where when multiple Fortune Upgrades are inserted, it chooses the first Fortune Upgrade instead of the highest one (raoulvdberge) - Fixed bug where when multiple Fortune Upgrades are inserted, it chooses the first Fortune Upgrade instead of the highest one (raoulvdberge)
- Fixed some translations having too big "Craft" text (raoulvdberge) - Fixed some translations having too big "Craft" text (raoulvdberge)

View File

@@ -17,6 +17,8 @@ import java.util.List;
* Represents a grid. * Represents a grid.
*/ */
public interface IGrid { public interface IGrid {
int TABS_PER_PAGE = 6;
int SORTING_DIRECTION_ASCENDING = 0; int SORTING_DIRECTION_ASCENDING = 0;
int SORTING_DIRECTION_DESCENDING = 1; int SORTING_DIRECTION_DESCENDING = 1;
@@ -96,6 +98,16 @@ public interface IGrid {
*/ */
int getTabSelected(); int getTabSelected();
/**
* @return the current page that the tab is on
*/
int getTabPage();
/**
* @return the total amount of tab pages
*/
int getTotalTabPages();
/** /**
* @return the size mode * @return the size mode
*/ */
@@ -131,6 +143,11 @@ public interface IGrid {
*/ */
void onTabSelectionChanged(int tab); void onTabSelectionChanged(int tab);
/**
* @param page the new selected page
*/
void onTabPageChanged(int page);
/** /**
* @return the filters * @return the filters
*/ */

View File

@@ -51,6 +51,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
public static final String NBT_SEARCH_BOX_MODE = "SearchBoxMode"; public static final String NBT_SEARCH_BOX_MODE = "SearchBoxMode";
public static final String NBT_OREDICT_PATTERN = "OredictPattern"; public static final String NBT_OREDICT_PATTERN = "OredictPattern";
public static final String NBT_TAB_SELECTED = "TabSelected"; public static final String NBT_TAB_SELECTED = "TabSelected";
public static final String NBT_TAB_PAGE = "TabPage";
public static final String NBT_SIZE = "Size"; public static final String NBT_SIZE = "Size";
public static final String NBT_PROCESSING_PATTERN = "ProcessingPattern"; public static final String NBT_PROCESSING_PATTERN = "ProcessingPattern";
public static final String NBT_BLOCKING_PATTERN = "BlockingPattern"; public static final String NBT_BLOCKING_PATTERN = "BlockingPattern";
@@ -90,6 +91,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
private int size = SIZE_STRETCH; private int size = SIZE_STRETCH;
private int tabSelected = -1; private int tabSelected = -1;
private int tabPage = 0;
private boolean oredictPattern = false; private boolean oredictPattern = false;
private boolean processingPattern = false; private boolean processingPattern = false;
@@ -135,6 +137,10 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
this.tabSelected = tabSelected; this.tabSelected = tabSelected;
} }
public void setTabPage(int page) {
this.tabPage = page;
}
public void setSize(int size) { public void setSize(int size) {
this.size = size; this.size = size;
} }
@@ -522,6 +528,16 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
return world.isRemote ? TileGrid.TAB_SELECTED.getValue() : tabSelected; return world.isRemote ? TileGrid.TAB_SELECTED.getValue() : tabSelected;
} }
@Override
public int getTabPage() {
return world.isRemote ? TileGrid.TAB_PAGE.getValue() : Math.min(tabPage, getTotalTabPages());
}
@Override
public int getTotalTabPages() {
return (int) Math.floor((float) tabs.size() / (float) IGrid.TABS_PER_PAGE);
}
@Override @Override
public void onViewTypeChanged(int type) { public void onViewTypeChanged(int type) {
TileDataManager.setParameter(TileGrid.VIEW_TYPE, type); TileDataManager.setParameter(TileGrid.VIEW_TYPE, type);
@@ -552,6 +568,13 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
TileDataManager.setParameter(TileGrid.TAB_SELECTED, tab); TileDataManager.setParameter(TileGrid.TAB_SELECTED, tab);
} }
@Override
public void onTabPageChanged(int page) {
if (page >= 0 && page <= getTotalTabPages()) {
TileDataManager.setParameter(TileGrid.TAB_PAGE, page);
}
}
@Override @Override
public boolean hasConnectivityState() { public boolean hasConnectivityState() {
return true; return true;
@@ -569,6 +592,10 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
if (tag.hasKey(NBT_TAB_SELECTED)) { if (tag.hasKey(NBT_TAB_SELECTED)) {
tabSelected = tag.getInteger(NBT_TAB_SELECTED); tabSelected = tag.getInteger(NBT_TAB_SELECTED);
} }
if (tag.hasKey(NBT_TAB_PAGE)) {
tabPage = tag.getInteger(NBT_TAB_PAGE);
}
} }
@Override @Override
@@ -586,6 +613,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
StackUtils.writeItems(matrixProcessing, 3, tag); StackUtils.writeItems(matrixProcessing, 3, tag);
tag.setInteger(NBT_TAB_SELECTED, tabSelected); tag.setInteger(NBT_TAB_SELECTED, tabSelected);
tag.setInteger(NBT_TAB_PAGE, tabPage);
return tag; return tag;
} }

View File

@@ -197,10 +197,6 @@ public abstract class GuiBase extends GuiContainer {
} }
} }
public GuiButton addButton(int x, int y, int w, int h, String text) {
return addButton(x, y, w, h, text, true);
}
public GuiCheckBox addCheckBox(int x, int y, String text, boolean checked) { public GuiCheckBox addCheckBox(int x, int y, String text, boolean checked) {
GuiCheckBox checkBox = new GuiCheckBox(lastButtonId++, x, y, text, checked); GuiCheckBox checkBox = new GuiCheckBox(lastButtonId++, x, y, text, checked);
@@ -209,9 +205,14 @@ public abstract class GuiBase extends GuiContainer {
return checkBox; return checkBox;
} }
public GuiButton addButton(int x, int y, int w, int h, String text, boolean enabled) { public GuiButton addButton(int x, int y, int w, int h, String text) {
return addButton(x, y, w, h, text, true, true);
}
public GuiButton addButton(int x, int y, int w, int h, String text, boolean enabled, boolean visible) {
GuiButton button = new GuiButton(lastButtonId++, x, y, w, h, text); GuiButton button = new GuiButton(lastButtonId++, x, y, w, h, text);
button.enabled = enabled; button.enabled = enabled;
button.visible = visible;
buttonList.add(button); buttonList.add(button);

View File

@@ -76,8 +76,8 @@ public class GuiCraftingMonitor extends GuiBase {
int cancelButtonWidth = 14 + fontRenderer.getStringWidth(cancel); int cancelButtonWidth = 14 + fontRenderer.getStringWidth(cancel);
int cancelAllButtonWidth = 14 + fontRenderer.getStringWidth(cancelAll); int cancelAllButtonWidth = 14 + fontRenderer.getStringWidth(cancelAll);
cancelButton = addButton(x + 7, y + 113, cancelButtonWidth, 20, cancel, false); cancelButton = addButton(x + 7, y + 113, cancelButtonWidth, 20, cancel, false, true);
cancelAllButton = addButton(x + 7 + cancelButtonWidth + 4, y + 113, cancelAllButtonWidth, 20, cancelAll, false); cancelAllButton = addButton(x + 7 + cancelButtonWidth + 4, y + 113, cancelAllButtonWidth, 20, cancelAll, false, true);
} }
@Override @Override

View File

@@ -70,6 +70,9 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
private GuiCheckBox processingPattern; private GuiCheckBox processingPattern;
private GuiCheckBox blockingPattern; private GuiCheckBox blockingPattern;
private GuiButton tabPageLeft;
private GuiButton tabPageRight;
private IGrid grid; private IGrid grid;
private boolean hadTabs = false; private boolean hadTabs = false;
@@ -121,17 +124,20 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
public void init(int x, int y) { public void init(int x, int y) {
((ContainerGrid) this.inventorySlots).initSlots(); ((ContainerGrid) this.inventorySlots).initSlots();
this.scrollbar = new Scrollbar(174, getTabDelta() + getHeader(), 12, (getVisibleRows() * 18) - 2); this.scrollbar = new Scrollbar(174, getTabHeight() + getHeader(), 12, (getVisibleRows() * 18) - 2);
if (grid instanceof NetworkNodeGrid || grid instanceof TilePortableGrid) { if (grid instanceof NetworkNodeGrid || grid instanceof TilePortableGrid) {
addSideButton(new SideButtonRedstoneMode(this, grid instanceof NetworkNodeGrid ? TileGrid.REDSTONE_MODE : TilePortableGrid.REDSTONE_MODE)); addSideButton(new SideButtonRedstoneMode(this, grid instanceof NetworkNodeGrid ? TileGrid.REDSTONE_MODE : TilePortableGrid.REDSTONE_MODE));
} }
tabPageLeft = addButton(getGuiLeft(), getGuiTop() - 22, 20, 20, "<", true, grid.getTotalTabPages() > 0);
tabPageRight = addButton(getGuiLeft() + getXSize() - 22 - 32, getGuiTop() - 22, 20, 20, ">", true, grid.getTotalTabPages() > 0);
this.konamiOffsetsX = new int[9 * getVisibleRows()]; this.konamiOffsetsX = new int[9 * getVisibleRows()];
this.konamiOffsetsY = new int[9 * getVisibleRows()]; this.konamiOffsetsY = new int[9 * getVisibleRows()];
int sx = x + 80 + 1; int sx = x + 80 + 1;
int sy = y + 6 + 1 + getTabDelta(); int sy = y + 6 + 1 + getTabHeight();
if (searchField == null) { if (searchField == null) {
searchField = new GuiTextField(0, fontRenderer, sx, sy, 88 - 6, fontRenderer.FONT_HEIGHT); searchField = new GuiTextField(0, fontRenderer, sx, sy, 88 - 6, fontRenderer.FONT_HEIGHT);
@@ -146,11 +152,11 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
} }
if (grid.getType() == GridType.PATTERN) { if (grid.getType() == GridType.PATTERN) {
processingPattern = addCheckBox(x + 7, y + getTabDelta() + getHeader() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:processing"), TileGrid.PROCESSING_PATTERN.getValue()); processingPattern = addCheckBox(x + 7, y + getTabHeight() + getHeader() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:processing"), TileGrid.PROCESSING_PATTERN.getValue());
oredictPattern = addCheckBox(processingPattern.x + processingPattern.width + 5, y + getTabDelta() + getHeader() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:oredict"), TileGrid.OREDICT_PATTERN.getValue()); oredictPattern = addCheckBox(processingPattern.x + processingPattern.width + 5, y + getTabHeight() + getHeader() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:oredict"), TileGrid.OREDICT_PATTERN.getValue());
if (((NetworkNodeGrid) grid).isProcessingPattern()) { if (((NetworkNodeGrid) grid).isProcessingPattern()) {
blockingPattern = addCheckBox(oredictPattern.x + oredictPattern.width + 5, y + getTabDelta() + getHeader() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:blocking"), TileGrid.BLOCKING_PATTERN.getValue()); blockingPattern = addCheckBox(oredictPattern.x + oredictPattern.width + 5, y + getTabHeight() + getHeader() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:blocking"), TileGrid.BLOCKING_PATTERN.getValue());
} }
} }
@@ -223,6 +229,9 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
scrollbar.setEnabled(getRows() > getVisibleRows()); scrollbar.setEnabled(getRows() > getVisibleRows());
scrollbar.setMaxOffset(getRows() - getVisibleRows()); scrollbar.setMaxOffset(getRows() - getVisibleRows());
} }
tabPageLeft.visible = grid.getTotalTabPages() > 0;
tabPageRight.visible = grid.getTotalTabPages() > 0;
} }
@Override @Override
@@ -273,7 +282,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
@Override @Override
public int getYPlayerInventory() { public int getYPlayerInventory() {
int yp = getTabDelta() + getHeader() + (getVisibleRows() * 18); int yp = getTabHeight() + getHeader() + (getVisibleRows() * 18);
if (grid.getType() == GridType.NORMAL || grid.getType() == GridType.FLUID) { if (grid.getType() == GridType.NORMAL || grid.getType() == GridType.FLUID) {
yp += 16; yp += 16;
@@ -318,11 +327,11 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
} }
public boolean isOverSlotArea(int mouseX, int mouseY) { public boolean isOverSlotArea(int mouseX, int mouseY) {
return inBounds(7, 19 + getTabDelta(), 162, 18 * getVisibleRows(), mouseX, mouseY); return inBounds(7, 19 + getTabHeight(), 162, 18 * getVisibleRows(), mouseX, mouseY);
} }
private boolean isOverClear(int mouseX, int mouseY) { private boolean isOverClear(int mouseX, int mouseY) {
int y = getTabDelta() + getHeader() + (getVisibleRows() * 18) + 4; int y = getTabHeight() + getHeader() + (getVisibleRows() * 18) + 4;
switch (grid.getType()) { switch (grid.getType()) {
case CRAFTING: case CRAFTING:
@@ -339,22 +348,21 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
} }
private boolean isOverCreatePattern(int mouseX, int mouseY) { private boolean isOverCreatePattern(int mouseX, int mouseY) {
return grid.getType() == GridType.PATTERN && inBounds(172, getTabDelta() + getHeader() + (getVisibleRows() * 18) + 22, 16, 16, mouseX, mouseY) && ((NetworkNodeGrid) grid).canCreatePattern(); return grid.getType() == GridType.PATTERN && inBounds(172, getTabHeight() + getHeader() + (getVisibleRows() * 18) + 22, 16, 16, mouseX, mouseY) && ((NetworkNodeGrid) grid).canCreatePattern();
} }
private int getTabDelta() { private int getTabHeight() {
return !grid.getTabs().isEmpty() ? ContainerGrid.TAB_HEIGHT - 4 : 0; return !grid.getTabs().isEmpty() ? ContainerGrid.TAB_HEIGHT - 4 : 0;
} }
private void drawTab(IGridTab tab, boolean foregroundLayer, int x, int y, int mouseX, int mouseY) { private void drawTab(IGridTab tab, boolean foregroundLayer, int x, int y, int mouseX, int mouseY, int index, int num) {
int i = grid.getTabs().indexOf(tab); boolean selected = index == grid.getTabSelected();
boolean selected = i == grid.getTabSelected();
if ((foregroundLayer && !selected) || (!foregroundLayer && selected)) { if ((foregroundLayer && !selected) || (!foregroundLayer && selected)) {
return; return;
} }
int tx = x + ((ContainerGrid.TAB_WIDTH + 1) * i); int tx = x + ((ContainerGrid.TAB_WIDTH + 1) * num);
int ty = y; int ty = y;
bindTexture("icons.png"); bindTexture("icons.png");
@@ -371,7 +379,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
if (selected) { if (selected) {
uvx = 227; uvx = 227;
if (i > 0) { if (num > 0) {
uvx = 226; uvx = 226;
uvy = 194; uvy = 194;
tbw++; tbw++;
@@ -385,10 +393,10 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
RenderHelper.enableGUIStandardItemLighting(); RenderHelper.enableGUIStandardItemLighting();
drawItem(otx + 6, ty + 8 - (!selected ? 2 : 0), tab.getIcon()); drawItem(otx + 6, ty + 9 - (!selected ? 3 : 0), tab.getIcon());
if (inBounds(tx, ty, ContainerGrid.TAB_WIDTH, ContainerGrid.TAB_HEIGHT, mouseX, mouseY)) { if (inBounds(tx, ty, ContainerGrid.TAB_WIDTH, ContainerGrid.TAB_HEIGHT, mouseX, mouseY)) {
tabHovering = i; tabHovering = index;
} }
} }
@@ -396,8 +404,11 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
public void drawBackground(int x, int y, int mouseX, int mouseY) { public void drawBackground(int x, int y, int mouseX, int mouseY) {
tabHovering = -1; tabHovering = -1;
for (IGridTab tab : grid.getTabs()) { int j = 0;
drawTab(tab, false, x, y, mouseX, mouseY); for (int i = grid.getTabPage() * IGrid.TABS_PER_PAGE; i < (grid.getTabPage() * IGrid.TABS_PER_PAGE) + IGrid.TABS_PER_PAGE; ++i) {
if (i < grid.getTabs().size()) {
drawTab(grid.getTabs().get(i), false, x, y, mouseX, mouseY, i, j++);
}
} }
if (grid.getType() == GridType.CRAFTING) { if (grid.getType() == GridType.CRAFTING) {
@@ -410,12 +421,12 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
bindTexture("gui/grid.png"); bindTexture("gui/grid.png");
} }
int yy = y + getTabDelta(); int yy = y + getTabHeight();
drawTexture(x, yy, 0, 0, screenWidth - (grid.getType() != GridType.FLUID ? 34 : 0), getHeader()); drawTexture(x, yy, 0, 0, screenWidth - (grid.getType() != GridType.FLUID ? 34 : 0), getHeader());
if (grid.getType() != GridType.FLUID) { if (grid.getType() != GridType.FLUID) {
drawTexture(x + screenWidth - 34 + 4, y + getTabDelta(), 197, 0, 30, grid instanceof IPortableGrid ? 114 : 82); drawTexture(x + screenWidth - 34 + 4, y + getTabHeight(), 197, 0, 30, grid instanceof IPortableGrid ? 114 : 82);
} }
int rows = getVisibleRows(); int rows = getVisibleRows();
@@ -441,11 +452,14 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
ty = 2; ty = 2;
} }
drawTexture(x + 172, y + getTabDelta() + getHeader() + (getVisibleRows() * 18) + 22, 240, ty * 16, 16, 16); drawTexture(x + 172, y + getTabHeight() + getHeader() + (getVisibleRows() * 18) + 22, 240, ty * 16, 16, 16);
} }
for (IGridTab tab : grid.getTabs()) { j = 0;
drawTab(tab, true, x, y, mouseX, mouseY); for (int i = grid.getTabPage() * IGrid.TABS_PER_PAGE; i < (grid.getTabPage() * IGrid.TABS_PER_PAGE) + IGrid.TABS_PER_PAGE; ++i) {
if (i < grid.getTabs().size()) {
drawTab(grid.getTabs().get(i), true, x, y, mouseX, mouseY, i, j++);
}
} }
if (searchField != null) { if (searchField != null) {
@@ -455,11 +469,17 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
@Override @Override
public void drawForeground(int mouseX, int mouseY) { public void drawForeground(int mouseX, int mouseY) {
drawString(7, 7 + getTabDelta(), t(grid.getGuiTitle())); drawString(7, 7 + getTabHeight(), t(grid.getGuiTitle()));
drawString(7, getYPlayerInventory() - 12, t("container.inventory")); drawString(7, getYPlayerInventory() - 12, t("container.inventory"));
if (grid.getTotalTabPages() > 0) {
String text = (grid.getTabPage() + 1) + " / " + (grid.getTotalTabPages() + 1);
drawString((int) ((193F - (float) fontRenderer.getStringWidth(text)) / 2F), -16, text, 0xFFFFFF);
}
int x = 8; int x = 8;
int y = 19 + getTabDelta(); int y = 19 + getTabHeight();
this.slotNumber = -1; this.slotNumber = -1;
@@ -532,6 +552,10 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
TileDataManager.setParameter(TileGrid.BLOCKING_PATTERN, blockingPattern.isChecked()); TileDataManager.setParameter(TileGrid.BLOCKING_PATTERN, blockingPattern.isChecked());
} else if (button == processingPattern) { } else if (button == processingPattern) {
TileDataManager.setParameter(TileGrid.PROCESSING_PATTERN, processingPattern.isChecked()); TileDataManager.setParameter(TileGrid.PROCESSING_PATTERN, processingPattern.isChecked());
} else if (button == tabPageLeft) {
grid.onTabPageChanged(grid.getTabPage() - 1);
} else if (button == tabPageRight) {
grid.onTabPageChanged(grid.getTabPage() + 1);
} }
} }
@@ -548,7 +572,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
searchField.mouseClicked(mouseX, mouseY, clickedButton); searchField.mouseClicked(mouseX, mouseY, clickedButton);
if (clickedButton == 1 && inBounds(79, 5 + getTabDelta(), 90, 12, mouseX - guiLeft, mouseY - guiTop)) { if (clickedButton == 1 && inBounds(79, 5 + getTabHeight(), 90, 12, mouseX - guiLeft, mouseY - guiTop)) {
searchField.setText(""); searchField.setText("");
searchField.setFocused(true); searchField.setFocused(true);

View File

@@ -24,6 +24,7 @@ public abstract class SideButton extends GuiButton {
@Override @Override
public void drawButton(Minecraft mc, int mouseX, int mouseY, float partialTicks) { public void drawButton(Minecraft mc, int mouseX, int mouseY, float partialTicks) {
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
GlStateManager.enableAlpha(); GlStateManager.enableAlpha();
hovered = gui.inBounds(x, y, width, height, mouseX, mouseY); hovered = gui.inBounds(x, y, width, height, mouseX, mouseY);

View File

@@ -38,27 +38,7 @@ public class ItemHandlerFilter extends ItemHandlerBase {
ItemStack filter = getStackInSlot(i); ItemStack filter = getStackInSlot(i);
if (!filter.isEmpty()) { if (!filter.isEmpty()) {
int compare = ItemFilter.getCompare(filter); addFilter(filter);
int mode = ItemFilter.getMode(filter);
boolean modFilter = ItemFilter.isModFilter(filter);
ItemHandlerFilterItems items = new ItemHandlerFilterItems(filter);
List<IFilter> filters = new ArrayList<>();
for (ItemStack item : items.getFilteredItems()) {
if (!item.isEmpty()) {
filters.add(new Filter(item, compare, mode, modFilter));
}
}
ItemStack icon = ItemFilter.getIcon(filter);
if (icon.isEmpty()) {
this.filters.addAll(filters);
} else {
tabs.add(new GridTab(filters, ItemFilter.getName(filter), icon));
}
} }
} }
@@ -66,4 +46,30 @@ public class ItemHandlerFilter extends ItemHandlerBase {
GuiGrid.markForSorting(); GuiGrid.markForSorting();
} }
} }
private void addFilter(ItemStack filter) {
int compare = ItemFilter.getCompare(filter);
int mode = ItemFilter.getMode(filter);
boolean modFilter = ItemFilter.isModFilter(filter);
ItemHandlerFilterItems items = new ItemHandlerFilterItems(filter);
List<IFilter> filters = new ArrayList<>();
for (ItemStack stack : items.getFilteredItems()) {
if (stack.getItem() == RSItems.FILTER) {
addFilter(stack);
} else if (!stack.isEmpty()) {
filters.add(new Filter(stack, compare, mode, modFilter));
}
}
ItemStack icon = ItemFilter.getIcon(filter);
if (icon.isEmpty()) {
this.filters.addAll(filters);
} else {
tabs.add(new GridTab(filters, ItemFilter.getName(filter), icon));
}
}
} }

View File

@@ -61,6 +61,7 @@ public class ItemBlockPortableGrid extends ItemBlockEnergyItem {
ItemWirelessGrid.getSortingType(oldStack) == ItemWirelessGrid.getSortingType(newStack) && ItemWirelessGrid.getSortingType(oldStack) == ItemWirelessGrid.getSortingType(newStack) &&
ItemWirelessGrid.getSearchBoxMode(oldStack) == ItemWirelessGrid.getSearchBoxMode(newStack) && ItemWirelessGrid.getSearchBoxMode(oldStack) == ItemWirelessGrid.getSearchBoxMode(newStack) &&
ItemWirelessGrid.getTabSelected(oldStack) == ItemWirelessGrid.getTabSelected(newStack) && ItemWirelessGrid.getTabSelected(oldStack) == ItemWirelessGrid.getTabSelected(newStack) &&
ItemWirelessGrid.getTabPage(oldStack) == ItemWirelessGrid.getTabPage(newStack) &&
ItemWirelessGrid.getSize(oldStack) == ItemWirelessGrid.getSize(newStack)) { ItemWirelessGrid.getSize(oldStack) == ItemWirelessGrid.getSize(newStack)) {
return false; return false;
} }

View File

@@ -45,6 +45,10 @@ public class ItemWirelessGrid extends ItemNetworkItem {
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_TAB_SELECTED)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_TAB_SELECTED) : -1; return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_TAB_SELECTED)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_TAB_SELECTED) : -1;
} }
public static int getTabPage(ItemStack stack) {
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_TAB_PAGE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_TAB_PAGE) : 0;
}
public static int getSize(ItemStack stack) { public static int getSize(ItemStack stack) {
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SIZE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SIZE) : IGrid.SIZE_STRETCH; return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SIZE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SIZE) : IGrid.SIZE_STRETCH;
} }

View File

@@ -18,17 +18,19 @@ public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer<Mess
private int searchBoxMode; private int searchBoxMode;
private int size; private int size;
private int tabSelected; private int tabSelected;
private int tabPage;
public MessageGridSettingsUpdate() { public MessageGridSettingsUpdate() {
} }
public MessageGridSettingsUpdate(int viewType, int sortingDirection, int sortingType, int searchBoxMode, int size, int tabSelected) { public MessageGridSettingsUpdate(int viewType, int sortingDirection, int sortingType, int searchBoxMode, int size, int tabSelected, int tabPage) {
this.viewType = viewType; this.viewType = viewType;
this.sortingDirection = sortingDirection; this.sortingDirection = sortingDirection;
this.sortingType = sortingType; this.sortingType = sortingType;
this.searchBoxMode = searchBoxMode; this.searchBoxMode = searchBoxMode;
this.size = size; this.size = size;
this.tabSelected = tabSelected; this.tabSelected = tabSelected;
this.tabPage = tabPage;
} }
@Override @Override
@@ -39,6 +41,7 @@ public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer<Mess
searchBoxMode = buf.readInt(); searchBoxMode = buf.readInt();
size = buf.readInt(); size = buf.readInt();
tabSelected = buf.readInt(); tabSelected = buf.readInt();
tabPage = buf.readInt();
} }
@Override @Override
@@ -49,6 +52,7 @@ public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer<Mess
buf.writeInt(searchBoxMode); buf.writeInt(searchBoxMode);
buf.writeInt(size); buf.writeInt(size);
buf.writeInt(tabSelected); buf.writeInt(tabSelected);
buf.writeInt(tabPage);
} }
@Override @Override
@@ -84,6 +88,7 @@ public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer<Mess
} }
stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_TAB_SELECTED, message.tabSelected); stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_TAB_SELECTED, message.tabSelected);
stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_TAB_PAGE, message.tabPage);
} }
} }
} }

View File

@@ -65,6 +65,12 @@ public class TileGrid extends TileNode<NetworkNodeGrid> {
GuiGrid.markForSorting(); GuiGrid.markForSorting();
} }
}); });
public static final TileDataParameter<Integer, TileGrid> TAB_PAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getTabPage(), (t, v) -> {
if (v >= 0 && v <= t.getNode().getTotalTabPages()) {
t.getNode().setTabPage(v);
t.getNode().markDirty();
}
});
public static final TileDataParameter<Boolean, TileGrid> OREDICT_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isOredictPattern(), (t, v) -> { public static final TileDataParameter<Boolean, TileGrid> OREDICT_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isOredictPattern(), (t, v) -> {
t.getNode().setOredictPattern(v); t.getNode().setOredictPattern(v);
t.getNode().markDirty(); t.getNode().markDirty();
@@ -106,6 +112,7 @@ public class TileGrid extends TileNode<NetworkNodeGrid> {
dataManager.addWatchedParameter(SEARCH_BOX_MODE); dataManager.addWatchedParameter(SEARCH_BOX_MODE);
dataManager.addWatchedParameter(SIZE); dataManager.addWatchedParameter(SIZE);
dataManager.addWatchedParameter(TAB_SELECTED); dataManager.addWatchedParameter(TAB_SELECTED);
dataManager.addWatchedParameter(TAB_PAGE);
dataManager.addWatchedParameter(OREDICT_PATTERN); dataManager.addWatchedParameter(OREDICT_PATTERN);
dataManager.addWatchedParameter(PROCESSING_PATTERN); dataManager.addWatchedParameter(PROCESSING_PATTERN);
dataManager.addWatchedParameter(BLOCKING_PATTERN); dataManager.addWatchedParameter(BLOCKING_PATTERN);

View File

@@ -102,6 +102,16 @@ public class WirelessFluidGrid implements IGrid {
return 0; return 0;
} }
@Override
public int getTabPage() {
return 0;
}
@Override
public int getTotalTabPages() {
return 0;
}
@Override @Override
public int getSize() { public int getSize() {
return size; return size;
@@ -153,6 +163,11 @@ public class WirelessFluidGrid implements IGrid {
// NO OP // NO OP
} }
@Override
public void onTabPageChanged(int page) {
// NO OP
}
@Override @Override
public List<IFilter> getFilters() { public List<IFilter> getFilters() {
return Collections.emptyList(); return Collections.emptyList();

View File

@@ -40,6 +40,7 @@ public class WirelessGrid implements IGrid {
private int sortingDirection; private int sortingDirection;
private int searchBoxMode; private int searchBoxMode;
private int tabSelected; private int tabSelected;
private int tabPage;
private int size; private int size;
private List<IFilter> filters = new ArrayList<>(); private List<IFilter> filters = new ArrayList<>();
@@ -68,6 +69,7 @@ public class WirelessGrid implements IGrid {
this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack); this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack);
this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack); this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack);
this.tabSelected = ItemWirelessGrid.getTabSelected(stack); this.tabSelected = ItemWirelessGrid.getTabSelected(stack);
this.tabPage = ItemWirelessGrid.getTabPage(stack);
this.size = ItemWirelessGrid.getSize(stack); this.size = ItemWirelessGrid.getSize(stack);
if (stack.hasTagCompound()) { if (stack.hasTagCompound()) {
@@ -128,6 +130,16 @@ public class WirelessGrid implements IGrid {
return tabSelected; return tabSelected;
} }
@Override
public int getTabPage() {
return tabPage;
}
@Override
public int getTotalTabPages() {
return (int) Math.floor((float) tabs.size() / (float) IGrid.TABS_PER_PAGE);
}
@Override @Override
public int getSize() { public int getSize() {
return size; return size;
@@ -135,7 +147,7 @@ public class WirelessGrid implements IGrid {
@Override @Override
public void onViewTypeChanged(int type) { public void onViewTypeChanged(int type) {
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(type, getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected())); RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(type, getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage()));
this.viewType = type; this.viewType = type;
@@ -144,7 +156,7 @@ public class WirelessGrid implements IGrid {
@Override @Override
public void onSortingTypeChanged(int type) { public void onSortingTypeChanged(int type) {
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected())); RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected(), getTabPage()));
this.sortingType = type; this.sortingType = type;
@@ -153,7 +165,7 @@ public class WirelessGrid implements IGrid {
@Override @Override
public void onSortingDirectionChanged(int direction) { public void onSortingDirectionChanged(int direction) {
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected())); RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage()));
this.sortingDirection = direction; this.sortingDirection = direction;
@@ -162,14 +174,14 @@ public class WirelessGrid implements IGrid {
@Override @Override
public void onSearchBoxModeChanged(int searchBoxMode) { public void onSearchBoxModeChanged(int searchBoxMode) {
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected())); RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected(), getTabPage()));
this.searchBoxMode = searchBoxMode; this.searchBoxMode = searchBoxMode;
} }
@Override @Override
public void onSizeChanged(int size) { public void onSizeChanged(int size) {
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected())); RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected(), getTabPage()));
this.size = size; this.size = size;
@@ -182,11 +194,20 @@ public class WirelessGrid implements IGrid {
public void onTabSelectionChanged(int tab) { public void onTabSelectionChanged(int tab) {
this.tabSelected = tab == tabSelected ? -1 : tab; this.tabSelected = tab == tabSelected ? -1 : tab;
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected)); RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage()));
GuiGrid.markForSorting(); GuiGrid.markForSorting();
} }
@Override
public void onTabPageChanged(int page) {
if (page >= 0 && page <= getTotalTabPages()) {
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), page));
this.tabPage = page;
}
}
@Override @Override
public List<IFilter> getFilters() { public List<IFilter> getFilters() {
return filters; return filters;

View File

@@ -55,6 +55,7 @@ public class PortableGrid implements IGrid, IPortableGrid {
private int sortingDirection; private int sortingDirection;
private int searchBoxMode; private int searchBoxMode;
private int tabSelected; private int tabSelected;
private int tabPage;
private int size; private int size;
private List<IFilter> filters = new ArrayList<>(); private List<IFilter> filters = new ArrayList<>();
@@ -119,6 +120,7 @@ public class PortableGrid implements IGrid, IPortableGrid {
this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack); this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack);
this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack); this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack);
this.tabSelected = ItemWirelessGrid.getTabSelected(stack); this.tabSelected = ItemWirelessGrid.getTabSelected(stack);
this.tabPage = ItemWirelessGrid.getTabPage(stack);
this.size = ItemWirelessGrid.getSize(stack); this.size = ItemWirelessGrid.getSize(stack);
} }
@@ -234,6 +236,16 @@ public class PortableGrid implements IGrid, IPortableGrid {
return tabSelected; return tabSelected;
} }
@Override
public int getTabPage() {
return tabPage;
}
@Override
public int getTotalTabPages() {
return (int) Math.floor((float) tabs.size() / (float) IGrid.TABS_PER_PAGE);
}
@Override @Override
public int getSize() { public int getSize() {
return size; return size;
@@ -246,7 +258,7 @@ public class PortableGrid implements IGrid, IPortableGrid {
@Override @Override
public void onSortingTypeChanged(int type) { public void onSortingTypeChanged(int type) {
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected())); RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected(), getTabPage()));
this.sortingType = type; this.sortingType = type;
@@ -255,7 +267,7 @@ public class PortableGrid implements IGrid, IPortableGrid {
@Override @Override
public void onSortingDirectionChanged(int direction) { public void onSortingDirectionChanged(int direction) {
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected())); RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage()));
this.sortingDirection = direction; this.sortingDirection = direction;
@@ -264,14 +276,14 @@ public class PortableGrid implements IGrid, IPortableGrid {
@Override @Override
public void onSearchBoxModeChanged(int searchBoxMode) { public void onSearchBoxModeChanged(int searchBoxMode) {
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected())); RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected(), getTabPage()));
this.searchBoxMode = searchBoxMode; this.searchBoxMode = searchBoxMode;
} }
@Override @Override
public void onSizeChanged(int size) { public void onSizeChanged(int size) {
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected())); RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected(), getTabPage()));
this.size = size; this.size = size;
@@ -284,11 +296,20 @@ public class PortableGrid implements IGrid, IPortableGrid {
public void onTabSelectionChanged(int tab) { public void onTabSelectionChanged(int tab) {
this.tabSelected = tab == tabSelected ? -1 : tab; this.tabSelected = tab == tabSelected ? -1 : tab;
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected)); RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage()));
GuiGrid.markForSorting(); GuiGrid.markForSorting();
} }
@Override
public void onTabPageChanged(int page) {
if (page >= 0 && page <= getTotalTabPages()) {
RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), page));
this.tabPage = page;
}
}
@Override @Override
public List<IFilter> getFilters() { public List<IFilter> getFilters() {
return filters; return filters;

View File

@@ -96,6 +96,12 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
GuiGrid.markForSorting(); GuiGrid.markForSorting();
} }
}); });
public static final TileDataParameter<Integer, TilePortableGrid> TAB_PAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, TilePortableGrid::getTabPage, (t, v) -> {
if (v >= 0 && v <= t.getTotalTabPages()) {
t.setTabPage(v);
t.markDirty();
}
});
private static final String NBT_ENERGY = "Energy"; private static final String NBT_ENERGY = "Energy";
private static final String NBT_DISK_STATE = "DiskState"; private static final String NBT_DISK_STATE = "DiskState";
@@ -110,6 +116,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
private int sortingDirection; private int sortingDirection;
private int searchBoxMode; private int searchBoxMode;
private int tabSelected; private int tabSelected;
private int tabPage;
private int size; private int size;
private List<IFilter> filters = new ArrayList<>(); private List<IFilter> filters = new ArrayList<>();
@@ -181,6 +188,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
dataManager.addWatchedParameter(SEARCH_BOX_MODE); dataManager.addWatchedParameter(SEARCH_BOX_MODE);
dataManager.addWatchedParameter(SIZE); dataManager.addWatchedParameter(SIZE);
dataManager.addWatchedParameter(TAB_SELECTED); dataManager.addWatchedParameter(TAB_SELECTED);
dataManager.addWatchedParameter(TAB_PAGE);
} }
public PortableGridDiskState getDiskState() { public PortableGridDiskState getDiskState() {
@@ -204,6 +212,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack); this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack);
this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack); this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack);
this.tabSelected = ItemWirelessGrid.getTabSelected(stack); this.tabSelected = ItemWirelessGrid.getTabSelected(stack);
this.tabPage = ItemWirelessGrid.getTabPage(stack);
this.size = ItemWirelessGrid.getSize(stack); this.size = ItemWirelessGrid.getSize(stack);
this.energyStorage.setEnergyStored(stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored()); this.energyStorage.setEnergyStored(stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored());
@@ -298,6 +307,16 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
return world.isRemote ? TAB_SELECTED.getValue() : tabSelected; return world.isRemote ? TAB_SELECTED.getValue() : tabSelected;
} }
@Override
public int getTabPage() {
return world.isRemote ? TAB_PAGE.getValue() : tabPage;
}
@Override
public int getTotalTabPages() {
return (int) Math.floor((float) tabs.size() / (float) IGrid.TABS_PER_PAGE);
}
@Override @Override
public int getSize() { public int getSize() {
return world.isRemote ? SIZE.getValue() : size; return world.isRemote ? SIZE.getValue() : size;
@@ -319,6 +338,10 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
this.tabSelected = tabSelected; this.tabSelected = tabSelected;
} }
public void setTabPage(int page) {
this.tabPage = page;
}
public void setSize(int size) { public void setSize(int size) {
this.size = size; this.size = size;
} }
@@ -353,6 +376,13 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
TileDataManager.setParameter(TAB_SELECTED, tab); TileDataManager.setParameter(TAB_SELECTED, tab);
} }
@Override
public void onTabPageChanged(int page) {
if (page >= 0 && page <= getTotalTabPages()) {
TileDataManager.setParameter(TilePortableGrid.TAB_PAGE, page);
}
}
@Override @Override
public List<IFilter> getFilters() { public List<IFilter> getFilters() {
return filters; return filters;
@@ -490,6 +520,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
tag.setInteger(NetworkNodeGrid.NBT_SEARCH_BOX_MODE, searchBoxMode); tag.setInteger(NetworkNodeGrid.NBT_SEARCH_BOX_MODE, searchBoxMode);
tag.setInteger(NetworkNodeGrid.NBT_SIZE, size); tag.setInteger(NetworkNodeGrid.NBT_SIZE, size);
tag.setInteger(NetworkNodeGrid.NBT_TAB_SELECTED, tabSelected); tag.setInteger(NetworkNodeGrid.NBT_TAB_SELECTED, tabSelected);
tag.setInteger(NetworkNodeGrid.NBT_TAB_PAGE, tabPage);
StackUtils.writeItems(disk, 0, tag); StackUtils.writeItems(disk, 0, tag);
StackUtils.writeItems(filter, 1, tag); StackUtils.writeItems(filter, 1, tag);
@@ -525,6 +556,10 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
tabSelected = tag.getInteger(NetworkNodeGrid.NBT_TAB_SELECTED); tabSelected = tag.getInteger(NetworkNodeGrid.NBT_TAB_SELECTED);
} }
if (tag.hasKey(NetworkNodeGrid.NBT_TAB_PAGE)) {
tabPage = tag.getInteger(NetworkNodeGrid.NBT_TAB_PAGE);
}
StackUtils.readItems(disk, 0, tag); StackUtils.readItems(disk, 0, tag);
StackUtils.readItems(filter, 1, tag); StackUtils.readItems(filter, 1, tag);