Added support for more than 4 grid tabs in the Grid by putting filters IN filters, fixes #1448
This commit is contained in:
@@ -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)
|
||||
|
@@ -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
|
||||
*/
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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();
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user