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

CyclopsMC / IntegratedDynamics / 20210191346

14 Dec 2025 03:32PM UTC coverage: 19.514% (-33.5%) from 53.061%
20210191346

push

github

rubensworks
Remove deprecations

663 of 8728 branches covered (7.6%)

Branch coverage included in aggregate %.

6786 of 29445 relevant lines covered (23.05%)

1.09 hits per line

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

4.88
/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.capabilities.Capabilities;
11
import net.neoforged.neoforge.fluids.FluidStack;
12
import net.neoforged.neoforge.transfer.access.ItemAccess;
13
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeNamed;
14
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeNullable;
15
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeUniquelyNamed;
16
import org.cyclops.integrateddynamics.core.helper.Helpers;
17
import org.cyclops.integrateddynamics.core.helper.L10NValues;
18
import org.cyclops.integrateddynamics.core.logicprogrammer.ValueTypeItemStackLPElement;
19
import org.cyclops.integrateddynamics.core.logicprogrammer.ValueTypeLPElementBase;
20

21
import java.util.Objects;
22

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

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

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

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

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

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

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

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

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

75
            @Override
76
            public Component validate(ItemStack itemStack) {
77
                return itemStack.isEmpty() ||
×
78
                        ItemAccess.forStack(itemStack).getCapability(Capabilities.Fluid.ITEM) != null ?
×
79
                        null :
×
80
                        Component.translatable(L10NValues.VALUETYPE_OBJECT_FLUID_ERROR_NOFLUID);
×
81
            }
82

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

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

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

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

105
        private final FluidStack fluidStack;
106

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

112
        public static ValueFluidStack of(FluidStack itemStack) {
113
            return new ValueFluidStack(itemStack);
×
114
        }
115

116
        public FluidStack getRawValue() {
117
            return fluidStack;
×
118
        }
119

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

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

130
    }
131

132
}
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