From 292403e6c17396e763f7895c628322719ffdced9 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Wed, 30 Mar 2016 12:38:45 +0200 Subject: [PATCH] JEI synchronization, doesn't actually sync yet though... JEI bug? --- src/main/java/refinedstorage/gui/GuiGrid.java | 9 ++ .../SideButtonGridSearchBoxMode.java | 44 ++++++ .../SideButtonGridSortingDirection.java | 8 +- .../sidebutton/SideButtonGridSortingType.java | 8 +- .../jei/PluginRefinedStorage.java | 24 +++- ...te.java => MessageGridSettingsUpdate.java} | 128 ++++++++++-------- .../refinedstorage/proxy/CommonProxy.java | 2 +- .../java/refinedstorage/tile/TileGrid.java | 20 +++ .../assets/refinedstorage/lang/en_US.lang | 16 ++- .../assets/refinedstorage/lang/nl_NL.lang | 16 ++- .../assets/refinedstorage/textures/icons.png | Bin 2615 -> 2647 bytes 11 files changed, 190 insertions(+), 85 deletions(-) create mode 100755 src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java rename src/main/java/refinedstorage/network/{MessageGridSortingUpdate.java => MessageGridSettingsUpdate.java} (69%) diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index 17ae74a6d..38d6ee1ec 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -10,9 +10,11 @@ import net.minecraft.inventory.Slot; import refinedstorage.RefinedStorage; import refinedstorage.block.EnumGridType; import refinedstorage.container.ContainerGrid; +import refinedstorage.gui.sidebutton.SideButtonGridSearchBoxMode; import refinedstorage.gui.sidebutton.SideButtonGridSortingDirection; import refinedstorage.gui.sidebutton.SideButtonGridSortingType; import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; +import refinedstorage.jei.PluginRefinedStorage; import refinedstorage.network.MessageGridCraftingClear; import refinedstorage.network.MessageGridCraftingPush; import refinedstorage.network.MessageStoragePull; @@ -52,6 +54,10 @@ public class GuiGrid extends GuiBase { addSideButton(new SideButtonGridSortingDirection(grid)); addSideButton(new SideButtonGridSortingType(grid)); + if (PluginRefinedStorage.isJeiLoaded()) { + addSideButton(new SideButtonGridSearchBoxMode(grid)); + } + searchField = new GuiTextField(0, fontRendererObj, x + 80 + 1, y + 6 + 1, 88 - 6, fontRendererObj.FONT_HEIGHT); searchField.setEnableBackgroundDrawing(false); searchField.setVisible(true); @@ -287,6 +293,9 @@ public class GuiGrid extends GuiBase { @Override protected void keyTyped(char character, int keyCode) throws IOException { if (!checkHotbarKeys(keyCode) && searchField.textboxKeyTyped(character, keyCode)) { + if (PluginRefinedStorage.isJeiLoaded()) { + PluginRefinedStorage.INSTANCE.getRuntime().getItemListOverlay().setFilterText(searchField.getText()); + } } else { super.keyTyped(character, keyCode); } diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java new file mode 100755 index 000000000..bdd0ce1b3 --- /dev/null +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java @@ -0,0 +1,44 @@ +package refinedstorage.gui.sidebutton; + +import net.minecraft.util.text.TextFormatting; +import refinedstorage.RefinedStorage; +import refinedstorage.gui.GuiBase; +import refinedstorage.network.MessageGridSettingsUpdate; +import refinedstorage.tile.TileGrid; + +public class SideButtonGridSearchBoxMode extends SideButton { + private TileGrid grid; + + public SideButtonGridSearchBoxMode(TileGrid grid) { + this.grid = grid; + } + + @Override + public String getTooltip(GuiBase gui) { + StringBuilder builder = new StringBuilder(); + + builder.append(TextFormatting.YELLOW).append(gui.t("sidebutton.refinedstorage:grid.search_box_mode")).append(TextFormatting.RESET).append("\n"); + builder.append(gui.t("sidebutton.refinedstorage:grid.search_box_mode." + grid.getSearchBoxMode())); + + return builder.toString(); + } + + @Override + public void draw(GuiBase gui, int x, int y) { + gui.bindTexture("icons.png"); + gui.drawTexture(x - 1, y + 2 - 1, 0, 96, 16, 16); + } + + @Override + public void actionPerformed() { + int mode = grid.getSearchBoxMode(); + + if (mode == TileGrid.SEARCH_BOX_MODE_NORMAL) { + mode = TileGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED; + } else if (mode == TileGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED) { + mode = TileGrid.SEARCH_BOX_MODE_NORMAL; + } + + RefinedStorage.NETWORK.sendToServer(new MessageGridSettingsUpdate(grid, grid.getSortingDirection(), grid.getSortingType(), mode)); + } +} diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java index b7ccb59c5..af1540f08 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java @@ -3,7 +3,7 @@ package refinedstorage.gui.sidebutton; import net.minecraft.util.text.TextFormatting; import refinedstorage.RefinedStorage; import refinedstorage.gui.GuiBase; -import refinedstorage.network.MessageGridSortingUpdate; +import refinedstorage.network.MessageGridSettingsUpdate; import refinedstorage.tile.TileGrid; public class SideButtonGridSortingDirection extends SideButton { @@ -17,8 +17,8 @@ public class SideButtonGridSortingDirection extends SideButton { public String getTooltip(GuiBase gui) { StringBuilder builder = new StringBuilder(); - builder.append(TextFormatting.YELLOW).append(gui.t("sidebutton.refinedstorage:sorting.direction")).append(TextFormatting.RESET).append("\n"); - builder.append(gui.t("sidebutton.refinedstorage:sorting.direction." + grid.getSortingDirection())); + builder.append(TextFormatting.YELLOW).append(gui.t("sidebutton.refinedstorage:grid.sorting.direction")).append(TextFormatting.RESET).append("\n"); + builder.append(gui.t("sidebutton.refinedstorage:grid.sorting.direction." + grid.getSortingDirection())); return builder.toString(); } @@ -39,6 +39,6 @@ public class SideButtonGridSortingDirection extends SideButton { dir = TileGrid.SORTING_DIRECTION_ASCENDING; } - RefinedStorage.NETWORK.sendToServer(new MessageGridSortingUpdate(grid, dir, grid.getSortingType())); + RefinedStorage.NETWORK.sendToServer(new MessageGridSettingsUpdate(grid, dir, grid.getSortingType(), grid.getSearchBoxMode())); } } diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java index e5f04f2ce..8e02f4b18 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java @@ -3,7 +3,7 @@ package refinedstorage.gui.sidebutton; import net.minecraft.util.text.TextFormatting; import refinedstorage.RefinedStorage; import refinedstorage.gui.GuiBase; -import refinedstorage.network.MessageGridSortingUpdate; +import refinedstorage.network.MessageGridSettingsUpdate; import refinedstorage.tile.TileGrid; public class SideButtonGridSortingType extends SideButton { @@ -17,8 +17,8 @@ public class SideButtonGridSortingType extends SideButton { public String getTooltip(GuiBase gui) { StringBuilder builder = new StringBuilder(); - builder.append(TextFormatting.YELLOW).append(gui.t("sidebutton.refinedstorage:sorting.type")).append(TextFormatting.RESET).append("\n"); - builder.append(gui.t("sidebutton.refinedstorage:sorting.type." + grid.getSortingType())); + builder.append(TextFormatting.YELLOW).append(gui.t("sidebutton.refinedstorage:grid.sorting.type")).append(TextFormatting.RESET).append("\n"); + builder.append(gui.t("sidebutton.refinedstorage:grid.sorting.type." + grid.getSortingType())); return builder.toString(); } @@ -39,6 +39,6 @@ public class SideButtonGridSortingType extends SideButton { type = TileGrid.SORTING_TYPE_QUANTITY; } - RefinedStorage.NETWORK.sendToServer(new MessageGridSortingUpdate(grid, grid.getSortingDirection(), type)); + RefinedStorage.NETWORK.sendToServer(new MessageGridSettingsUpdate(grid, grid.getSortingDirection(), type, grid.getSearchBoxMode())); } } diff --git a/src/main/java/refinedstorage/jei/PluginRefinedStorage.java b/src/main/java/refinedstorage/jei/PluginRefinedStorage.java index 216a3b9ff..8196517fd 100755 --- a/src/main/java/refinedstorage/jei/PluginRefinedStorage.java +++ b/src/main/java/refinedstorage/jei/PluginRefinedStorage.java @@ -1,6 +1,7 @@ package refinedstorage.jei; -import mezz.jei.api.BlankModPlugin; +import mezz.jei.api.IJeiRuntime; +import mezz.jei.api.IModPlugin; import mezz.jei.api.IModRegistry; import mezz.jei.api.JEIPlugin; import net.minecraft.item.Item; @@ -10,9 +11,15 @@ import refinedstorage.storage.DiskStorage; import refinedstorage.tile.TileStorage; @JEIPlugin -public class PluginRefinedStorage extends BlankModPlugin { +public class PluginRefinedStorage implements IModPlugin { + public static PluginRefinedStorage INSTANCE; + + private IJeiRuntime runtime; + @Override public void register(IModRegistry registry) { + INSTANCE = this; + registry.getRecipeTransferRegistry().addRecipeTransferHandler(new GridRecipeTransferHandler()); registry.addRecipeCategories(new SoldererRecipeCategory(registry.getJeiHelpers().getGuiHelper())); @@ -24,4 +31,17 @@ public class PluginRefinedStorage extends BlankModPlugin { registry.getJeiHelpers().getNbtIgnoreList().ignoreNbtTagNames(RefinedStorageItems.STORAGE_DISK, DiskStorage.NBT_ITEMS, DiskStorage.NBT_STORED); registry.getJeiHelpers().getNbtIgnoreList().ignoreNbtTagNames(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), TileStorage.NBT_STORAGE); } + + @Override + public void onRuntimeAvailable(IJeiRuntime runtime) { + this.runtime = runtime; + } + + public IJeiRuntime getRuntime() { + return runtime; + } + + public static boolean isJeiLoaded() { + return INSTANCE != null; + } } diff --git a/src/main/java/refinedstorage/network/MessageGridSortingUpdate.java b/src/main/java/refinedstorage/network/MessageGridSettingsUpdate.java similarity index 69% rename from src/main/java/refinedstorage/network/MessageGridSortingUpdate.java rename to src/main/java/refinedstorage/network/MessageGridSettingsUpdate.java index 11781aec1..66d5ad038 100755 --- a/src/main/java/refinedstorage/network/MessageGridSortingUpdate.java +++ b/src/main/java/refinedstorage/network/MessageGridSettingsUpdate.java @@ -1,60 +1,68 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.tile.TileGrid; - -public class MessageGridSortingUpdate extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - private int sortingDirection; - private int sortingType; - - public MessageGridSortingUpdate() { - } - - public MessageGridSortingUpdate(TileGrid grid, int sortingDirection, int sortingType) { - this.x = grid.getPos().getX(); - this.y = grid.getPos().getY(); - this.z = grid.getPos().getZ(); - this.sortingDirection = sortingDirection; - this.sortingType = sortingType; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - sortingDirection = buf.readInt(); - sortingType = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(sortingDirection); - buf.writeInt(sortingType); - } - - @Override - public void handle(MessageGridSortingUpdate message, EntityPlayerMP player) { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof TileGrid) { - if (message.sortingDirection == TileGrid.SORTING_DIRECTION_ASCENDING || message.sortingDirection == TileGrid.SORTING_DIRECTION_DESCENDING) { - ((TileGrid) tile).setSortingDirection(message.sortingDirection); - } - - if (message.sortingType == TileGrid.SORTING_TYPE_QUANTITY || message.sortingType == TileGrid.SORTING_TYPE_NAME) { - ((TileGrid) tile).setSortingType(message.sortingType); - } - } - } -} +package refinedstorage.network; + +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import refinedstorage.tile.TileGrid; + +public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer implements IMessage { + private int x; + private int y; + private int z; + private int sortingDirection; + private int sortingType; + private int searchBoxMode; + + public MessageGridSettingsUpdate() { + } + + public MessageGridSettingsUpdate(TileGrid grid, int sortingDirection, int sortingType, int searchBoxMode) { + this.x = grid.getPos().getX(); + this.y = grid.getPos().getY(); + this.z = grid.getPos().getZ(); + this.sortingDirection = sortingDirection; + this.sortingType = sortingType; + this.searchBoxMode = searchBoxMode; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + sortingDirection = buf.readInt(); + sortingType = buf.readInt(); + searchBoxMode = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeInt(sortingDirection); + buf.writeInt(sortingType); + buf.writeInt(searchBoxMode); + } + + @Override + public void handle(MessageGridSettingsUpdate message, EntityPlayerMP player) { + TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); + + if (tile instanceof TileGrid) { + if (message.sortingDirection == TileGrid.SORTING_DIRECTION_ASCENDING || message.sortingDirection == TileGrid.SORTING_DIRECTION_DESCENDING) { + ((TileGrid) tile).setSortingDirection(message.sortingDirection); + } + + if (message.sortingType == TileGrid.SORTING_TYPE_QUANTITY || message.sortingType == TileGrid.SORTING_TYPE_NAME) { + ((TileGrid) tile).setSortingType(message.sortingType); + } + + if (message.searchBoxMode == TileGrid.SEARCH_BOX_MODE_NORMAL || message.searchBoxMode == TileGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED) { + ((TileGrid) tile).setSearchBoxMode(message.searchBoxMode); + } + } + } +} diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 45d217346..4df5be14c 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -36,7 +36,7 @@ public class CommonProxy { RefinedStorage.NETWORK.registerMessage(MessageDetectorAmountUpdate.class, MessageDetectorAmountUpdate.class, 7, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridCraftingClear.class, MessageGridCraftingClear.class, 9, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessagePriorityUpdate.class, MessagePriorityUpdate.class, 10, Side.SERVER); - RefinedStorage.NETWORK.registerMessage(MessageGridSortingUpdate.class, MessageGridSortingUpdate.class, 11, Side.SERVER); + RefinedStorage.NETWORK.registerMessage(MessageGridSettingsUpdate.class, MessageGridSettingsUpdate.class, 11, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridCraftingPush.class, MessageGridCraftingPush.class, 12, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridCraftingTransfer.class, MessageGridCraftingTransfer.class, 13, Side.SERVER); diff --git a/src/main/java/refinedstorage/tile/TileGrid.java b/src/main/java/refinedstorage/tile/TileGrid.java index 86fc515ef..928149317 100755 --- a/src/main/java/refinedstorage/tile/TileGrid.java +++ b/src/main/java/refinedstorage/tile/TileGrid.java @@ -21,6 +21,7 @@ import java.util.List; public class TileGrid extends TileMachine { public static final String NBT_SORTING_DIRECTION = "SortingDirection"; public static final String NBT_SORTING_TYPE = "SortingType"; + public static final String NBT_SEARCH_BOX_MODE = "SearchBoxMode"; public static final int SORTING_DIRECTION_ASCENDING = 0; public static final int SORTING_DIRECTION_DESCENDING = 1; @@ -28,6 +29,9 @@ public class TileGrid extends TileMachine { public static final int SORTING_TYPE_QUANTITY = 0; public static final int SORTING_TYPE_NAME = 1; + public static final int SEARCH_BOX_MODE_NORMAL = 0; + public static final int SEARCH_BOX_MODE_JEI_SYNCHRONIZED = 1; + private Container craftingContainer = new Container() { @Override public boolean canInteractWith(EntityPlayer player) { @@ -44,6 +48,7 @@ public class TileGrid extends TileMachine { private int sortingDirection = SORTING_DIRECTION_DESCENDING; private int sortingType = SORTING_TYPE_NAME; + private int searchBoxMode = SEARCH_BOX_MODE_NORMAL; @Override public int getEnergyUsage() { @@ -176,6 +181,14 @@ public class TileGrid extends TileMachine { this.sortingType = sortingType; } + public int getSearchBoxMode() { + return searchBoxMode; + } + + public void setSearchBoxMode(int searchBoxMode) { + this.searchBoxMode = searchBoxMode; + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -189,6 +202,10 @@ public class TileGrid extends TileMachine { if (nbt.hasKey(NBT_SORTING_TYPE)) { sortingType = nbt.getInteger(NBT_SORTING_TYPE); } + + if (nbt.hasKey(NBT_SEARCH_BOX_MODE)) { + searchBoxMode = nbt.getInteger(NBT_SEARCH_BOX_MODE); + } } @Override @@ -199,6 +216,7 @@ public class TileGrid extends TileMachine { nbt.setInteger(NBT_SORTING_DIRECTION, sortingDirection); nbt.setInteger(NBT_SORTING_TYPE, sortingType); + nbt.setInteger(NBT_SEARCH_BOX_MODE, searchBoxMode); } @Override @@ -207,6 +225,7 @@ public class TileGrid extends TileMachine { buf.writeInt(sortingDirection); buf.writeInt(sortingType); + buf.writeInt(searchBoxMode); } @Override @@ -215,6 +234,7 @@ public class TileGrid extends TileMachine { sortingDirection = buf.readInt(); sortingType = buf.readInt(); + searchBoxMode = buf.readInt(); } @Override diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index b50764d79..949b66bd8 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -47,13 +47,15 @@ sidebutton.refinedstorage:redstone_mode.0=Ignore redstone signal sidebutton.refinedstorage:redstone_mode.1=Only work with redstone signal sidebutton.refinedstorage:redstone_mode.2=Only work without redstone signal -sidebutton.refinedstorage:sorting.direction=Sorting Direction -sidebutton.refinedstorage:sorting.direction.0=Ascending -sidebutton.refinedstorage:sorting.direction.1=Descending - -sidebutton.refinedstorage:sorting.type=Sorting Type -sidebutton.refinedstorage:sorting.type.0=Quantity -sidebutton.refinedstorage:sorting.type.1=Name +sidebutton.refinedstorage:grid.sorting.direction=Sorting Direction +sidebutton.refinedstorage:grid.sorting.direction.0=Ascending +sidebutton.refinedstorage:grid.sorting.direction.1=Descending +sidebutton.refinedstorage:grid.sorting.type=Sorting Type +sidebutton.refinedstorage:grid.sorting.type.0=Quantity +sidebutton.refinedstorage:grid.sorting.type.1=Name +sidebutton.refinedstorage:grid.search_box_mode=Search Box Mode +sidebutton.refinedstorage:grid.search_box_mode.0=Normal +sidebutton.refinedstorage:grid.search_box_mode.1=JEI Synchronized sidebutton.refinedstorage:mode=Mode sidebutton.refinedstorage:mode.whitelist=Whitelist diff --git a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang index b57f86d95..d939ed30a 100755 --- a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang +++ b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang @@ -47,13 +47,15 @@ sidebutton.refinedstorage:redstone_mode.0=Redstone negeren sidebutton.refinedstorage:redstone_mode.1=Alleen werken met redstone signaal sidebutton.refinedstorage:redstone_mode.2=Alleen werken zonder redstone signaal -sidebutton.refinedstorage:sorting.direction=Sorteer Richting -sidebutton.refinedstorage:sorting.direction.0=Oplopend -sidebutton.refinedstorage:sorting.direction.1=Aflopend - -sidebutton.refinedstorage:sorting.type=Sorteer Type -sidebutton.refinedstorage:sorting.type.0=Hoeveelheid -sidebutton.refinedstorage:sorting.type.1=Naam +sidebutton.refinedstorage:grid.sorting.direction=Sorteer Richting +sidebutton.refinedstorage:grid.sorting.direction.0=Oplopend +sidebutton.refinedstorage:grid.sorting.direction.1=Aflopend +sidebutton.refinedstorage:grid.sorting.type=Sorteer Type +sidebutton.refinedstorage:grid.sorting.type.0=Hoeveelheid +sidebutton.refinedstorage:grid.sorting.type.1=Naam +sidebutton.refinedstorage:grid.search_box_mode=Zoekbalk Mode +sidebutton.refinedstorage:grid.search_box_mode.0=Normaal +sidebutton.refinedstorage:grid.search_box_mode.1=JEI Gesynchronizeerd sidebutton.refinedstorage:mode=Mode sidebutton.refinedstorage:mode.whitelist=Whitelist diff --git a/src/main/resources/assets/refinedstorage/textures/icons.png b/src/main/resources/assets/refinedstorage/textures/icons.png index 19f326da41151a32834b8a81cda722e9b7ceeba2..2508d63f8640073417d90a10595f689c676ecae8 100755 GIT binary patch delta 1269 zcmV^*YTdU|th=?=C7^9Vu=7`s-@W(Dk|~g%Gv|AshdK95^2_(m zO&$Uv6ikLNrvwRWNXwcCz&$+q6>ueHC0L7DDVWZgb1VQOuUP>rzzOIWI$E!;Vv!dP z*?$3U>bW_8KL}WT=j~1d(d|9UVLQN%J@`_bi9*0Ga!>hg>EPfmg8r z(d|9U;X6PEA4K{H-$0MZ_MW554hSzrB7B6G9>)S?d(Y8r2ei)kMI@kg1`CkwJx8}4 z@aCYOJrW?jgKY0Py6u4a!+!WkfbD6ry?^KEwgcWeCI?wZ0$fj#?L9}=9q^z%Cf^tP zo{;T5N4FgS^80EqzUV@FP4ja2APPuYQ~;8eNI)TDBHMEd<}3()1;_;0`8!AE65!|W zn3-$`+&i!epca5f1cifr1;7AGzS&=ZGk|5zIY7WYJ-4vTc_1nPNs9_VhAku;k$-?z zi_`!F$o!-RyZ|>prvWFR4gvA6zs{buU-p=L{0{I2l3)K}bQ%HmmNhUK8?e{kNB)U+ zKs_}-c0a}Z$qq;xaMN?lf4~lK0+^lzy#c=@0|LYV=lrpNu#RLS7Ql)MK*r#G5-~WP zTMFUw!q5vJTy1Y}{j=LxUKRlzoqs_wn(*{L0P~=gx)3 zb`y6B0oBp>KKcHS_U8LDGc#6zbQ5&~0Z&d(KRO)~8s7~%fq<#0DGd9FEPq3TE(UBT z5HLBpfj=S)HYO)S6LsS{fq;pLVBNoo_*yVN9-6ot+X)1Wjkyc%7#$5w(v5Ti0V5;9 z)pf_W!SHZsQr!#>69^a@`ga%nSFMI7-A$E1K(%@!V$%xf=nSt0GvHNl3{K}3{ecLQ z76_;ae&uNjSmvBaKoC?${eRNYEZrsee?qZ*8@A?pCk? zARzw+3YE{U|9W$4d++YfovrIXeN}1RC-~v}WJMq#gMAs42KUP??mNLW_&G=nPUn_= z1YqGI5pe4K?8(R6%72bZ(m4d22yXxN``@#*d0ETECe=xHz=aE^kN^C`>qlj2CpJkZ z5n!qP^7T^^Zen}zoqtC_ZT{$|-^t_NPi&%2BcLYx{rJZx<4bPPSp>-S4#U%5%tiug z^OClc2(Z^*o(g|F4*|9t*Es~Z>n{R=Q(l1Y#&!w;{`w0ibcrk*ED<8RQ>I00000NkvXXu0mjf^EOT< delta 1233 zcmV;?1TOp66t@(xR0ImZ000ia0czHX36ov~Cx4wuL_t(|UhSM|TU%8Wg(C^E!D=zg zAktP^s8DSQP|-Nnv6_R5TIZ=0>ujxc2xwan?ETfpea>0;=H?d2=iIg5=OOE?kT3ha zJ9!9G!DO&GC2FyTbgYR0JR*=^0ap@MqP2vTf@z;Q#{w|&niH@Bynwc$UE83Fiw*K+6v$lR|z@uZu%( zk?mbarwsu4eK(j~bRm7Fc{_X%1tcvh07*+MppY?hM$;b30@Fo2S8_7~s{;Fxm`5O7b=Ei7{$hzdZ`q5_b%fn*~V(0^!< z8h`+qpVUAQ;OFNw;04S>K=R|SvuE9hyUjge1A>9pkN+?_jez-vGti$HaMwRX{)snW zJ~cnKpJM*j2BZ!6={e>=8dPH+pR4vS+i`?oj}0S!pOxBziIyV z%=5boi;LDQEtphi5KtR^`J-!_H=liJx8?=ZMop^|2v}Sgd-wACpSM20vh&2bbJnm8h>;#;5vbT z@$n7(5n;43K5k9ijqd~k#>S%c@JqzkqR~-nl5Sil5HK?0FSuuT*qT;1(g_3%4MkVi zJ>N!ygVvK&Mo>45hN`T zP!Yl@P#18_IkA8!stkvtr+;3)pGtttF9!V4Bl90Q!eQVb0cDmI@B;k&DFgN1-g0lb zOkuzYaPwFEO}MXKlHu#U5dv17e`wlThl(zkwiN&u_q9NyU>bZMBmsBlmVE@^ z5Fin7>iqP{$NVY$AC*?;5O5;8{nzh*PtVTDStd5APOqJ^jUWEMRs{ z(sdF6?)uA1;g9Dbz;)w0hX8;5ML={a2ngM{P9Y#%f8m6D$i#6s(isHc`UC&^pPU&4 zypqt@Cprv@(ASswzuS4Ffd3Z)L;y|!{rvzw0c@xMBrPfcNt4(KW|JTa9+Myn9+Myn v9+Myn9+Myn9+Myn9+Myn2O2^yz}o)-!hcM@EQtr_00000NkvXXu0mjf-Zx1Q