• 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

0.0
/src/main/java/org/cyclops/integrateddynamics/core/evaluate/operator/PredicateOperator.java
1
package org.cyclops.integrateddynamics.core.evaluate.operator;
2

3
import com.google.common.collect.Lists;
4
import net.minecraft.resources.ResourceLocation;
5
import net.minecraft.world.level.storage.ValueInput;
6
import net.minecraft.world.level.storage.ValueOutput;
7
import org.cyclops.integrateddynamics.Reference;
8
import org.cyclops.integrateddynamics.api.evaluate.EvaluationException;
9
import org.cyclops.integrateddynamics.api.evaluate.operator.IOperator;
10
import org.cyclops.integrateddynamics.api.evaluate.operator.IOperatorSerializer;
11
import org.cyclops.integrateddynamics.api.evaluate.variable.IValue;
12
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueType;
13
import org.cyclops.integrateddynamics.api.logicprogrammer.IConfigRenderPattern;
14
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueHelpers;
15
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeBoolean;
16
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypes;
17

18
import java.util.List;
19
import java.util.function.Predicate;
20

21
/**
22
 * An operator that wraps around a predicate.
23
 * @author rubensworks
24
 */
25
public class PredicateOperator<T extends IValueType<V>, V extends IValue> extends OperatorBase {
26

27
    private final String unlocalizedType;
28
    private final T inputType;
29
    private final List<V> rawValues;
30

31
    public PredicateOperator(T inputType, List<V> rawValues) {
32
        this(rawValues::contains, inputType, rawValues);
×
33
    }
×
34

35
    public PredicateOperator(Predicate<V> predicate, T inputType, List<V> rawValues) {
36
        super("pred", "pred", "pred", null, false,
×
37
                new IValueType[]{inputType}, ValueTypes.BOOLEAN, variables -> ValueTypeBoolean.ValueBoolean.of(
×
38
                        predicate.test(variables.getValue(0, inputType))), IConfigRenderPattern.PREFIX_1);
×
39
        this.inputType = inputType;
×
40
        this.rawValues = rawValues;
×
41
        this.unlocalizedType = "predicate";
×
42
    }
×
43

44
    @Override
45
    protected String getUnlocalizedType() {
46
        return unlocalizedType;
×
47
    }
48

49
    @Override
50
    public IOperator materialize() {
51
        return this;
×
52
    }
53

54
    public static class Serializer implements IOperatorSerializer<PredicateOperator<IValueType<IValue>, IValue>> {
×
55
        @Override
56
        public boolean canHandle(IOperator operator) {
57
            return operator instanceof PredicateOperator;
×
58
        }
59

60
        @Override
61
        public ResourceLocation getUniqueName() {
62
            return ResourceLocation.fromNamespaceAndPath(Reference.MOD_ID, "predicate");
×
63
        }
64

65
        @Override
66
        public void serialize(ValueOutput valueOutput, PredicateOperator<IValueType<IValue>, IValue> operator) {
67
            valueOutput.putString("valueType", operator.inputType.getTranslationKey());
×
68
            ValueOutput.ValueOutputList list = valueOutput.childrenList("values");
×
69
            for (IValue rawValue : operator.rawValues) {
×
70
                operator.inputType.serialize(list.addChild(), rawValue);
×
71
            }
×
72
        }
×
73

74
        @Override
75
        public PredicateOperator<IValueType<IValue>, IValue> deserialize(ValueInput valueInput) throws EvaluationException {
76
            IValueType<IValue> valueType = ValueTypes.REGISTRY.getValueType(ResourceLocation.parse(valueInput.getString("valueType").orElseThrow()));
×
77
            ValueInput.ValueInputList list = valueInput.childrenList("values").orElseThrow();
×
78
            List<IValue> values = Lists.newArrayList();
×
79
            for (ValueInput subTag : list) {
×
80
                values.add(ValueHelpers.deserializeRaw(subTag, valueType));
×
81
            }
×
82
            return new PredicateOperator<>(valueType, values);
×
83
        }
84
    }
85
}
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