Skip to content

Commit 53dc2bf

Browse files
zetrock1jurrejelle
andauthored
Output bus filtering (#4337)
Co-authored-by: jurrejelle <jurre@jilles.com>
1 parent a380ea3 commit 53dc2bf

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import com.gregtechceu.gtceu.api.blockentity.IPaintable;
44
import 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;
58
import com.gregtechceu.gtceu.api.gui.GuiTextures;
69
import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel;
710
import 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

Comments
 (0)