From 931c1430ec419ca451cdc0cce077881cb3b7778f Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Wed, 28 Dec 2016 17:20:56 +0100 Subject: [PATCH] Added grid size toggle. Fixes #794 --- .../raoulvdberge/refinedstorage/RSConfig.java | 4 +- .../apiimpl/network/node/NetworkNodeGrid.java | 43 ++++++++++++++++--- .../refinedstorage/gui/grid/GuiGrid.java | 16 ++++++- .../gui/sidebutton/SideButtonGridSize.java | 43 +++++++++++++++++++ .../item/ItemWirelessFluidGrid.java | 12 ++++-- .../refinedstorage/item/ItemWirelessGrid.java | 5 +++ ...essageWirelessFluidGridSettingsUpdate.java | 10 ++++- .../MessageWirelessGridSettingsUpdate.java | 10 ++++- .../refinedstorage/tile/grid/IGrid.java | 4 ++ .../refinedstorage/tile/grid/TileGrid.java | 21 ++++++++- .../tile/grid/WirelessFluidGrid.java | 25 +++++++++-- .../tile/grid/WirelessGrid.java | 29 ++++++++++--- .../assets/refinedstorage/lang/en_US.lang | 5 +++ 13 files changed, 204 insertions(+), 23 deletions(-) create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonGridSize.java diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java index 2ce15a507..9f72c17b8 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java @@ -56,7 +56,7 @@ public final class RSConfig { //endregion //region Grid - public int maxRows; + public int maxRowsStretch; public boolean largeFont; //endregion @@ -169,7 +169,7 @@ public final class RSConfig { //endregion //region Grid - maxRows = config.getInt("maxRows", GRID, Integer.MAX_VALUE, 3, Integer.MAX_VALUE, "The maximum amount of rows that the Grid can show"); + maxRowsStretch = config.getInt("maxRowsStretch", GRID, Integer.MAX_VALUE, 3, Integer.MAX_VALUE, "The maximum amount of rows that the Grid can show when stretched"); largeFont = config.getBoolean("largeFont", GRID, false, "Whether the controller should use a large font for stack quantity display"); //endregion diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java index f6646c672..80686b9bd 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java @@ -44,6 +44,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_SIZE = "Size"; public static final int SORTING_DIRECTION_ASCENDING = 0; public static final int SORTING_DIRECTION_DESCENDING = 1; @@ -60,6 +61,11 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { public static final int VIEW_TYPE_NON_CRAFTABLES = 1; public static final int VIEW_TYPE_CRAFTABLES = 2; + public static final int SIZE_STRETCH = 0; + public static final int SIZE_SMALL = 1; + public static final int SIZE_MEDIUM = 2; + public static final int SIZE_LARGE = 3; + private Container craftingContainer = new Container() { @Override public boolean canInteractWith(EntityPlayer player) { @@ -85,6 +91,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { private int sortingDirection = SORTING_DIRECTION_DESCENDING; private int sortingType = SORTING_TYPE_QUANTITY; private int searchBoxMode = SEARCH_BOX_MODE_NORMAL; + private int size = SIZE_STRETCH; private int tabSelected = -1; @@ -130,6 +137,10 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { this.tabSelected = tabSelected; } + public void setSize(int size) { + this.size = size; + } + public boolean isOredictPattern() { return oredictPattern; } @@ -393,6 +404,11 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { return holder.world().isRemote ? TileGrid.SEARCH_BOX_MODE.getValue() : searchBoxMode; } + @Override + public int getSize() { + return holder.world().isRemote ? TileGrid.SIZE.getValue() : size; + } + @Override public int getTabSelected() { return holder.world().isRemote ? TileGrid.TAB_SELECTED.getValue() : tabSelected; @@ -418,6 +434,11 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { TileDataManager.setParameter(TileGrid.SEARCH_BOX_MODE, searchBoxMode); } + @Override + public void onSizeChanged(int size) { + TileDataManager.setParameter(TileGrid.SIZE, size); + } + @Override public void onTabSelectionChanged(int tab) { TileDataManager.setParameter(TileGrid.TAB_SELECTED, tab); @@ -472,6 +493,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { tag.setInteger(NBT_SORTING_DIRECTION, sortingDirection); tag.setInteger(NBT_SORTING_TYPE, sortingType); tag.setInteger(NBT_SEARCH_BOX_MODE, searchBoxMode); + tag.setInteger(NBT_SIZE, size); tag.setBoolean(NBT_OREDICT_PATTERN, oredictPattern); @@ -498,6 +520,10 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { searchBoxMode = tag.getInteger(NBT_SEARCH_BOX_MODE); } + if (tag.hasKey(NBT_SIZE)) { + size = tag.getInteger(NBT_SIZE); + } + if (tag.hasKey(NBT_OREDICT_PATTERN)) { oredictPattern = tag.getBoolean(NBT_OREDICT_PATTERN); } @@ -517,15 +543,15 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { public static boolean isValidViewType(int type) { return type == VIEW_TYPE_NORMAL || - type == VIEW_TYPE_CRAFTABLES || - type == VIEW_TYPE_NON_CRAFTABLES; + type == VIEW_TYPE_CRAFTABLES || + type == VIEW_TYPE_NON_CRAFTABLES; } public static boolean isValidSearchBoxMode(int mode) { return mode == SEARCH_BOX_MODE_NORMAL || - mode == SEARCH_BOX_MODE_NORMAL_AUTOSELECTED || - mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED || - mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED; + mode == SEARCH_BOX_MODE_NORMAL_AUTOSELECTED || + mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED || + mode == SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED; } public static boolean isSearchBoxModeWithAutoselection(int mode) { @@ -539,4 +565,11 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { public static boolean isValidSortingDirection(int direction) { return direction == SORTING_DIRECTION_ASCENDING || direction == SORTING_DIRECTION_DESCENDING; } + + public static boolean isValidSize(int size) { + return size == SIZE_STRETCH || + size == SIZE_SMALL || + size == SIZE_MEDIUM || + size == SIZE_LARGE; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java index cc9247b18..bb4a39737 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java @@ -144,6 +144,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay { addSideButton(new SideButtonGridSortingDirection(this, grid)); addSideButton(new SideButtonGridSortingType(this, grid)); addSideButton(new SideButtonGridSearchBoxMode(this)); + addSideButton(new SideButtonGridSize(this, grid)); sortItems(); } @@ -259,9 +260,20 @@ public class GuiGrid extends GuiBase implements IGridDisplay { @Override public int getVisibleRows() { - int screenSpaceAvailable = height - getHeader() - getFooter() - (hadTabs ? ContainerGrid.TAB_HEIGHT : 0); + switch (grid.getSize()) { + case NetworkNodeGrid.SIZE_STRETCH: + int screenSpaceAvailable = height - getHeader() - getFooter() - (hadTabs ? ContainerGrid.TAB_HEIGHT : 0); - return Math.max(3, Math.min((screenSpaceAvailable / 18) - 3, RS.INSTANCE.config.maxRows)); + return Math.max(3, Math.min((screenSpaceAvailable / 18) - 3, RS.INSTANCE.config.maxRowsStretch)); + case NetworkNodeGrid.SIZE_SMALL: + return 3; + case NetworkNodeGrid.SIZE_MEDIUM: + return 5; + case NetworkNodeGrid.SIZE_LARGE: + return 8; + default: + return 3; + } } private boolean isOverSlotWithItem() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonGridSize.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonGridSize.java new file mode 100644 index 000000000..72dea5768 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonGridSize.java @@ -0,0 +1,43 @@ +package com.raoulvdberge.refinedstorage.gui.sidebutton; + +import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid; +import com.raoulvdberge.refinedstorage.gui.GuiBase; +import com.raoulvdberge.refinedstorage.tile.grid.IGrid; +import net.minecraft.util.text.TextFormatting; + +public class SideButtonGridSize extends SideButton { + private IGrid grid; + + public SideButtonGridSize(GuiBase gui, IGrid grid) { + super(gui); + + this.grid = grid; + } + + @Override + public String getTooltip() { + return TextFormatting.YELLOW + GuiBase.t("sidebutton.refinedstorage:grid.size") + TextFormatting.RESET + "\n" + GuiBase.t("sidebutton.refinedstorage:grid.size." + grid.getSize()); + } + + @Override + protected void drawButtonIcon(int x, int y) { + + } + + @Override + public void actionPerformed() { + int size = grid.getSize(); + + if (size == NetworkNodeGrid.SIZE_STRETCH) { + size = NetworkNodeGrid.SIZE_SMALL; + } else if (size == NetworkNodeGrid.SIZE_SMALL) { + size = NetworkNodeGrid.SIZE_MEDIUM; + } else if (size == NetworkNodeGrid.SIZE_MEDIUM) { + size = NetworkNodeGrid.SIZE_LARGE; + } else if (size == NetworkNodeGrid.SIZE_LARGE) { + size = NetworkNodeGrid.SIZE_STRETCH; + } + + grid.onSizeChanged(size); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java index bbb9d1e8e..9618b2b7f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java @@ -20,14 +20,16 @@ public class ItemWirelessFluidGrid extends ItemNetworkItem { tag.setInteger(NetworkNodeGrid.NBT_SORTING_DIRECTION, NetworkNodeGrid.SORTING_DIRECTION_DESCENDING); tag.setInteger(NetworkNodeGrid.NBT_SORTING_TYPE, NetworkNodeGrid.SORTING_TYPE_QUANTITY); tag.setInteger(NetworkNodeGrid.NBT_SEARCH_BOX_MODE, NetworkNodeGrid.SEARCH_BOX_MODE_NORMAL); + tag.setInteger(NetworkNodeGrid.NBT_SIZE, NetworkNodeGrid.SIZE_STRETCH); } @Override public boolean isValid(ItemStack stack) { return super.isValid(stack) - && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SORTING_DIRECTION) - && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SORTING_TYPE) - && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SEARCH_BOX_MODE); + && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SORTING_DIRECTION) + && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SORTING_TYPE) + && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SEARCH_BOX_MODE) + && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SIZE); } @Override @@ -46,4 +48,8 @@ public class ItemWirelessFluidGrid extends ItemNetworkItem { public static int getSearchBoxMode(ItemStack stack) { return stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SEARCH_BOX_MODE); } + + public static int getSize(ItemStack stack) { + return stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SIZE); + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java index be6d0cfba..5923e8d48 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java @@ -21,6 +21,7 @@ public class ItemWirelessGrid extends ItemNetworkItem { tag.setInteger(NetworkNodeGrid.NBT_SORTING_DIRECTION, NetworkNodeGrid.SORTING_DIRECTION_DESCENDING); tag.setInteger(NetworkNodeGrid.NBT_SORTING_TYPE, NetworkNodeGrid.SORTING_TYPE_QUANTITY); tag.setInteger(NetworkNodeGrid.NBT_SEARCH_BOX_MODE, NetworkNodeGrid.SEARCH_BOX_MODE_NORMAL); + tag.setInteger(NetworkNodeGrid.NBT_SIZE, NetworkNodeGrid.SIZE_STRETCH); tag.setInteger(NetworkNodeGrid.NBT_TAB_SELECTED, -1); } @@ -57,4 +58,8 @@ public class ItemWirelessGrid extends ItemNetworkItem { public static int getTabSelected(ItemStack stack) { return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_TAB_SELECTED)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_TAB_SELECTED) : -1; } + + public static int getSize(ItemStack stack) { + return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SIZE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SIZE) : NetworkNodeGrid.SIZE_STRETCH; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessFluidGridSettingsUpdate.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessFluidGridSettingsUpdate.java index 9daa1fa3a..0faef4e6d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessFluidGridSettingsUpdate.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessFluidGridSettingsUpdate.java @@ -13,14 +13,16 @@ public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayer private int sortingDirection; private int sortingType; private int searchBoxMode; + private int size; public MessageWirelessFluidGridSettingsUpdate() { } - public MessageWirelessFluidGridSettingsUpdate(int sortingDirection, int sortingType, int searchBoxMode) { + public MessageWirelessFluidGridSettingsUpdate(int sortingDirection, int sortingType, int searchBoxMode, int size) { this.sortingDirection = sortingDirection; this.sortingType = sortingType; this.searchBoxMode = searchBoxMode; + this.size = size; } @Override @@ -28,6 +30,7 @@ public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayer sortingDirection = buf.readInt(); sortingType = buf.readInt(); searchBoxMode = buf.readInt(); + size = buf.readInt(); } @Override @@ -35,6 +38,7 @@ public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayer buf.writeInt(sortingDirection); buf.writeInt(sortingType); buf.writeInt(searchBoxMode); + buf.writeInt(size); } @Override @@ -56,6 +60,10 @@ public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayer if (NetworkNodeGrid.isValidSearchBoxMode(message.searchBoxMode)) { stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_SEARCH_BOX_MODE, message.searchBoxMode); } + + if (NetworkNodeGrid.isValidSize(message.size)) { + stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_SIZE, message.size); + } } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessGridSettingsUpdate.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessGridSettingsUpdate.java index 29a2b302a..245033047 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessGridSettingsUpdate.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessGridSettingsUpdate.java @@ -14,16 +14,18 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer private int sortingDirection; private int sortingType; private int searchBoxMode; + private int size; private int tabSelected; public MessageWirelessGridSettingsUpdate() { } - public MessageWirelessGridSettingsUpdate(int viewType, int sortingDirection, int sortingType, int searchBoxMode, int tabSelected) { + public MessageWirelessGridSettingsUpdate(int viewType, int sortingDirection, int sortingType, int searchBoxMode, int size, int tabSelected) { this.viewType = viewType; this.sortingDirection = sortingDirection; this.sortingType = sortingType; this.searchBoxMode = searchBoxMode; + this.size = size; this.tabSelected = tabSelected; } @@ -33,6 +35,7 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer sortingDirection = buf.readInt(); sortingType = buf.readInt(); searchBoxMode = buf.readInt(); + size = buf.readInt(); tabSelected = buf.readInt(); } @@ -42,6 +45,7 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer buf.writeInt(sortingDirection); buf.writeInt(sortingType); buf.writeInt(searchBoxMode); + buf.writeInt(size); buf.writeInt(tabSelected); } @@ -69,6 +73,10 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_SEARCH_BOX_MODE, message.searchBoxMode); } + if (NetworkNodeGrid.isValidSize(message.size)) { + stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_SIZE, message.size); + } + stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_TAB_SELECTED, message.tabSelected); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/IGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/IGrid.java index 41631eb53..f49c2eeb7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/IGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/IGrid.java @@ -32,6 +32,8 @@ public interface IGrid { int getTabSelected(); + int getSize(); + void onViewTypeChanged(int type); void onSortingTypeChanged(int type); @@ -40,6 +42,8 @@ public interface IGrid { void onSearchBoxModeChanged(int searchBoxMode); + void onSizeChanged(int size); + void onTabSelectionChanged(int tab); List getFilteredItems(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java index f0f5b8574..8a0a64d26 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/TileGrid.java @@ -1,6 +1,5 @@ package com.raoulvdberge.refinedstorage.tile.grid; -import com.raoulvdberge.refinedstorage.api.network.INetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid; import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid; import com.raoulvdberge.refinedstorage.tile.TileNode; @@ -77,6 +76,25 @@ public class TileGrid extends TileNode { } }); + public static final TileDataParameter SIZE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { + @Override + public Integer getValue(TileGrid tile) { + return tile.getNode().getSize(); + } + }, new ITileDataConsumer() { + @Override + public void setValue(TileGrid tile, Integer value) { + if (NetworkNodeGrid.isValidSize(value)) { + tile.getNode().setSize(value); + tile.getNode().markDirty(); + } + } + }, parameter -> { + if (Minecraft.getMinecraft().currentScreen != null) { + Minecraft.getMinecraft().currentScreen.initGui(); + } + }); + public static final TileDataParameter TAB_SELECTED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { @Override public Integer getValue(TileGrid tile) { @@ -118,6 +136,7 @@ public class TileGrid extends TileNode { dataManager.addWatchedParameter(SEARCH_BOX_MODE); dataManager.addWatchedParameter(TAB_SELECTED); dataManager.addWatchedParameter(OREDICT_PATTERN); + dataManager.addWatchedParameter(SIZE); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java index 80fd74162..ce0bffa37 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java @@ -11,6 +11,7 @@ import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic; import com.raoulvdberge.refinedstorage.item.ItemWirelessFluidGrid; import com.raoulvdberge.refinedstorage.network.MessageWirelessFluidGridSettingsUpdate; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; +import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.InventoryCraftResult; import net.minecraft.inventory.InventoryCrafting; @@ -33,6 +34,7 @@ public class WirelessFluidGrid implements IGrid { private int sortingType; private int sortingDirection; private int searchBoxMode; + private int size; public WirelessFluidGrid(int controllerDimension, ItemStack stack) { this.controllerDimension = controllerDimension; @@ -43,6 +45,7 @@ public class WirelessFluidGrid implements IGrid { this.sortingType = ItemWirelessFluidGrid.getSortingType(stack); this.sortingDirection = ItemWirelessFluidGrid.getSortingDirection(stack); this.searchBoxMode = ItemWirelessFluidGrid.getSearchBoxMode(stack); + this.size = ItemWirelessFluidGrid.getSize(stack); } public ItemStack getStack() { @@ -98,6 +101,11 @@ public class WirelessFluidGrid implements IGrid { return 0; } + @Override + public int getSize() { + return size; + } + @Override public void onViewTypeChanged(int type) { // NO OP @@ -105,7 +113,7 @@ public class WirelessFluidGrid implements IGrid { @Override public void onSortingTypeChanged(int type) { - RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), type, getSearchBoxMode())); + RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), type, getSearchBoxMode(), getSize())); this.sortingType = type; @@ -114,7 +122,7 @@ public class WirelessFluidGrid implements IGrid { @Override public void onSortingDirectionChanged(int direction) { - RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(direction, getSortingType(), getSearchBoxMode())); + RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(direction, getSortingType(), getSearchBoxMode(), getSize())); this.sortingDirection = direction; @@ -123,11 +131,22 @@ public class WirelessFluidGrid implements IGrid { @Override public void onSearchBoxModeChanged(int searchBoxMode) { - RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), searchBoxMode)); + RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), searchBoxMode, getSize())); this.searchBoxMode = searchBoxMode; } + @Override + public void onSizeChanged(int size) { + RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), getSearchBoxMode(), size)); + + this.size = size; + + if (Minecraft.getMinecraft().currentScreen != null) { + Minecraft.getMinecraft().currentScreen.initGui(); + } + } + @Override public void onTabSelectionChanged(int tab) { // NO OP diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java index d52bf05fc..b7aab5764 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java @@ -12,6 +12,7 @@ import com.raoulvdberge.refinedstorage.inventory.ItemHandlerGridFilterInGrid; import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; import com.raoulvdberge.refinedstorage.network.MessageWirelessGridSettingsUpdate; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; +import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.InventoryCraftResult; import net.minecraft.inventory.InventoryCrafting; @@ -37,6 +38,7 @@ public class WirelessGrid implements IGrid { private int sortingDirection; private int searchBoxMode; private int tabSelected; + private int size; private List filteredItems = new ArrayList<>(); private List tabs = new ArrayList<>(); @@ -64,6 +66,7 @@ public class WirelessGrid implements IGrid { this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack); this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack); this.tabSelected = ItemWirelessGrid.getTabSelected(stack); + this.size = ItemWirelessGrid.getSize(stack); if (stack.hasTagCompound()) { for (int i = 0; i < 4; ++i) { @@ -125,9 +128,14 @@ public class WirelessGrid implements IGrid { return tabSelected; } + @Override + public int getSize() { + return size; + } + @Override public void onViewTypeChanged(int type) { - RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(type, getSortingDirection(), getSortingType(), getSearchBoxMode(), tabSelected)); + RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(type, getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected())); this.viewType = type; @@ -136,7 +144,7 @@ public class WirelessGrid implements IGrid { @Override public void onSortingTypeChanged(int type) { - RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode(), tabSelected)); + RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected())); this.sortingType = type; @@ -145,7 +153,7 @@ public class WirelessGrid implements IGrid { @Override public void onSortingDirectionChanged(int direction) { - RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode(), tabSelected)); + RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected())); this.sortingDirection = direction; @@ -154,16 +162,27 @@ public class WirelessGrid implements IGrid { @Override public void onSearchBoxModeChanged(int searchBoxMode) { - RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, tabSelected)); + RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected())); this.searchBoxMode = searchBoxMode; } + @Override + public void onSizeChanged(int size) { + RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected())); + + this.size = size; + + if (Minecraft.getMinecraft().currentScreen != null) { + Minecraft.getMinecraft().currentScreen.initGui(); + } + } + @Override public void onTabSelectionChanged(int tab) { this.tabSelected = tab == tabSelected ? -1 : tab; - RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, tabSelected)); + RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected)); GuiGrid.markForSorting(); } diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index 54be74381..e7fdfbcc5 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -128,6 +128,11 @@ sidebutton.refinedstorage:grid.search_box_mode.0=Normal sidebutton.refinedstorage:grid.search_box_mode.1=Normal (autoselected) sidebutton.refinedstorage:grid.search_box_mode.2=JEI synchronized sidebutton.refinedstorage:grid.search_box_mode.3=JEI synchronized (autoselected) +sidebutton.refinedstorage:grid.size=Size +sidebutton.refinedstorage:grid.size.0=Stretch +sidebutton.refinedstorage:grid.size.1=Small +sidebutton.refinedstorage:grid.size.2=Medium +sidebutton.refinedstorage:grid.size.3=Large sidebutton.refinedstorage:mode=Mode sidebutton.refinedstorage:mode.whitelist=Whitelist