diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index 279dd585e38..88a9a867011 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -2,6 +2,9 @@ import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.cover.filter.FilterHandler; +import com.gregtechceu.gtceu.api.cover.filter.FilterHandlers; +import com.gregtechceu.gtceu.api.cover.filter.ItemFilter; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; @@ -78,12 +81,17 @@ public class ItemBusPartMachine extends TieredIOPartMachine @Persisted @DescSynced private boolean isDistinct = false; + @Persisted + @DescSynced + @Getter + protected final FilterHandler filterHandler; public ItemBusPartMachine(IMachineBlockEntity holder, int tier, IO io, Object... args) { super(holder, tier, io); this.inventory = createInventory(args); this.circuitSlotEnabled = true; this.circuitInventory = createCircuitItemHandler(io).shouldSearchContent(false); + filterHandler = FilterHandlers.item(this); } ////////////////////////////////////// @@ -99,8 +107,14 @@ protected int getInventorySize() { return sizeRoot * sizeRoot; } + protected boolean matchesFilter(ItemStack stack) { + if (filterHandler.isFilterPresent()) + return filterHandler.getFilter().test(stack); + return true; + } + protected NotifiableItemStackHandler createInventory(Object... args) { - return new NotifiableItemStackHandler(this, getInventorySize(), io); + return new NotifiableItemStackHandler(this, getInventorySize(), io).setFilter(this::matchesFilter); } protected NotifiableItemStackHandler createCircuitItemHandler(Object... args) { @@ -318,6 +332,8 @@ public Widget createUIWidget() { var group = new WidgetGroup(0, 0, 18 * rowSize + 16, 18 * colSize + 16); var container = new WidgetGroup(4, 4, 18 * rowSize + 8, 18 * colSize + 8); int index = 0; + group.addWidget(filterHandler.createFilterSlotUI(-115 + (18 * rowSize) / 2, 35 + 11 * rowSize)); + // group.addWidget(filterHandler.createFilterConfigUI(-100, 100, 156, 60)); for (int y = 0; y < colSize; y++) { for (int x = 0; x < rowSize; x++) { container.addWidget( @@ -329,7 +345,6 @@ public Widget createUIWidget() { container.setBackground(GuiTextures.BACKGROUND_INVERSE); group.addWidget(container); - return group; } }