diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java index 79953f71f..9b25a050a 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java @@ -7,6 +7,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.item.ItemHelper.ExtractionCountMode; import com.simibubi.create.foundation.utility.BlockFace; +import com.simibubi.create.foundation.utility.HashableNonNullConsumer; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; @@ -102,7 +103,7 @@ public abstract class CapManipulationBehaviourBase(this::onHandlerInvalidated, this)); } @FunctionalInterface diff --git a/src/main/java/com/simibubi/create/foundation/utility/HashableNonNullConsumer.java b/src/main/java/com/simibubi/create/foundation/utility/HashableNonNullConsumer.java new file mode 100644 index 000000000..b44b5ef58 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/HashableNonNullConsumer.java @@ -0,0 +1,35 @@ +package com.simibubi.create.foundation.utility; + +import java.util.Objects; + +import javax.annotation.Nonnull; + +import net.minecraftforge.common.util.NonNullConsumer; + +public class HashableNonNullConsumer implements NonNullConsumer { + private final NonNullConsumer consumer; + private final H hashKey; + + public HashableNonNullConsumer(NonNullConsumer consumer, H hashKey) { + this.consumer = consumer; + this.hashKey = hashKey; + } + + @Override + public void accept(@Nonnull T t) { + consumer.accept(t); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + HashableNonNullConsumer that = (HashableNonNullConsumer) o; + return Objects.equals(hashKey, that.hashKey); + } + + @Override + public int hashCode() { + return Objects.hash(hashKey); + } +}