From 82cc35473606c5444507083c6a67cc0c9d67b1bc Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Fri, 19 Jan 2024 16:40:18 -0700 Subject: [PATCH] remove onMatched replace with MatchResult (again) rename some methods --- .../gregtech/common/covers/CoverConveyor.java | 86 ++++++++----------- .../common/covers/CoverItemFilter.java | 6 +- .../common/covers/CoverItemVoiding.java | 4 +- .../covers/CoverItemVoidingAdvanced.java | 10 +-- .../detector/CoverDetectorItemAdvanced.java | 2 +- .../covers/filter/BaseFilterContainer.java | 14 +-- .../gregtech/common/covers/filter/Filter.java | 9 +- .../common/covers/filter/FluidFilter.java | 19 +--- .../common/covers/filter/ItemFilter.java | 15 +--- .../covers/filter/ItemFilterWrapper.java | 2 +- .../common/covers/filter/MatchResult.java | 25 ++++++ .../filter/OreDictionaryItemFilter.java | 6 +- .../covers/filter/SimpleFluidFilter.java | 10 +-- .../covers/filter/SimpleItemFilter.java | 4 +- .../common/covers/filter/SmartItemFilter.java | 4 +- .../electric/MetaTileEntityItemCollector.java | 2 +- .../pipelike/itempipe/net/ItemNetHandler.java | 34 ++++---- 17 files changed, 115 insertions(+), 137 deletions(-) create mode 100644 src/main/java/gregtech/common/covers/filter/MatchResult.java diff --git a/src/main/java/gregtech/common/covers/CoverConveyor.java b/src/main/java/gregtech/common/covers/CoverConveyor.java index 486d16c7290..77fb21181a9 100644 --- a/src/main/java/gregtech/common/covers/CoverConveyor.java +++ b/src/main/java/gregtech/common/covers/CoverConveyor.java @@ -1,7 +1,5 @@ package gregtech.common.covers; -import com.cleanroommc.modularui.value.sync.StringSyncValue; - import gregtech.api.GTValues; import gregtech.api.capability.GregtechDataCodes; import gregtech.api.capability.GregtechTileCapabilities; @@ -28,8 +26,6 @@ import gregtech.common.covers.filter.ItemFilterContainer; import gregtech.common.pipelike.itempipe.tile.TileEntityItemPipe; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -63,23 +59,22 @@ import com.cleanroommc.modularui.value.sync.EnumSyncValue; import com.cleanroommc.modularui.value.sync.GuiSyncManager; import com.cleanroommc.modularui.value.sync.IntSyncValue; +import com.cleanroommc.modularui.value.sync.StringSyncValue; import com.cleanroommc.modularui.widget.ParentWidget; import com.cleanroommc.modularui.widgets.ButtonWidget; import com.cleanroommc.modularui.widgets.layout.Column; import com.cleanroommc.modularui.widgets.layout.Row; import com.cleanroommc.modularui.widgets.textfield.TextFieldWidget; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap; -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet; import org.jetbrains.annotations.NotNull; import java.util.Collections; import java.util.Map; import java.util.Set; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; public class CoverConveyor extends CoverBase implements CoverWithUI, ITickable, IControllable { @@ -304,13 +299,9 @@ protected int moveInventoryItems(IItemHandler sourceInventory, IItemHandler targ continue; } - AtomicBoolean matchResult = new AtomicBoolean(true); - AtomicInteger matchSlotIndex = new AtomicInteger(-1); - itemFilterContainer.onMatch(itemStack, (matched, match, matchedSlot) -> { - matchResult.set(matched); - matchSlotIndex.set(matchedSlot); - }); - if (!matchResult.get() || !itemInfos.containsKey(matchSlotIndex.get())) { + var matchResult = itemFilterContainer.match(itemStack); + int matchSlotIndex = matchResult.getFilterIndex(); + if (!matchResult.isMatched() || !itemInfos.containsKey(matchSlotIndex)) { continue; } @@ -355,11 +346,8 @@ protected int moveInventoryItems(IItemHandler sourceInventory, IItemHandler targ continue; } - AtomicBoolean didMatch = new AtomicBoolean(true); - itemFilterContainer.onMatch(sourceStack, (matched, match, matchedSlot) -> { - didMatch.set(matched); - }); - if (!didMatch.get()) continue; + var result = itemFilterContainer.match(sourceStack); + if (!result.isMatched()) continue; ItemStack remainder = GTTransferUtils.insertItem(targetInventory, sourceStack, true); int amountToInsert = sourceStack.getCount() - remainder.getCount(); @@ -417,20 +405,19 @@ protected Map countInventoryItemsByType(@NotNull IItemH continue; } - int finalSrcIndex = srcIndex; - itemFilterContainer.onMatch(itemStack, (matched, match, matchedSlot) -> { - if (!matched) return; - if (!result.containsKey(itemStack)) { - TypeItemInfo itemInfo = new TypeItemInfo(itemStack.copy(), matchedSlot, new IntArrayList(), 0); - itemInfo.totalCount += itemStack.getCount(); - itemInfo.slots.add(finalSrcIndex); - result.put(itemStack.copy(), itemInfo); - } else { - TypeItemInfo itemInfo = result.get(itemStack); - itemInfo.totalCount += itemStack.getCount(); - itemInfo.slots.add(finalSrcIndex); - } - }); + var matchResult = itemFilterContainer.match(itemStack); + if (!matchResult.isMatched()) continue; + + if (!result.containsKey(itemStack)) { + TypeItemInfo itemInfo = new TypeItemInfo(itemStack.copy(), matchResult.getFilterIndex(), new IntArrayList(), 0); + itemInfo.totalCount += itemStack.getCount(); + itemInfo.slots.add(srcIndex); + result.put(itemStack.copy(), itemInfo); + } else { + TypeItemInfo itemInfo = result.get(itemStack); + itemInfo.totalCount += itemStack.getCount(); + itemInfo.slots.add(srcIndex); + } } return result; } @@ -444,20 +431,21 @@ protected Map countInventoryItemsByMatchSlot(@NotNull II continue; } - itemFilterContainer.onMatch(itemStack, (matched, match, matchedSlot) -> { - if (!matched) return; - if (!result.containsKey(matchedSlot)) { - GroupItemInfo itemInfo = new GroupItemInfo(matchedSlot, - new ObjectOpenCustomHashSet<>(ItemStackHashStrategy.comparingAllButCount()), 0); - itemInfo.itemStackTypes.add(itemStack.copy()); - itemInfo.totalCount += itemStack.getCount(); - result.put(matchedSlot, itemInfo); - } else { - GroupItemInfo itemInfo = result.get(matchedSlot); - itemInfo.itemStackTypes.add(itemStack.copy()); - itemInfo.totalCount += itemStack.getCount(); - } - }); + var matchResult = itemFilterContainer.match(itemStack); + if (!matchResult.isMatched()) continue; + int matchedSlot = matchResult.getFilterIndex(); + + if (!result.containsKey(matchedSlot)) { + GroupItemInfo itemInfo = new GroupItemInfo(matchedSlot, + new ObjectOpenCustomHashSet<>(ItemStackHashStrategy.comparingAllButCount()), 0); + itemInfo.itemStackTypes.add(itemStack.copy()); + itemInfo.totalCount += itemStack.getCount(); + result.put(matchedSlot, itemInfo); + } else { + GroupItemInfo itemInfo = result.get(matchedSlot); + itemInfo.itemStackTypes.add(itemStack.copy()); + itemInfo.totalCount += itemStack.getCount(); + } } return result; @@ -775,7 +763,7 @@ public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate return stack; } if (manualImportExportMode == ManualImportExportMode.FILTERED && - !itemFilterContainer.testItemStack(stack)) { + !itemFilterContainer.test(stack)) { return stack; } return super.insertItem(slot, stack, simulate); @@ -789,7 +777,7 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) { } if (manualImportExportMode == ManualImportExportMode.FILTERED) { ItemStack result = super.extractItem(slot, amount, true); - if (result.isEmpty() || !itemFilterContainer.testItemStack(result)) { + if (result.isEmpty() || !itemFilterContainer.test(result)) { return ItemStack.EMPTY; } return simulate ? result : super.extractItem(slot, amount, false); diff --git a/src/main/java/gregtech/common/covers/CoverItemFilter.java b/src/main/java/gregtech/common/covers/CoverItemFilter.java index f7a0bf80495..a77551ca3b0 100644 --- a/src/main/java/gregtech/common/covers/CoverItemFilter.java +++ b/src/main/java/gregtech/common/covers/CoverItemFilter.java @@ -124,7 +124,7 @@ public boolean canPipePassThrough() { } public boolean testItemStack(ItemStack stack) { - return itemFilter.testItemStack(stack); + return itemFilter.test(stack); } @Override @@ -213,7 +213,7 @@ public ItemHandlerFiltered(IItemHandler delegate) { @NotNull @Override public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate) { - if (getFilterMode() == ItemFilterMode.FILTER_EXTRACT || !itemFilter.testItemStack(stack)) { + if (getFilterMode() == ItemFilterMode.FILTER_EXTRACT || !itemFilter.test(stack)) { return stack; } return super.insertItem(slot, stack, simulate); @@ -224,7 +224,7 @@ public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate public ItemStack extractItem(int slot, int amount, boolean simulate) { if (getFilterMode() != ItemFilterMode.FILTER_INSERT) { ItemStack result = super.extractItem(slot, amount, true); - if (result.isEmpty() || !itemFilter.testItemStack(result)) { + if (result.isEmpty() || !itemFilter.test(result)) { return ItemStack.EMPTY; } return simulate ? result : super.extractItem(slot, amount, false); diff --git a/src/main/java/gregtech/common/covers/CoverItemVoiding.java b/src/main/java/gregtech/common/covers/CoverItemVoiding.java index 7ee6f9f13d3..d6e2a548a1a 100644 --- a/src/main/java/gregtech/common/covers/CoverItemVoiding.java +++ b/src/main/java/gregtech/common/covers/CoverItemVoiding.java @@ -70,7 +70,7 @@ void voidAny(IItemHandler myItemHandler) { if (sourceStack.isEmpty()) { continue; } - if (!itemFilterContainer.testItemStack(sourceStack)) { + if (!itemFilterContainer.test(sourceStack)) { continue; } myItemHandler.extractItem(srcIndex, Integer.MAX_VALUE, false); @@ -179,7 +179,7 @@ public ItemStack getStackInSlot(int slot) { @NotNull @Override public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate) { - if (!itemFilterContainer.testItemStack(stack)) { + if (!itemFilterContainer.test(stack)) { return stack; } return ItemStack.EMPTY; diff --git a/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java b/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java index ec61ac0d480..37851648ae5 100644 --- a/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java +++ b/src/main/java/gregtech/common/covers/CoverItemVoidingAdvanced.java @@ -42,7 +42,6 @@ import org.jetbrains.annotations.NotNull; import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; public class CoverItemVoidingAdvanced extends CoverItemVoiding { @@ -78,13 +77,8 @@ protected void voidOverflow(IItemHandler myItemHandler) { if (!getItemFilterContainer().hasFilter()) { itemToVoidAmount = typeItemInfo.totalCount - itemFilterContainer.getTransferSize(); } else { - AtomicInteger atomicInt = new AtomicInteger(itemToVoidAmount); - itemFilterContainer.onMatch(typeItemInfo.itemStack, (matched, match, matchedSlot) -> { - if (matched) { - atomicInt.set(typeItemInfo.totalCount - itemFilterContainer.getTransferLimit(matchedSlot)); - } - }); - itemToVoidAmount = atomicInt.get(); + var result = itemFilterContainer.match(typeItemInfo.itemStack); + itemToVoidAmount = result.getMatchedStack().getCount(); } if (itemToVoidAmount <= 0) { diff --git a/src/main/java/gregtech/common/covers/detector/CoverDetectorItemAdvanced.java b/src/main/java/gregtech/common/covers/detector/CoverDetectorItemAdvanced.java index 66d33172900..c3c59a6a8de 100644 --- a/src/main/java/gregtech/common/covers/detector/CoverDetectorItemAdvanced.java +++ b/src/main/java/gregtech/common/covers/detector/CoverDetectorItemAdvanced.java @@ -151,7 +151,7 @@ public void update() { int storedItems = 0; for (int i = 0; i < itemHandler.getSlots(); i++) { - if (itemFilter.testItemStack(itemHandler.getStackInSlot(i))) + if (itemFilter.test(itemHandler.getStackInSlot(i))) storedItems += itemHandler.getStackInSlot(i).getCount(); } diff --git a/src/main/java/gregtech/common/covers/filter/BaseFilterContainer.java b/src/main/java/gregtech/common/covers/filter/BaseFilterContainer.java index 07b0d0367f5..a047f920022 100644 --- a/src/main/java/gregtech/common/covers/filter/BaseFilterContainer.java +++ b/src/main/java/gregtech/common/covers/filter/BaseFilterContainer.java @@ -77,10 +77,17 @@ public int getTransferLimit(int slotIndex) { return currentItemFilter.getTransferLimit(slotIndex, getTransferSize()); } - public boolean testItemStack(R toTest) { + public boolean test(R toTest) { return !hasFilter() || getFilter().test(toTest); } + public MatchResult match(R toMatch) { + if (!hasFilter()) + return new MatchResult<>(true, toMatch, -1); + + return getFilter().match(toMatch); + } + public int getTransferLimit(R stack) { if (isBlacklistFilter() || currentItemFilter == null) { return getTransferSize(); @@ -116,11 +123,6 @@ public boolean isBlacklistFilter() { return hasFilter() && getFilter().isBlacklistFilter(); } - public void onMatch(R toTest, Filter.OnMatch onMatch) { - this.getFilter().setOnMatched(onMatch); - this.getFilter().match(toTest); - } - /** Uses Cleanroom MUI*/ public abstract IWidget initUI(ModularPanel main, GuiSyncManager manager); diff --git a/src/main/java/gregtech/common/covers/filter/Filter.java b/src/main/java/gregtech/common/covers/filter/Filter.java index 4d9f5d3f420..30a05395a17 100644 --- a/src/main/java/gregtech/common/covers/filter/Filter.java +++ b/src/main/java/gregtech/common/covers/filter/Filter.java @@ -19,7 +19,7 @@ public interface Filter { @NotNull Widget createWidgets(GuiSyncManager syncManager); - void match(T toMatch); + MatchResult match(T toMatch); boolean test(T toTest); @@ -27,8 +27,6 @@ public interface Filter { void markDirty(); - void setOnMatched(OnMatch onMatch); - int getMaxTransferSize(); void setMaxTransferSize(int maxTransferSize); @@ -42,9 +40,4 @@ public interface Filter { boolean isBlacklistFilter(); void setBlacklistFilter(boolean blacklistFilter); - - @FunctionalInterface - interface OnMatch { - void onMatch(boolean matched, T match, int matchedSlot); - } } diff --git a/src/main/java/gregtech/common/covers/filter/FluidFilter.java b/src/main/java/gregtech/common/covers/filter/FluidFilter.java index 01c2c008d73..12fdadcec45 100644 --- a/src/main/java/gregtech/common/covers/filter/FluidFilter.java +++ b/src/main/java/gregtech/common/covers/filter/FluidFilter.java @@ -29,27 +29,12 @@ public abstract class FluidFilter implements Filter { private IDirtyNotifiable dirtyNotifiable; - - private OnMatch onMatch = null; private BaseFluidFilterReader filterReader; protected void setFilterReader(BaseFluidFilterReader filterReader) { this.filterReader = filterReader; } - public abstract void match(FluidStack toMatch); - - public abstract boolean test(FluidStack fluidStack); - - @Override - public final void setOnMatched(OnMatch onMatch) { - this.onMatch = onMatch; - } - - protected final void onMatch(boolean matched, FluidStack stack, int index) { - if (this.onMatch != null) this.onMatch.onMatch(matched, stack, index); - } - public int getTransferLimit(FluidStack fluidStack, int transferSize) { return 0; } @@ -66,6 +51,10 @@ public int getTransferLimit(FluidStack stack) { @Deprecated public abstract void initUI(Consumer widgetGroup); + protected static MatchResult createResult(boolean matched, FluidStack fluidStack, int index) { + return new MatchResult<>(matched, fluidStack, index); + } + public @NotNull Widget createWidgets(GuiSyncManager syncManager) { var blacklist = new BooleanSyncValue(this.filterReader::isBlacklistFilter, this.filterReader::setBlacklistFilter); return new ParentWidget<>().coverChildren() diff --git a/src/main/java/gregtech/common/covers/filter/ItemFilter.java b/src/main/java/gregtech/common/covers/filter/ItemFilter.java index ce3ff5d0385..771e89fe6cb 100644 --- a/src/main/java/gregtech/common/covers/filter/ItemFilter.java +++ b/src/main/java/gregtech/common/covers/filter/ItemFilter.java @@ -23,8 +23,6 @@ public abstract class ItemFilter implements Filter { private IDirtyNotifiable dirtyNotifiable; private BaseItemFilterReader filterReader; - private OnMatch onMatch = null; - protected void setFilterReader(BaseItemFilterReader reader) { this.filterReader = reader; } @@ -94,14 +92,10 @@ public void readFromNBT(NBTTagCompound tagCompound) { markDirty(); } - public abstract void match(ItemStack itemStack); - - protected final void onMatch(boolean matched, ItemStack stack, int matchSlot) { - if (this.onMatch != null) this.onMatch.onMatch(matched, stack, matchSlot); + protected static MatchResult createResult(boolean matched, ItemStack stack, int index) { + return new MatchResult<>(matched, stack, index); } - public abstract boolean test(ItemStack toTest); - public final void setDirtyNotifiable(IDirtyNotifiable dirtyNotifiable) { this.dirtyNotifiable = dirtyNotifiable; } @@ -112,11 +106,6 @@ public final void markDirty() { } } - @Override - public void setOnMatched(OnMatch onMatch) { - this.onMatch = onMatch; - } - protected static class BaseItemFilterReader extends BaseFilterReader { protected static final String COUNT = "Count"; public BaseItemFilterReader(ItemStack container, int slots) { diff --git a/src/main/java/gregtech/common/covers/filter/ItemFilterWrapper.java b/src/main/java/gregtech/common/covers/filter/ItemFilterWrapper.java index f6ecceb4f17..edf25e0ab27 100644 --- a/src/main/java/gregtech/common/covers/filter/ItemFilterWrapper.java +++ b/src/main/java/gregtech/common/covers/filter/ItemFilterWrapper.java @@ -46,6 +46,6 @@ public int getSlotTransferLimit(int matchSlot, int globalTransferLimit) { } public boolean testItemStack(ItemStack itemStack) { - return container.testItemStack(itemStack); + return container.test(itemStack); } } diff --git a/src/main/java/gregtech/common/covers/filter/MatchResult.java b/src/main/java/gregtech/common/covers/filter/MatchResult.java new file mode 100644 index 00000000000..e2cf2f4dacc --- /dev/null +++ b/src/main/java/gregtech/common/covers/filter/MatchResult.java @@ -0,0 +1,25 @@ +package gregtech.common.covers.filter; + +public class MatchResult { + boolean matched; + T matchedStack; + int filterIndex; + + MatchResult(boolean matched, T matchedStack, int filterIndex) { + this.matched = matched; + this.matchedStack = matchedStack; + this.filterIndex = filterIndex; + } + + public boolean isMatched() { + return matched; + } + + public T getMatchedStack() { + return matchedStack; + } + + public int getFilterIndex() { + return filterIndex; + } +} diff --git a/src/main/java/gregtech/common/covers/filter/OreDictionaryItemFilter.java b/src/main/java/gregtech/common/covers/filter/OreDictionaryItemFilter.java index 17761478c22..3607ee76f76 100644 --- a/src/main/java/gregtech/common/covers/filter/OreDictionaryItemFilter.java +++ b/src/main/java/gregtech/common/covers/filter/OreDictionaryItemFilter.java @@ -41,7 +41,6 @@ import java.util.Map; import java.util.Set; import java.util.function.Consumer; -import java.util.function.Supplier; public class OreDictionaryItemFilter extends ItemFilter { @@ -250,12 +249,11 @@ protected String highlightRule(StringBuilder h) { } @Override - public void match(ItemStack itemStack) { + public MatchResult match(ItemStack itemStack) { // "wtf is this system?? i can put any non null object here and it i will work??? $arch" // not anymore :thanosdaddy: -ghzdude var match = matchesItemStack(itemStack); - this.onMatch(match, match ? itemStack.copy() : ItemStack.EMPTY, -1); -// return ItemFilter.createResult(match, -1); + return createResult(match, match ? itemStack.copy() : ItemStack.EMPTY, -1); } @Override diff --git a/src/main/java/gregtech/common/covers/filter/SimpleFluidFilter.java b/src/main/java/gregtech/common/covers/filter/SimpleFluidFilter.java index d1d3a7c86c4..8c6a1c522b3 100644 --- a/src/main/java/gregtech/common/covers/filter/SimpleFluidFilter.java +++ b/src/main/java/gregtech/common/covers/filter/SimpleFluidFilter.java @@ -84,20 +84,18 @@ public ItemStack getContainerStack() { } @Override - public void match(FluidStack toMatch) { - boolean matched = false; + public MatchResult match(FluidStack toMatch) { int index = -1; - var returnable = toMatch.copy(); + FluidStack returnable = null; for (int i = 0; i < filterReader.getSlots(); i++) { var fluid = filterReader.getFluidStack(i); if (fluid != null && fluid.isFluidEqual(toMatch)) { - matched = true; index = i; - returnable.amount = fluid.amount; + returnable = fluid.copy(); break; } } - this.onMatch(matched, returnable, index); + return createResult(index != -1, returnable, index); } @Override diff --git a/src/main/java/gregtech/common/covers/filter/SimpleItemFilter.java b/src/main/java/gregtech/common/covers/filter/SimpleItemFilter.java index 21113000e3c..889e16ed651 100644 --- a/src/main/java/gregtech/common/covers/filter/SimpleItemFilter.java +++ b/src/main/java/gregtech/common/covers/filter/SimpleItemFilter.java @@ -44,9 +44,9 @@ public SimpleItemFilter(ItemStack stack) { } @Override - public void match(ItemStack itemStack) { + public MatchResult match(ItemStack itemStack) { int matchedSlot = itemFilterMatch(filterReader, filterReader.isIgnoreDamage(), filterReader.isIgnoreNBT(), itemStack); - this.onMatch(matchedSlot != -1, itemStack.copy(), matchedSlot); + return createResult(matchedSlot != -1, filterReader.getStackInSlot(matchedSlot), matchedSlot); } @Override diff --git a/src/main/java/gregtech/common/covers/filter/SmartItemFilter.java b/src/main/java/gregtech/common/covers/filter/SmartItemFilter.java index 6859d5874d7..c7a0b980325 100644 --- a/src/main/java/gregtech/common/covers/filter/SmartItemFilter.java +++ b/src/main/java/gregtech/common/covers/filter/SmartItemFilter.java @@ -68,10 +68,10 @@ public int getTransferLimit(ItemStack stack, int globalTransferLimit) { } @Override - public void match(ItemStack itemStack) { + public MatchResult match(ItemStack itemStack) { var stack = itemStack.copy(); stack.setCount(getTransferLimit(itemStack, Integer.MAX_VALUE)); - this.onMatch(stack.getCount() > 0, stack, this.getFilteringMode().ordinal()); + return createResult(stack.getCount() > 0, stack, this.getFilteringMode().ordinal()); } @Override diff --git a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityItemCollector.java b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityItemCollector.java index d49fb520bf1..1128819ff6d 100644 --- a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityItemCollector.java +++ b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityItemCollector.java @@ -144,7 +144,7 @@ protected void moveItemsInEffectRange() { double distanceX = (areaCenterPos.getX() + 0.5) - entityItem.posX; double distanceZ = (areaCenterPos.getZ() + 0.5) - entityItem.posZ; double distance = MathHelper.sqrt(distanceX * distanceX + distanceZ * distanceZ); - if (!itemFilter.testItemStack(entityItem.getItem())) { + if (!itemFilter.test(entityItem.getItem())) { continue; } if (distance >= 0.7) { diff --git a/src/main/java/gregtech/common/pipelike/itempipe/net/ItemNetHandler.java b/src/main/java/gregtech/common/pipelike/itempipe/net/ItemNetHandler.java index 69c8dfa6a87..48778c15269 100644 --- a/src/main/java/gregtech/common/pipelike/itempipe/net/ItemNetHandler.java +++ b/src/main/java/gregtech/common/pipelike/itempipe/net/ItemNetHandler.java @@ -6,7 +6,11 @@ import gregtech.api.util.FacingPos; import gregtech.api.util.GTTransferUtils; import gregtech.api.util.ItemStackHashStrategy; -import gregtech.common.covers.*; +import gregtech.common.covers.CoverConveyor; +import gregtech.common.covers.CoverItemFilter; +import gregtech.common.covers.CoverRoboticArm; +import gregtech.common.covers.DistributionMode; +import gregtech.common.covers.ItemFilterMode; import gregtech.common.pipelike.itempipe.tile.TileEntityItemPipe; import net.minecraft.item.ItemStack; @@ -26,8 +30,6 @@ import java.util.Comparator; import java.util.Iterator; import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; public class ItemNetHandler implements IItemHandler { @@ -366,18 +368,18 @@ public Cover getCoverOnNeighbour(TileEntityItemPipe itemPipe, EnumFacing facing) public ItemStack insertOverRobotArm(IItemHandler handler, CoverRoboticArm arm, ItemStack stack, boolean simulate, int allowed, boolean ignoreLimit) { - AtomicInteger atomicInt = new AtomicInteger(); - AtomicBoolean atomicBool = new AtomicBoolean(false); - arm.getItemFilterContainer().onMatch(stack, (matched, match, matchedSlot) -> { - if (matched && matchedSlot > 0) { - atomicInt.set(arm.getItemFilterContainer().getTransferLimit(matchedSlot)); - atomicBool.set(true); - } else { - atomicInt.set(arm.getItemFilterContainer().getTransferSize()); - } - }); - int count, rate = atomicInt.get(); - boolean isStackSpecific = atomicBool.get(); + + var matched = arm.getItemFilterContainer().match(stack); + boolean isStackSpecific = false; + int rate, count; + + if (matched.isMatched()) { + int index = matched.getFilterIndex(); + rate = arm.getItemFilterContainer().getTransferLimit(index); + isStackSpecific = true; + } else { + rate = arm.getItemFilterContainer().getTransferSize(); + } switch (arm.getTransferMode()) { case TRANSFER_ANY: @@ -411,7 +413,7 @@ public static int countStack(IItemHandler handler, ItemStack stack, CoverRobotic ItemStack slot = handler.getStackInSlot(i); if (slot.isEmpty()) continue; if (isStackSpecific ? ItemStackHashStrategy.comparingAllButCount().equals(stack, slot) : - arm.getItemFilterContainer().testItemStack(slot)) { + arm.getItemFilterContainer().test(slot)) { count += slot.getCount(); } }