22
33import com .gregtechceu .gtceu .api .blockentity .IPaintable ;
44import com .gregtechceu .gtceu .api .capability .recipe .IO ;
5+ import com .gregtechceu .gtceu .api .cover .filter .FilterHandler ;
6+ import com .gregtechceu .gtceu .api .cover .filter .FilterHandlers ;
7+ import com .gregtechceu .gtceu .api .cover .filter .ItemFilter ;
58import com .gregtechceu .gtceu .api .gui .GuiTextures ;
69import com .gregtechceu .gtceu .api .gui .fancy .ConfiguratorPanel ;
710import com .gregtechceu .gtceu .api .gui .widget .SlotWidget ;
@@ -78,12 +81,17 @@ public class ItemBusPartMachine extends TieredIOPartMachine
7881 @ Persisted
7982 @ DescSynced
8083 private boolean isDistinct = false ;
84+ @ Persisted
85+ @ DescSynced
86+ @ Getter
87+ protected final FilterHandler <ItemStack , ItemFilter > filterHandler ;
8188
8289 public ItemBusPartMachine (IMachineBlockEntity holder , int tier , IO io , Object ... args ) {
8390 super (holder , tier , io );
8491 this .inventory = createInventory (args );
8592 this .circuitSlotEnabled = true ;
8693 this .circuitInventory = createCircuitItemHandler (io ).shouldSearchContent (false );
94+ filterHandler = FilterHandlers .item (this );
8795 }
8896
8997 //////////////////////////////////////
@@ -99,8 +107,14 @@ protected int getInventorySize() {
99107 return sizeRoot * sizeRoot ;
100108 }
101109
110+ protected boolean matchesFilter (ItemStack stack ) {
111+ if (filterHandler .isFilterPresent ())
112+ return filterHandler .getFilter ().test (stack );
113+ return true ;
114+ }
115+
102116 protected NotifiableItemStackHandler createInventory (Object ... args ) {
103- return new NotifiableItemStackHandler (this , getInventorySize (), io );
117+ return new NotifiableItemStackHandler (this , getInventorySize (), io ). setFilter ( this :: matchesFilter ) ;
104118 }
105119
106120 protected NotifiableItemStackHandler createCircuitItemHandler (Object ... args ) {
@@ -318,6 +332,7 @@ public Widget createUIWidget() {
318332 var group = new WidgetGroup (0 , 0 , 18 * rowSize + 16 , 18 * colSize + 16 );
319333 var container = new WidgetGroup (4 , 4 , 18 * rowSize + 8 , 18 * colSize + 8 );
320334 int index = 0 ;
335+ group .addWidget (filterHandler .createFilterSlotUI (-115 + (18 * rowSize ) / 2 , 35 + 11 * rowSize ));
321336 for (int y = 0 ; y < colSize ; y ++) {
322337 for (int x = 0 ; x < rowSize ; x ++) {
323338 container .addWidget (
@@ -329,7 +344,6 @@ public Widget createUIWidget() {
329344
330345 container .setBackground (GuiTextures .BACKGROUND_INVERSE );
331346 group .addWidget (container );
332-
333347 return group ;
334348 }
335349}
0 commit comments