From 3ed83798e0ee6731f2340ad8e24f4177f13e03dd Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 30 Jul 2016 00:56:30 +0200 Subject: [PATCH] Actually filter items in grid --- .../container/ContainerGrid.java | 4 ++ .../java/refinedstorage/gui/grid/GuiGrid.java | 25 +++++++++++- .../refinedstorage/tile/grid/TileGrid.java | 36 ++++++++++++++++++ .../textures/gui/crafting_grid.png | Bin 2089 -> 2168 bytes .../refinedstorage/textures/gui/grid.png | Bin 1960 -> 2043 bytes .../textures/gui/pattern_grid.png | Bin 2625 -> 2712 bytes 6 files changed, 63 insertions(+), 2 deletions(-) diff --git a/src/main/java/refinedstorage/container/ContainerGrid.java b/src/main/java/refinedstorage/container/ContainerGrid.java index 775e32ddb..308649927 100755 --- a/src/main/java/refinedstorage/container/ContainerGrid.java +++ b/src/main/java/refinedstorage/container/ContainerGrid.java @@ -59,6 +59,10 @@ public class ContainerGrid extends ContainerBase { addSlotToContainer(new SlotItemHandler(((TileGrid) grid).getPatterns(), 0, 152, 96)); addSlotToContainer(new SlotOutput(((TileGrid) grid).getPatterns(), 1, 152, 132)); } + + if (!(grid instanceof WirelessGrid)) { + addSlotToContainer(new SlotItemHandler(((TileGrid) grid).getFilter(), 0, 204, 6)); + } } public IGrid getGrid() { diff --git a/src/main/java/refinedstorage/gui/grid/GuiGrid.java b/src/main/java/refinedstorage/gui/grid/GuiGrid.java index b316fa7d5..4a268be27 100755 --- a/src/main/java/refinedstorage/gui/grid/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/grid/GuiGrid.java @@ -13,6 +13,7 @@ import net.minecraftforge.fml.common.FMLCommonHandler; import org.apache.commons.lang3.StringUtils; import refinedstorage.RefinedStorage; import refinedstorage.api.network.GridExtractFlags; +import refinedstorage.api.storage.CompareUtils; import refinedstorage.block.EnumGridType; import refinedstorage.container.ContainerGrid; import refinedstorage.gui.GuiBase; @@ -45,7 +46,7 @@ public class GuiGrid extends GuiBase { private int slotNumber; public GuiGrid(ContainerGrid container, IGrid grid) { - super(container, 193, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 247 : 208); + super(container, !(grid instanceof WirelessGrid) ? 227 : 193, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 247 : 208); setScrollbar(new Scrollbar(174, 20, 12, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 70 : 88)); getScrollbar().setCanScroll(false); @@ -99,6 +100,26 @@ public class GuiGrid extends GuiBase { while (t.hasNext()) { ClientStack stack = t.next(); + if (!(grid instanceof WirelessGrid)) { + List filteredItems = ((TileGrid) grid).getFilteredItems(); + + boolean found = filteredItems.isEmpty(); + + for (ItemStack item : filteredItems) { + if (CompareUtils.compareStackNoQuantity(stack.getStack(), item)) { + found = true; + + break; + } + } + + if (!found) { + t.remove(); + + continue; + } + } + if (grid.getViewType() == TileGrid.VIEW_TYPE_NON_CRAFTABLES && stack.isCraftable()) { t.remove(); @@ -222,7 +243,7 @@ public class GuiGrid extends GuiBase { ty = 2; } - drawTexture(x + 152, y + 114, 195, ty * 16, 16, 16); + drawTexture(x + 152, y + 114, 240, ty * 16, 16, 16); } searchField.drawTextBox(); diff --git a/src/main/java/refinedstorage/tile/grid/TileGrid.java b/src/main/java/refinedstorage/tile/grid/TileGrid.java index af8c33670..e15f19591 100755 --- a/src/main/java/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/refinedstorage/tile/grid/TileGrid.java @@ -23,6 +23,7 @@ import refinedstorage.inventory.BasicItemHandler; import refinedstorage.inventory.BasicItemValidator; import refinedstorage.item.ItemPattern; import refinedstorage.network.MessageGridSettingsUpdate; +import refinedstorage.tile.TileBase; import refinedstorage.tile.TileNode; import refinedstorage.tile.config.IRedstoneModeConfig; @@ -65,6 +66,31 @@ public class TileGrid extends TileNode implements IGrid { private InventoryCraftResult result = new InventoryCraftResult(); private BasicItemHandler patterns = new BasicItemHandler(2, this, new BasicItemValidator(RefinedStorageItems.PATTERN)); + private BasicItemHandler filter = new BasicItemHandler(1, this, new BasicItemValidator(RefinedStorageItems.GRID_FILTER)) { + @Override + protected void onContentsChanged(int slot) { + super.onContentsChanged(slot); + + filteredItems.clear(); + + ItemStack stack = getStackInSlot(slot); + + if (stack != null && stack.hasTagCompound()) { + BasicItemHandler items = new BasicItemHandler(9 * 3); + + TileBase.readItems(items, 0, stack.getTagCompound()); + + for (int i = 0; i < items.getSlots(); ++i) { + ItemStack item = items.getStackInSlot(i); + + if (item != null) { + filteredItems.add(item); + } + } + } + } + }; + private List filteredItems = new ArrayList(); private EnumGridType type; @@ -127,6 +153,14 @@ public class TileGrid extends TileNode implements IGrid { return patterns; } + public BasicItemHandler getFilter() { + return filter; + } + + public List getFilteredItems() { + return filteredItems; + } + public void onCraftingMatrixChanged() { markDirty(); @@ -334,6 +368,7 @@ public class TileGrid extends TileNode implements IGrid { readItemsLegacy(matrix, 0, tag); readItems(patterns, 1, tag); + readItems(filter, 2, tag); if (tag.hasKey(NBT_VIEW_TYPE)) { viewType = tag.getInteger(NBT_VIEW_TYPE); @@ -358,6 +393,7 @@ public class TileGrid extends TileNode implements IGrid { writeItemsLegacy(matrix, 0, tag); writeItems(patterns, 1, tag); + writeItems(filter, 2, tag); tag.setInteger(NBT_VIEW_TYPE, viewType); tag.setInteger(NBT_SORTING_DIRECTION, sortingDirection); diff --git a/src/main/resources/assets/refinedstorage/textures/gui/crafting_grid.png b/src/main/resources/assets/refinedstorage/textures/gui/crafting_grid.png index 8a4578e0a650ead38e2bc33bb7adc354bd1892ea..3541a86c6c269b6f853ea90baa4dba354b95308a 100755 GIT binary patch literal 2168 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(0|PTd zfKP}kP~62^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;M)Vjj8pd%c>)C`OI#yLg7ec#$`gxH8440J^GfvcQcDy}^bGV24c2mT z9RQXncRgJkLn`9l-svv7Wgy^|$bRUz{ifHa`=4YdU5P#ZY2M{CGdK#C#-z{C9WOw#v{u)wRF7fA}s~S@n1Q`@&j#9jE>qxePznZ9ASEai72Yf^ykw z#xED7PBTbFl$sqlyn6Y*1A8P7T;KH1ayhfj+*|XW$~f@*er*Q2^uUG-dw~=KLtC&U zYs0>6m0KBX+P5djz2rW#TkgO~#sszn-~D$k@7rlF7kRemQ`~tbhx49$*O_ga^)#iD zf#E{^raIPB{WsqFG0b*luV7)!_%-#N2;+k2_ORXWrvI1O#qF?t!rYSoaoZU+c)|7n zi5nH_rCSBl8QyMsBJ;hhFJmZM8L%OeJ+?iBmu!_xrU6fFgOz-@XI-eB1{ef$g zTcsYuUwM6ov$u8TYcKfC!FxdTf~bVUdfvy8Ijflu7=mp4Y{m_wek3=1jOUfk-7|lW zdc(Y3S&w5F=5Pk=EB_sNeJ|5A*?*b)&hOG|cs9}KhxUf2!rTeY3K9pR6r>J#DaafM zQjj~~^xzqT)cobYk0~*oVNqgwv2WvS<}=drOZ-D@81B}I^EsFYUt}oJ7Uyv=S3Amd zp)g9LVXYqbfxZhyWi5R@FHXv{0BzOcI`HfF32WPgOS+79oIqDy*mD*foEL72GcGV) z3UsY`5W^j*2Ww;(`df)U=mG`#tnHCNl7Ydhniau4z_38R;Dqe2LJryDK428xy5uQ) z>%V0&3s@2^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;M)trjPAcDtOW{6l(rIsj|=o#o)<`~!c z0SlCVPZ!6KinzCTy8CV!h`3(l;rajnq^2VKY?~0tVt=(`)!Tz!oOu`Lf*&9DI#>B*amDaIVJaF~OKRr-^ zcGn{poGznuR2a70{}9Ev8*^G(q#7N!@)zOTx* zolKj4nFXlpLhlteux1b;u+{fINU(q@=lrL0W`@i!rl_Xd+`ecUZc@mcadpba#C5a5 ziglKODIn31x5Ny@Zph5M@9B5t2+xAz>2p5jxL=RCc!YOBXz;Q2oq0?k1si67DG+nl z#9JVWVcF7Jb<03uU2{O3FXm#R-x>kOV5Z!Qh2k7O2c-m@)0! z+$S!++jjG?W|%NovF|8hH~6o9di_s^5~o2|TL zzWVm#tLOK4<$RZpTY7uNc_xF}V#bX7iIwvjet%!bSi$tJlxM;Bw#unDZZQ~u0s|-q z3f6iaga2z2m(Q*DuTyWZE4h3wia~}mpuX&P-1AzdYohh0_p9fMJN))w{Udne^Gogo z_XWlcYaQ|#q#NHcTx0snxQ1n)jKk;DUpsfoF^VzSGQD{IY@bZR%|G2=n6Jt=#M!^* zbI=do%lIO6oiW4Sik12dvGK3D64qa4Dp1X`3mOC?^lK{#ssBH&|1L>>M96;*A zzQds4mt*+F)E;wjy7P-!#(sAgtS)(q&iyZA3Gyu%YM6UED1neH??NQYc-e}n9ITZhW9G!SxIae%0QmO zZ@$-@3pQV$^RXrzl61;vPx;8Z7Ls;A%At`0*2(b0uXwRqT7wxAL&H8sJ+X$wsO>W! zF}}OMwTzpWui>R;#?s2m6D6nRXfu?&HABK%3jeUP+8%XVdgakNkV&4delF{r5}E*; CriniQ diff --git a/src/main/resources/assets/refinedstorage/textures/gui/grid.png b/src/main/resources/assets/refinedstorage/textures/gui/grid.png index 2d2cb3a5f22a6b6753e171e3f7db912ffa1d4611..fb1d4edf2cd04bff8f1c38363044282ae5605e40 100644 GIT binary patch literal 2043 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(0|PTd zfKP}kP~62^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;M)ztjK_amF#`%pmbgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48m#5w zIshzD5a`X@4N2i01(Ox*2k_`BaPs&uy0?_iZ9a;Hqr zUp_E1|Kj=AFTT&7`Rt`hLEiJ*c1Qe~E?;u!tL?j)CEY!d_7E%%I`@ zTg@^MsO6d7VAL}AtDZ9>8!y92##6?@r4#P)uoct>ys0f>d~u=t=i8s{%ojEnWta5) z<6&P=+YSzJht>Q7Kz}*>=Hq5yy71i~s^|XKfZUr`3z;*{g(S=5eJzCr0mEBs9XOjI z@c!curDqss?cO4hZoNu(w^bg)-AvPCvv;nChi=CGL~xjaHGS|cT4a^Ra5groXS3|p zX|b~A4ez!{JwAKqI$X_`_ZtxA{{RQ`0SS;SP~r}QNp-H_x$@BHveG*YRohn@?puh< zY5OwsLXPtoxG^v&m^&O(sf_=V;i1C vFglp#G6eWaGlX1bW4OA7N?bL|12+HJJK6T~7F+ljfqdra>gTe~DWM4f^VMtb literal 1960 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(0|PTd zfKP}kP~62^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;M)Vjj8pd%c>)C`N?apKg7ec#$`gxH8440J^GfvcQcDy}^bGVYbByc! zfCUPlr;B4qMcmuF7xRP-1==pEX5Rllk=eWMn(yJGr#?F9%=h>$%=ASmqqN$NwPcs%ibfo>h{&Ad9g6+fO>g#8&)!(zReY#JQ zV?up)pWXf3&tIneW&>)goOlnU8w}iR)9!-ArZSu_uYA8vlkJ4A_v#OM>YGcmf_Wzd z_jB2wsg(w)thm7h*1*8LT2G7oFm{S$-=V`^@PBJ`d^ER${@Aa(#2pUmHa@H|in$ORy!Am9KA-2*Z}vlPzTuCZs>S)D6- z?|s@fzuZ-fpRPVz@qs%EtHT`b=Dq{Q3rOb%vjZLSOaJc8z5T6td8W;Q_4bz4ZESxG zKIXq=zgO?`Q{=9ERSK*7InjnQsmv30<}esd=XH3tiSa~?8NXP!IlpsiW~S@i*+@XD0MM?2 z95t90003%)>*fgN9!^ALz`kG*9|%?|GEZX4WAslN3rM?Ae@?4+~MyrlVc2d`PSxz(t8Fi5_C13+>!kd@0ffczNw$cIsg zOn9Rv#Tbp3?KucTZv}jGMvGUBrGmZnD(Y(H_VzJJu9$+EB5T+MNjgit5g|0VYa^ zvNQ?f?B>|km!NX;!|$oMwSGsRD#zs)orav?qAQURn|Z0Y$DZUj-jh-Nql#sU zUC|29(}soyo?c=Ru^hLrnHG?|FMFIVW)onFFr>|WVsGw|6^Iv38nii;imgJl)^TNi zmQDou_zLl|n2od02YHi{7^Yu^cKX-hQg+sATBLNivA37o*gM`kK3*;%&%zyIPKF}3 zU%sTdrL;-fQW{;9lK?uT@ciL7&K;LaEO3Hrf-aFLYs>{VaPw^|$0%S-VMtSW?d-BD z2D6JhJ^UT|Bg&eyd^kjly8Fee`R@7g3(;X#`90$nRK)2wKgz8xiI#CeGwa?Qxry*q zHkCF5doC5|!9LALBQ0RJk`y|#mW+ZGB;$ye#^#Q*kv)4B-vBm9e zCcjxY+p~6s5MzHv8uoy`PThG!*XL{Q5xwZTlYtC0VMgI*c4vC-0<6k`1S^X5jTgg* z6NuGQ8I-B;OJc>eOY^4#CVwBQg_$Shn>@Qym2vdc9j zMNh?1+s{ljLIX{cJAzJ7(HFj+hA$81+Ba@`OT;qtxqEF5ZvB^`4APP!0Fa;fqv}KH zcwt$BmZVd=$gzp?kd#{68U3nQG#r$3gcIR8>a0ye|U5=+4^vmFtwJpj;#0 z&>s3WVf>H%Qwu3MKLr68XYFT%Zc2xqP?XI(z*jV|oD!eR4iZBw7_{ZpL)dobExHFf vIff2f@&W377Xn3rc(C&k5ww$=13#JG+)f@|AN8PJRnpzn%O!u6|FM4o3=p(K delta 1536 zcmZ8fdo2u) zeY`g%f*PS&*O2?rt&5|R9pCP)^=o+$>yn4th!ra4oyiNXbz60eC2XHejpa)$uHmb6 zh)Z#yR9#3^bMO7aRpHPIZ!W3Hml8X?@Mp}yTsL3tax6Sc24dv52hxBO4x`s7E z)(M!}-Kv3AhNl$-YoF7hKt{{lc(@E!@RBY(qaNu`#~_>~nh|;x-Lqn^BeaDmHa1B_ zoX^`PN9zjN!|DlO?Bdiya?_l`6FtcE{FyD38hyp#>S;=8v<4E{Otcxr;RhB+Ob2Fn zMbt`pCD4WCGy0F}!j@|4EeF!2ugJ*r-5BWBoUDB|lc%I4nv{b+@v%`fR3*cX`u>gXV zwW2a`A!=Ad4zujo7E48dxv0kx1$nQiaBS#=3`rI46HVUn)k`E7QN4SR6sj>m+7CGhV@`w_LBg97JpN&kkbO3RQ;i)+Rp+npal%!D|J`3osRO%b2_ z?^aqT>s9;^x?hTn_D8w7*5&~ZmO>qID~~_H$v*d&;V|#EH|Ivo%)?$y9(}4FDbSF{ zoIPcfHSf&p4yMOqcXdri4)OJgiahr+&gYhk3(=o6=Og17K|zi8?^(2dBFcpf6cvzdQi|)^&wKo2 z;YIIGj?(L*#5tRnTz(6p++lT;XMX(oKoV7gcaol(lbla7sVRBkYp{}RZZymY!jJm_ z+IrtkurT1pXax(Js=$zDO#-HBpAIncO#lM|Ub|%gdxOna47lqHFMC-!7zi9^^}v_T z3jcNqprbt^xmVyEb6-i~sbD+j9rkIy=;TspdJb4A>cu_%m?Ck7NWl7d(Nu+*Fa^E? zAA&CnlhDj_MxW{_ILH;V2Zbz+{zDP6Mm2H-%(oCSZ!iibNeN_NVo$`v3Z>TDK}8Qy zmY{!3?rz9Iiyj?ZXC7wVftDm#q<`@MZiW6wSiVrMb*4X(fh8