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
- 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 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 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)

View File

@@ -17,6 +17,8 @@ import java.util.List;
* Represents a grid.
*/
public interface IGrid {
int TABS_PER_PAGE = 6;
int SORTING_DIRECTION_ASCENDING = 0;
int SORTING_DIRECTION_DESCENDING = 1;
@@ -96,6 +98,16 @@ public interface IGrid {
*/
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
*/
@@ -131,6 +143,11 @@ public interface IGrid {
*/
void onTabSelectionChanged(int tab);
/**
* @param page the new selected page
*/
void onTabPageChanged(int page);
/**
* @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_OREDICT_PATTERN = "OredictPattern";
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_PROCESSING_PATTERN = "ProcessingPattern";
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 tabSelected = -1;
private int tabPage = 0;
private boolean oredictPattern = false;
private boolean processingPattern = false;
@@ -135,6 +137,10 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
this.tabSelected = tabSelected;
}
public void setTabPage(int page) {
this.tabPage = page;
}
public void setSize(int size) {
this.size = size;
}
@@ -522,6 +528,16 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
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
public void onViewTypeChanged(int type) {
TileDataManager.setParameter(TileGrid.VIEW_TYPE, type);
@@ -552,6 +568,13 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
TileDataManager.setParameter(TileGrid.TAB_SELECTED, tab);
}
@Override
public void onTabPageChanged(int page) {
if (page >= 0 && page <= getTotalTabPages()) {
TileDataManager.setParameter(TileGrid.TAB_PAGE, page);
}
}
@Override
public boolean hasConnectivityState() {
return true;
@@ -569,6 +592,10 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
if (tag.hasKey(NBT_TAB_SELECTED)) {
tabSelected = tag.getInteger(NBT_TAB_SELECTED);
}
if (tag.hasKey(NBT_TAB_PAGE)) {
tabPage = tag.getInteger(NBT_TAB_PAGE);
}
}
@Override
@@ -586,6 +613,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
StackUtils.writeItems(matrixProcessing, 3, tag);
tag.setInteger(NBT_TAB_SELECTED, tabSelected);
tag.setInteger(NBT_TAB_PAGE, tabPage);
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) {
GuiCheckBox checkBox = new GuiCheckBox(lastButtonId++, x, y, text, checked);
@@ -209,9 +205,14 @@ public abstract class GuiBase extends GuiContainer {
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);
button.enabled = enabled;
button.visible = visible;
buttonList.add(button);

View File

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

View File

@@ -70,6 +70,9 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
private GuiCheckBox processingPattern;
private GuiCheckBox blockingPattern;
private GuiButton tabPageLeft;
private GuiButton tabPageRight;
private IGrid grid;
private boolean hadTabs = false;
@@ -121,17 +124,20 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
public void init(int x, int y) {
((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) {
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.konamiOffsetsY = new int[9 * getVisibleRows()];
int sx = x + 80 + 1;
int sy = y + 6 + 1 + getTabDelta();
int sy = y + 6 + 1 + getTabHeight();
if (searchField == null) {
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) {
processingPattern = addCheckBox(x + 7, y + getTabDelta() + 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());
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 + getTabHeight() + getHeader() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:oredict"), TileGrid.OREDICT_PATTERN.getValue());
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.setMaxOffset(getRows() - getVisibleRows());
}
tabPageLeft.visible = grid.getTotalTabPages() > 0;
tabPageRight.visible = grid.getTotalTabPages() > 0;
}
@Override
@@ -273,7 +282,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
@Override
public int getYPlayerInventory() {
int yp = getTabDelta() + getHeader() + (getVisibleRows() * 18);
int yp = getTabHeight() + getHeader() + (getVisibleRows() * 18);
if (grid.getType() == GridType.NORMAL || grid.getType() == GridType.FLUID) {
yp += 16;
@@ -318,11 +327,11 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
}
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) {
int y = getTabDelta() + getHeader() + (getVisibleRows() * 18) + 4;
int y = getTabHeight() + getHeader() + (getVisibleRows() * 18) + 4;
switch (grid.getType()) {
case CRAFTING:
@@ -339,22 +348,21 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
}
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;
}
private void drawTab(IGridTab tab, boolean foregroundLayer, int x, int y, int mouseX, int mouseY) {
int i = grid.getTabs().indexOf(tab);
boolean selected = i == grid.getTabSelected();
private void drawTab(IGridTab tab, boolean foregroundLayer, int x, int y, int mouseX, int mouseY, int index, int num) {
boolean selected = index == grid.getTabSelected();
if ((foregroundLayer && !selected) || (!foregroundLayer && selected)) {
return;
}
int tx = x + ((ContainerGrid.TAB_WIDTH + 1) * i);
int tx = x + ((ContainerGrid.TAB_WIDTH + 1) * num);
int ty = y;
bindTexture("icons.png");
@@ -371,7 +379,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
if (selected) {
uvx = 227;
if (i > 0) {
if (num > 0) {
uvx = 226;
uvy = 194;
tbw++;
@@ -385,10 +393,10 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
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)) {
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) {
tabHovering = -1;
for (IGridTab tab : grid.getTabs()) {
drawTab(tab, false, x, y, mouseX, mouseY);
int j = 0;
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) {
@@ -410,12 +421,12 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
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());
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();
@@ -441,11 +452,14 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
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()) {
drawTab(tab, true, x, y, mouseX, mouseY);
j = 0;
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) {
@@ -455,11 +469,17 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
@Override
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"));
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 y = 19 + getTabDelta();
int y = 19 + getTabHeight();
this.slotNumber = -1;
@@ -532,6 +552,10 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
TileDataManager.setParameter(TileGrid.BLOCKING_PATTERN, blockingPattern.isChecked());
} else if (button == processingPattern) {
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);
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.setFocused(true);

View File

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

View File

@@ -38,27 +38,7 @@ public class ItemHandlerFilter extends ItemHandlerBase {
ItemStack filter = getStackInSlot(i);
if (!filter.isEmpty()) {
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 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));
}
addFilter(filter);
}
}
@@ -66,4 +46,30 @@ public class ItemHandlerFilter extends ItemHandlerBase {
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.getSearchBoxMode(oldStack) == ItemWirelessGrid.getSearchBoxMode(newStack) &&
ItemWirelessGrid.getTabSelected(oldStack) == ItemWirelessGrid.getTabSelected(newStack) &&
ItemWirelessGrid.getTabPage(oldStack) == ItemWirelessGrid.getTabPage(newStack) &&
ItemWirelessGrid.getSize(oldStack) == ItemWirelessGrid.getSize(newStack)) {
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;
}
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) {
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 size;
private int tabSelected;
private int tabPage;
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.sortingDirection = sortingDirection;
this.sortingType = sortingType;
this.searchBoxMode = searchBoxMode;
this.size = size;
this.tabSelected = tabSelected;
this.tabPage = tabPage;
}
@Override
@@ -39,6 +41,7 @@ public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer<Mess
searchBoxMode = buf.readInt();
size = buf.readInt();
tabSelected = buf.readInt();
tabPage = buf.readInt();
}
@Override
@@ -49,6 +52,7 @@ public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer<Mess
buf.writeInt(searchBoxMode);
buf.writeInt(size);
buf.writeInt(tabSelected);
buf.writeInt(tabPage);
}
@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_PAGE, message.tabPage);
}
}
}

View File

@@ -65,6 +65,12 @@ public class TileGrid extends TileNode<NetworkNodeGrid> {
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) -> {
t.getNode().setOredictPattern(v);
t.getNode().markDirty();
@@ -106,6 +112,7 @@ public class TileGrid extends TileNode<NetworkNodeGrid> {
dataManager.addWatchedParameter(SEARCH_BOX_MODE);
dataManager.addWatchedParameter(SIZE);
dataManager.addWatchedParameter(TAB_SELECTED);
dataManager.addWatchedParameter(TAB_PAGE);
dataManager.addWatchedParameter(OREDICT_PATTERN);
dataManager.addWatchedParameter(PROCESSING_PATTERN);
dataManager.addWatchedParameter(BLOCKING_PATTERN);

View File

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

View File

@@ -40,6 +40,7 @@ public class WirelessGrid implements IGrid {
private int sortingDirection;
private int searchBoxMode;
private int tabSelected;
private int tabPage;
private int size;
private List<IFilter> filters = new ArrayList<>();
@@ -68,6 +69,7 @@ public class WirelessGrid implements IGrid {
this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack);
this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack);
this.tabSelected = ItemWirelessGrid.getTabSelected(stack);
this.tabPage = ItemWirelessGrid.getTabPage(stack);
this.size = ItemWirelessGrid.getSize(stack);
if (stack.hasTagCompound()) {
@@ -128,6 +130,16 @@ public class WirelessGrid implements IGrid {
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
public int getSize() {
return size;
@@ -135,7 +147,7 @@ public class WirelessGrid implements IGrid {
@Override
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;
@@ -144,7 +156,7 @@ public class WirelessGrid implements IGrid {
@Override
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;
@@ -153,7 +165,7 @@ public class WirelessGrid implements IGrid {
@Override
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;
@@ -162,14 +174,14 @@ public class WirelessGrid implements IGrid {
@Override
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;
}
@Override
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;
@@ -182,11 +194,20 @@ public class WirelessGrid implements IGrid {
public void onTabSelectionChanged(int 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();
}
@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
public List<IFilter> getFilters() {
return filters;

View File

@@ -55,6 +55,7 @@ public class PortableGrid implements IGrid, IPortableGrid {
private int sortingDirection;
private int searchBoxMode;
private int tabSelected;
private int tabPage;
private int size;
private List<IFilter> filters = new ArrayList<>();
@@ -119,6 +120,7 @@ public class PortableGrid implements IGrid, IPortableGrid {
this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack);
this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack);
this.tabSelected = ItemWirelessGrid.getTabSelected(stack);
this.tabPage = ItemWirelessGrid.getTabPage(stack);
this.size = ItemWirelessGrid.getSize(stack);
}
@@ -234,6 +236,16 @@ public class PortableGrid implements IGrid, IPortableGrid {
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
public int getSize() {
return size;
@@ -246,7 +258,7 @@ public class PortableGrid implements IGrid, IPortableGrid {
@Override
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;
@@ -255,7 +267,7 @@ public class PortableGrid implements IGrid, IPortableGrid {
@Override
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;
@@ -264,14 +276,14 @@ public class PortableGrid implements IGrid, IPortableGrid {
@Override
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;
}
@Override
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;
@@ -284,11 +296,20 @@ public class PortableGrid implements IGrid, IPortableGrid {
public void onTabSelectionChanged(int 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();
}
@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
public List<IFilter> getFilters() {
return filters;

View File

@@ -96,6 +96,12 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
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_DISK_STATE = "DiskState";
@@ -110,6 +116,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
private int sortingDirection;
private int searchBoxMode;
private int tabSelected;
private int tabPage;
private int size;
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(SIZE);
dataManager.addWatchedParameter(TAB_SELECTED);
dataManager.addWatchedParameter(TAB_PAGE);
}
public PortableGridDiskState getDiskState() {
@@ -204,6 +212,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack);
this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack);
this.tabSelected = ItemWirelessGrid.getTabSelected(stack);
this.tabPage = ItemWirelessGrid.getTabPage(stack);
this.size = ItemWirelessGrid.getSize(stack);
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;
}
@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
public int getSize() {
return world.isRemote ? SIZE.getValue() : size;
@@ -319,6 +338,10 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
this.tabSelected = tabSelected;
}
public void setTabPage(int page) {
this.tabPage = page;
}
public void setSize(int size) {
this.size = size;
}
@@ -353,6 +376,13 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
TileDataManager.setParameter(TAB_SELECTED, tab);
}
@Override
public void onTabPageChanged(int page) {
if (page >= 0 && page <= getTotalTabPages()) {
TileDataManager.setParameter(TilePortableGrid.TAB_PAGE, page);
}
}
@Override
public List<IFilter> getFilters() {
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_SIZE, size);
tag.setInteger(NetworkNodeGrid.NBT_TAB_SELECTED, tabSelected);
tag.setInteger(NetworkNodeGrid.NBT_TAB_PAGE, tabPage);
StackUtils.writeItems(disk, 0, 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);
}
if (tag.hasKey(NetworkNodeGrid.NBT_TAB_PAGE)) {
tabPage = tag.getInteger(NetworkNodeGrid.NBT_TAB_PAGE);
}
StackUtils.readItems(disk, 0, tag);
StackUtils.readItems(filter, 1, tag);