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

CyclopsMC / IntegratedDynamics / 13342581973

15 Feb 2025 06:30AM UTC coverage: 38.576% (-0.009%) from 38.585%
13342581973

push

github

rubensworks
Fix broken looking at advancement trigger, #1471

1948 of 8359 branches covered (23.3%)

Branch coverage included in aggregate %.

10105 of 22886 relevant lines covered (44.15%)

2.07 hits per line

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

12.94
/src/main/java/org/cyclops/integrateddynamics/core/evaluate/variable/ValueTypeOperator.java
1
package org.cyclops.integrateddynamics.core.evaluate.variable;
2

3
import com.google.common.collect.Lists;
4
import lombok.ToString;
5
import net.minecraft.ChatFormatting;
6
import net.minecraft.nbt.Tag;
7
import net.minecraft.network.chat.Component;
8
import net.minecraft.network.chat.MutableComponent;
9
import org.cyclops.cyclopscore.helper.Helpers;
10
import org.cyclops.integrateddynamics.api.advancement.criterion.ValuePredicate;
11
import org.cyclops.integrateddynamics.api.evaluate.EvaluationException;
12
import org.cyclops.integrateddynamics.api.evaluate.operator.IOperator;
13
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueType;
14
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeNamed;
15
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeUniquelyNamed;
16
import org.cyclops.integrateddynamics.api.evaluate.variable.ValueDeseralizationContext;
17
import org.cyclops.integrateddynamics.core.evaluate.operator.Operators;
18
import org.cyclops.integrateddynamics.core.helper.L10NValues;
19
import org.cyclops.integrateddynamics.core.logicprogrammer.ValueTypeLPElementBase;
20
import org.cyclops.integrateddynamics.core.logicprogrammer.ValueTypeOperatorLPElement;
21

22
import javax.annotation.Nullable;
23
import java.util.List;
24
import java.util.Optional;
25

26
/**
27
 * Value type with operator values.
28
 * @author rubensworks
29
 */
30
public class ValueTypeOperator extends ValueTypeBase<ValueTypeOperator.ValueOperator> implements
31
        IValueTypeNamed<ValueTypeOperator.ValueOperator>, IValueTypeUniquelyNamed<ValueTypeOperator.ValueOperator> {
32

33
    private static final String SIGNATURE_LINK = "->";
34

35
    public ValueTypeOperator() {
36
        super("operator", Helpers.RGBToInt(43, 231, 47), ChatFormatting.DARK_GREEN, ValueTypeOperator.ValueOperator.class);
9✔
37
    }
1✔
38

39
    @Override
40
    public ValueOperator getDefault() {
41
        return ValueOperator.of(Operators.GENERAL_IDENTITY);
×
42
    }
43

44
    @Override
45
    public MutableComponent toCompactString(ValueOperator value) {
46
        return value.getRawValue().getLocalizedNameFull();
×
47
    }
48

49
    @Override
50
    public Tag serialize(ValueDeseralizationContext valueDeseralizationContext, ValueOperator value) {
51
        return Operators.REGISTRY.serialize(valueDeseralizationContext, value.getRawValue());
×
52
    }
53

54
    @Override
55
    public ValueOperator deserialize(ValueDeseralizationContext valueDeseralizationContext, Tag value) {
56
        IOperator operator;
57
        try {
58
            operator = Operators.REGISTRY.deserialize(valueDeseralizationContext, value);
×
59
        } catch (EvaluationException e) {
×
60
            throw new IllegalArgumentException(e.getMessage());
×
61
        }
×
62
        if (operator != null) {
×
63
            return ValueOperator.of(operator);
×
64
        }
65
        throw new IllegalArgumentException(String.format("Value \"%s\" could not be parsed to an operator.", value));
×
66
    }
67

68
    @Override
69
    public void loadTooltip(List<Component> lines, boolean appendOptionalInfo, @Nullable ValueOperator value) {
70
        super.loadTooltip(lines, appendOptionalInfo, value);
×
71
        if (value != null) {
×
72
            lines.add(Component.translatable(L10NValues.VALUETYPEOPERATOR_TOOLTIP_SIGNATURE)
×
73
                    .append(getSignature(value.getRawValue())));
×
74
        }
75
    }
×
76

77
    @Override
78
    public ValueTypeLPElementBase createLogicProgrammerElement() {
79
        return new ValueTypeOperatorLPElement();
×
80
    }
81

82
    @Override
83
    public ValueOperator materialize(ValueOperator value) throws EvaluationException {
84
        return ValueOperator.of(value.getRawValue().materialize());
×
85
    }
86

87
    /**
88
     * Pretty formatted signature of an operator.
89
     * @param operator The operator.
90
     * @return The signature.
91
     */
92
    public static MutableComponent getSignature(IOperator operator) {
93
        return getSignatureLines(operator, false)
×
94
                .stream()
×
95
                .reduce(Component.literal(""), (a, b) -> a.append(" ").append(b));
×
96
    }
97

98
    /**
99
     * Pretty formatted signature of an operator.
100
     * @param inputTypes The input types.
101
     * @param outputType The output types.
102
     * @return The signature.
103
     */
104
    public static Component getSignature(IValueType[] inputTypes, IValueType outputType) {
105
        return getSignatureLines(inputTypes, outputType, false)
×
106
                .stream()
×
107
                .reduce((prev, next) -> prev.append(" ").append(next))
×
108
                .orElseGet(() -> Component.literal(""));
×
109
    }
110

111
    protected static MutableComponent switchSignatureLineContext(List<MutableComponent> lines, MutableComponent sb) {
112
        lines.add(sb);
×
113
        return Component.literal("");
×
114
    }
115

116
    /**
117
     * Pretty formatted signature of an operator.
118
     * @param inputTypes The input types.
119
     * @param outputType The output types.
120
     * @param indent If the lines should be indented.
121
     * @return The signature.
122
     */
123
    public static List<MutableComponent> getSignatureLines(IValueType[] inputTypes, IValueType outputType, boolean indent) {
124
        List<MutableComponent> lines = Lists.newArrayList();
×
125
        MutableComponent sb = Component.literal("");
×
126
        boolean first = true;
×
127
        for (IValueType inputType : inputTypes) {
×
128
            if (first) {
×
129
                first = false;
×
130
            } else {
131
                sb = switchSignatureLineContext(lines, sb);
×
132
                sb.append((indent ? "  " : "") + SIGNATURE_LINK + " ");
×
133
            }
134
            sb = sb.append(Component.translatable(inputType.getTranslationKey())
×
135
                    .withStyle(inputType.getDisplayColorFormat()));
×
136
        }
137

138
        sb = switchSignatureLineContext(lines, sb);
×
139
        sb = sb.append((indent ? "  " : "") + SIGNATURE_LINK + " ")
×
140
                .append(Component.translatable(outputType.getTranslationKey())
×
141
                        .withStyle(outputType.getDisplayColorFormat()));
×
142
        switchSignatureLineContext(lines, sb);
×
143
        return lines;
×
144
    }
145

146
    /**
147
     * Pretty formatted signature of an operator.
148
     * @param operator The operator.
149
     * @param indent If the lines should be indented.
150
     * @return The signature.
151
     */
152
    public static List<MutableComponent> getSignatureLines(IOperator operator, boolean indent) {
153
        return getSignatureLines(operator.getInputTypes(), operator.getOutputType(), indent);
×
154
    }
155

156
    @Override
157
    public String getName(ValueTypeOperator.ValueOperator a) {
158
        return a.getRawValue().getLocalizedNameFull().getString();
×
159
    }
160

161
    @Override
162
    public String getUniqueName(ValueOperator a) {
163
        return a.getRawValue().getUniqueName().toString();
×
164
    }
165

166
    @ToString
×
167
    public static class ValueOperator extends ValueBase {
168

169
        private final IOperator value;
170

171
        private ValueOperator(IOperator value) {
172
            super(ValueTypes.OPERATOR);
3✔
173
            this.value = value;
3✔
174
        }
1✔
175

176
        public static ValueOperator of(IOperator value) {
177
            return new ValueOperator(value);
5✔
178
        }
179

180
        public IOperator getRawValue() {
181
            return value;
3✔
182
        }
183

184
        @Override
185
        public boolean equals(Object o) {
186
            return o == this || (o instanceof ValueOperator && value.equals(((ValueOperator) o).value));
16!
187
        }
188

189
        @Override
190
        public int hashCode() {
191
            return 37 + value.hashCode();
×
192
        }
193
    }
194

195
    public static class ValueOperatorPredicate extends ValuePredicate<ValueOperator> {
196

197
        private final Optional<IOperator> operator;
198

199
        public ValueOperatorPredicate(Optional<IOperator> operator) {
200
            super(Optional.of(ValueTypes.OPERATOR), Optional.empty(), Optional.empty());
×
201
            this.operator = operator;
×
202
        }
×
203

204
        public Optional<IOperator> getOperator() {
205
            return operator;
×
206
        }
207

208
        @Override
209
        protected boolean testTyped(ValueOperator value) {
210
            return super.testTyped(value)
×
211
                    && (operator.isEmpty() || (value.getRawValue() == operator.get()));
×
212
        }
213
    }
214

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