• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

CyclopsMC / IntegratedDynamics / 16552051255

27 Jul 2025 01:58PM UTC coverage: 53.206% (+8.0%) from 45.161%
16552051255

push

github

rubensworks
Resolve minor TODOs

2888 of 8740 branches covered (33.04%)

Branch coverage included in aggregate %.

17341 of 29280 relevant lines covered (59.22%)

3.08 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

26.83
/src/main/java/org/cyclops/integrateddynamics/core/evaluate/variable/ValueObjectTypeFluidStack.java
1
package org.cyclops.integrateddynamics.core.evaluate.variable;
2

3
import lombok.ToString;
4
import net.minecraft.core.registries.BuiltInRegistries;
5
import net.minecraft.network.chat.Component;
6
import net.minecraft.network.chat.MutableComponent;
7
import net.minecraft.world.item.ItemStack;
8
import net.minecraft.world.level.storage.ValueInput;
9
import net.minecraft.world.level.storage.ValueOutput;
10
import net.neoforged.neoforge.fluids.FluidStack;
11
import net.neoforged.neoforge.fluids.FluidUtil;
12
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeNamed;
13
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeNullable;
14
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeUniquelyNamed;
15
import org.cyclops.integrateddynamics.core.helper.Helpers;
16
import org.cyclops.integrateddynamics.core.helper.L10NValues;
17
import org.cyclops.integrateddynamics.core.logicprogrammer.ValueTypeItemStackLPElement;
18
import org.cyclops.integrateddynamics.core.logicprogrammer.ValueTypeLPElementBase;
19

20
import java.util.Objects;
21

22
/**
23
 * Value type with values that are fluidstacks.
24
 * @author rubensworks
25
 */
26
public class ValueObjectTypeFluidStack extends ValueObjectTypeBase<ValueObjectTypeFluidStack.ValueFluidStack> implements
27
        IValueTypeNamed<ValueObjectTypeFluidStack.ValueFluidStack>,
28
        IValueTypeUniquelyNamed<ValueObjectTypeFluidStack.ValueFluidStack>,
29
        IValueTypeNullable<ValueObjectTypeFluidStack.ValueFluidStack> {
30

31
    public ValueObjectTypeFluidStack() {
32
        super("fluidstack", ValueObjectTypeFluidStack.ValueFluidStack.class);
4✔
33
    }
1✔
34

35
    @Override
36
    public ValueFluidStack getDefault() {
37
        return ValueFluidStack.of(FluidStack.EMPTY);
×
38
    }
39

40
    @Override
41
    public MutableComponent toCompactString(ValueFluidStack value) {
42
        FluidStack fluidStack = value.getRawValue();
×
43
        return !fluidStack.isEmpty() ? fluidStack.getHoverName().copy().append(String.format(" (%s mB)", fluidStack.getAmount())) : Component.literal("");
×
44
    }
45

46
    @Override
47
    public void serialize(ValueOutput valueOutput, ValueFluidStack value) {
48
        valueOutput.store("v", FluidStack.OPTIONAL_CODEC, value.getRawValue());
×
49
    }
×
50

51
    @Override
52
    public ValueFluidStack deserialize(ValueInput valueInput) {
53
        return ValueFluidStack.of(valueInput.read("v", FluidStack.OPTIONAL_CODEC).orElse(FluidStack.EMPTY));
×
54
    }
55

56
    @Override
57
    public String getName(ValueFluidStack a) {
58
        return toCompactString(a).getString();
×
59
    }
60

61
    @Override
62
    public boolean isNull(ValueFluidStack a) {
63
        return a.getRawValue().isEmpty();
×
64
    }
65

66
    @Override
67
    public ValueTypeLPElementBase createLogicProgrammerElement() {
68
        return new ValueTypeItemStackLPElement<>(this, new ValueTypeItemStackLPElement.IItemStackToValue<ValueObjectTypeFluidStack.ValueFluidStack>() {
×
69
            @Override
70
            public boolean isNullable() {
71
                return true;
×
72
            }
73

74
            @Override
75
            public Component validate(ItemStack itemStack) {
76
                return itemStack.isEmpty() ||
×
77
                        FluidUtil.getFluidHandler(itemStack).isPresent() ?
×
78
                        null :
×
79
                        Component.translatable(L10NValues.VALUETYPE_OBJECT_FLUID_ERROR_NOFLUID);
×
80
            }
81

82
            @Override
83
            public ValueObjectTypeFluidStack.ValueFluidStack getValue(ItemStack itemStack) {
84
                return ValueObjectTypeFluidStack.ValueFluidStack.of(Helpers.getFluidStack(itemStack));
×
85
            }
86

87
            @Override
88
            public ItemStack getValueAsItemStack(ValueFluidStack value) {
89
                return value.getRawValue().getFluid().getFluidType().getBucket(value.getRawValue());
×
90
            }
91
        });
92
    }
93

94
    @Override
95
    public String getUniqueName(ValueFluidStack value) {
96
        FluidStack fluidStack = value.getRawValue();
×
97
        return !fluidStack.isEmpty() ?
×
98
                String.format("%s %s", BuiltInRegistries.FLUID.getKey(fluidStack.getFluid()), fluidStack.getAmount()) : "";
×
99
    }
100

101
    @ToString
×
102
    public static class ValueFluidStack extends ValueBase {
103

104
        private final FluidStack fluidStack;
105

106
        private ValueFluidStack(FluidStack itemStack) {
107
            super(ValueTypes.OBJECT_FLUIDSTACK);
3✔
108
            this.fluidStack = Objects.requireNonNull(itemStack, "Attempted to create a ValueFluidStack for a null FluidStack.");
6✔
109
        }
1✔
110

111
        public static ValueFluidStack of(FluidStack itemStack) {
112
            return new ValueFluidStack(itemStack);
5✔
113
        }
114

115
        public FluidStack getRawValue() {
116
            return fluidStack;
3✔
117
        }
118

119
        @Override
120
        public boolean equals(Object o) {
121
            return o instanceof ValueFluidStack && FluidStack.matches(this.getRawValue(), ((ValueFluidStack) o).getRawValue());
14!
122
        }
123

124
        @Override
125
        public int hashCode() {
126
            return fluidStack.hashCode();
×
127
        }
128

129
    }
130

131
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc