aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-04-20 01:29:05 +0800
committershedaniel <daniel@shedaniel.me>2020-04-20 01:29:05 +0800
commitb12bf996dd2b786b9166bd4534bdd3182a078d2f (patch)
treed34efa77d1ac179ffd411f90b2c370207afb3bfe /src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java
parentf1c9330818037365503f5eb6bce5c09d1d1a045d (diff)
downloadRoughlyEnoughItems-b12bf996dd2b786b9166bd4534bdd3182a078d2f.tar.gz
RoughlyEnoughItems-b12bf996dd2b786b9166bd4534bdd3182a078d2f.tar.bz2
RoughlyEnoughItems-b12bf996dd2b786b9166bd4534bdd3182a078d2f.zip
Fix endless recursion with item and fluid
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java')
-rw-r--r--src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java b/src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java
index 02c524b75..c736703e7 100644
--- a/src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java
+++ b/src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java
@@ -52,12 +52,12 @@ import java.util.*;
@ApiStatus.Internal
public class FluidEntryStack extends AbstractEntryStack {
private static final Map<Fluid, Pair<Sprite, Integer>> FLUID_SPRITE_CACHE = new HashMap<>();
- private static final double EMPTY_AMOUNT = -1319182373;
+ private static final double IGNORE_AMOUNT = -1319182373;
private Fluid fluid;
private double amount;
public FluidEntryStack(Fluid fluid) {
- this(fluid, EMPTY_AMOUNT);
+ this(fluid, IGNORE_AMOUNT);
}
public FluidEntryStack(Fluid fluid, int amount) {
@@ -103,7 +103,7 @@ public class FluidEntryStack extends AbstractEntryStack {
@Override
public void setFloatingAmount(double amount) {
- this.amount = amount <= 0 ? EMPTY_AMOUNT : amount;
+ this.amount = amount == IGNORE_AMOUNT ? IGNORE_AMOUNT : Math.max(amount, 0);
if (isEmpty()) {
fluid = Fluids.EMPTY;
}
@@ -111,7 +111,7 @@ public class FluidEntryStack extends AbstractEntryStack {
@Override
public boolean isEmpty() {
- return (amount != EMPTY_AMOUNT && amount <= 0) || fluid == Fluids.EMPTY;
+ return (amount != IGNORE_AMOUNT && amount <= 0) || fluid == Fluids.EMPTY;
}
@Override
@@ -130,30 +130,38 @@ public class FluidEntryStack extends AbstractEntryStack {
@Override
public boolean equalsIgnoreTagsAndAmount(EntryStack stack) {
+ if (stack.getType() == Type.ITEM)
+ return equalsIgnoreTagsAndAmount(EntryStack.copyItemToFluid(stack));
if (stack.getType() != Type.FLUID)
- return EntryStack.copyFluidToItem(this).equalsIgnoreTagsAndAmount(stack);
+ return false;
return fluid == stack.getFluid();
}
@Override
public boolean equalsIgnoreTags(EntryStack stack) {
+ if (stack.getType() == Type.ITEM)
+ return equalsIgnoreTags(EntryStack.copyItemToFluid(stack));
if (stack.getType() != Type.FLUID)
- return EntryStack.copyFluidToItem(this).equalsIgnoreTags(stack);
- return fluid == stack.getFluid() && amount == stack.getAmount();
+ return false;
+ return fluid == stack.getFluid() && (amount == IGNORE_AMOUNT || stack.getAmount() == IGNORE_AMOUNT || amount == stack.getAmount());
}
@Override
public boolean equalsIgnoreAmount(EntryStack stack) {
+ if (stack.getType() == Type.ITEM)
+ return equalsIgnoreAmount(EntryStack.copyItemToFluid(stack));
if (stack.getType() != Type.FLUID)
- return EntryStack.copyFluidToItem(this).equalsIgnoreAmount(stack);
+ return false;
return fluid == stack.getFluid();
}
@Override
public boolean equalsAll(EntryStack stack) {
+ if (stack.getType() == Type.ITEM)
+ return equalsAll(EntryStack.copyItemToFluid(stack));
if (stack.getType() != Type.FLUID)
- return EntryStack.copyFluidToItem(this).equalsAll(stack);
- return fluid == stack.getFluid() && amount == stack.getAmount();
+ return false;
+ return fluid == stack.getFluid() && (amount == IGNORE_AMOUNT || stack.getAmount() == IGNORE_AMOUNT || amount == stack.getAmount());
}
@Override