Skip to content

Commit 6e25e8a

Browse files
committed
so it turns out you shouldn't reuse the same filter instance for everything
1 parent 9ece310 commit 6e25e8a

File tree

5 files changed

+28
-0
lines changed

5 files changed

+28
-0
lines changed

src/main/java/gregtech/common/covers/filter/BaseFilter.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ public BaseFilterReader getFilterReader() {
2626
return reader;
2727
}
2828

29+
@Override
30+
public BaseFilter copy() {
31+
return this;
32+
}
33+
2934
@Override
3035
public FilterType getType() {
3136
return FilterType.ERROR;
@@ -34,6 +39,8 @@ public FilterType getType() {
3439

3540
public abstract BaseFilterReader getFilterReader();
3641

42+
public abstract BaseFilter copy();
43+
3744
public final void updateFilterReader(ItemStack stack) {
3845
getFilterReader().readStack(stack);
3946
}
@@ -55,6 +62,7 @@ public final ItemStack getContainerStack() {
5562
if (stack.getItem() instanceof MetaItem<?>metaItem) {
5663
return Optional.ofNullable(metaItem.getItem(stack))
5764
.map(MetaItem.MetaValueItem::getFilterBehavior)
65+
.map(BaseFilter::copy)
5866
.orElse(ERROR_FILTER);
5967
}
6068
return ERROR_FILTER;

src/main/java/gregtech/common/covers/filter/OreDictionaryItemFilter.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,4 +113,9 @@ public boolean matchesItemStack(@NotNull ItemStack itemStack) {
113113
public boolean showGlobalTransferLimitSlider() {
114114
return true;
115115
}
116+
117+
@Override
118+
public BaseFilter copy() {
119+
return new OreDictionaryItemFilter();
120+
}
116121
}

src/main/java/gregtech/common/covers/filter/SimpleFluidFilter.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,9 @@ public int getTransferLimit(FluidStack fluidStack, int transferSize) {
6262
public FilterType getType() {
6363
return FilterType.FLUID;
6464
}
65+
66+
@Override
67+
public BaseFilter copy() {
68+
return new SimpleFluidFilter();
69+
}
6570
}

src/main/java/gregtech/common/covers/filter/SimpleItemFilter.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ public int getTransferLimit(ItemStack stack, int transferSize) {
4848
return getTransferLimit(matchedSlot, transferSize);
4949
}
5050

51+
@Override
52+
public BaseFilter copy() {
53+
return new SimpleItemFilter();
54+
}
55+
5156
public static int itemFilterMatch(IItemHandler filterSlots, boolean ignoreDamage,
5257
boolean ignoreNBTData, ItemStack itemStack) {
5358
for (int i = 0; i < filterSlots.getSlots(); i++) {

src/main/java/gregtech/common/covers/filter/SmartItemFilter.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ public boolean showGlobalTransferLimitSlider() {
7676
return true;
7777
}
7878

79+
@Override
80+
public BaseFilter copy() {
81+
return new SmartItemFilter();
82+
}
83+
7984
private static class ItemAndMetadataAndStackSize {
8085

8186
public final ItemAndMetadata itemAndMetadata;

0 commit comments

Comments
 (0)