• 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

61.67
/src/main/java/org/cyclops/integrateddynamics/part/aspect/write/AspectWriteBase.java
1
package org.cyclops.integrateddynamics.part.aspect.write;
2

3
import net.minecraft.network.chat.Component;
4
import net.minecraft.resources.ResourceLocation;
5
import org.cyclops.cyclopscore.helper.IModHelpers;
6
import org.cyclops.cyclopscore.init.ModBaseNeoForge;
7
import org.cyclops.integrateddynamics.api.evaluate.EvaluationException;
8
import org.cyclops.integrateddynamics.api.evaluate.variable.IValue;
9
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueType;
10
import org.cyclops.integrateddynamics.api.evaluate.variable.IVariable;
11
import org.cyclops.integrateddynamics.api.network.INetwork;
12
import org.cyclops.integrateddynamics.api.network.IPartNetwork;
13
import org.cyclops.integrateddynamics.api.part.IPartState;
14
import org.cyclops.integrateddynamics.api.part.IPartType;
15
import org.cyclops.integrateddynamics.api.part.PartTarget;
16
import org.cyclops.integrateddynamics.api.part.aspect.IAspectWrite;
17
import org.cyclops.integrateddynamics.api.part.aspect.property.IAspectProperties;
18
import org.cyclops.integrateddynamics.api.part.write.IPartStateWriter;
19
import org.cyclops.integrateddynamics.api.part.write.IPartTypeWriter;
20
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueHelpers;
21
import org.cyclops.integrateddynamics.core.helper.L10NValues;
22
import org.cyclops.integrateddynamics.part.aspect.AspectBase;
23
import org.cyclops.integrateddynamics.part.aspect.Aspects;
24

25
/**
26
 * Base class for write aspects.
27
 * @author rubensworks
28
 */
29
public abstract class AspectWriteBase<V extends IValue, T extends IValueType<V>> extends AspectBase<V, T>
30
        implements IAspectWrite<V, T> {
31

32
    protected final String unlocalizedTypeSuffix;
33

34
    public AspectWriteBase(ModBaseNeoForge mod, String unlocalizedTypeSuffix, IAspectProperties defaultProperties) {
35
        super(mod, defaultProperties);
4✔
36
        if(unlocalizedTypeSuffix == null) {
2!
37
            unlocalizedTypeSuffix = "";
×
38
        }
39
        this.unlocalizedTypeSuffix = unlocalizedTypeSuffix;
3✔
40
        if(IModHelpers.get().getMinecraftHelpers().isClientSide()) {
4!
41
            registerModelResourceLocation();
×
42
        }
43
    }
1✔
44

45
    @SuppressWarnings("unchecked")
46
    @Override
47
    public <P extends IPartType<P, S>, S extends IPartState<P>> void update(INetwork network, IPartNetwork partNetwork, P partType, PartTarget target, S state) {
48
        IPartTypeWriter partTypeWriter = (IPartTypeWriter) partType;
3✔
49
        IPartStateWriter writerState = (IPartStateWriter) state;
3✔
50
        IVariable variable = partTypeWriter.getActiveVariable(network, partNetwork, target, writerState);
7✔
51
        if(variable != null && writerState.getErrors(this).isEmpty()) {
7!
52
            if (ValueHelpers.correspondsTo(variable, getValueType())) {
5!
53
                if(writerState.isDeactivated() || writerState.checkAndResetFirstTick()) {
6!
54
                    onActivate(partTypeWriter, target, writerState);
5✔
55
                }
56
                try {
57
                    write(partTypeWriter, target, writerState, variable);
6✔
58
                } catch (EvaluationException e) {
×
59
                    writerState.addError(this, e.getErrorMessage());
×
60
                    writerState.setDeactivated(true);
×
61
                    e.addResolutionListeners(() -> writerState.onVariableContentsUpdated(partTypeWriter, target));
×
62
                }
1✔
63
            } else {
64
                // This will only occur in cases where the variable is of any type, and the value type is more precise.
65
                // In all other cases, type checking will already have happen using the variable facades.
66
                try {
67
                    writerState.addError(this, Component.translatable(L10NValues.ASPECT_ERROR_INVALIDTYPE,
×
68
                        Component.translatable(getValueType().getTranslationKey()),
×
69
                        Component.translatable(variable.getValue().getType().getTranslationKey())));
×
70
                } catch (EvaluationException e) {
×
71
                    // Fallback to a less precise form of error reporting
72
                    writerState.addError(this, Component.translatable(L10NValues.ASPECT_ERROR_INVALIDTYPE,
×
73
                            Component.translatable(getValueType().getTranslationKey()),
×
74
                            Component.translatable(variable.getType().getTranslationKey())));
×
75
                }
×
76
                writerState.setDeactivated(true);
×
77
            }
78
        } else if(!writerState.isDeactivated()) {
3✔
79
            onDeactivate(partTypeWriter, target, writerState);
5✔
80
        }
81
    }
1✔
82

83
    @Override
84
    public <P extends IPartTypeWriter<P, S>, S extends IPartStateWriter<P>> void onActivate(P partType, PartTarget target, S state) {
85
        state.setDeactivated(false);
3✔
86
    }
1✔
87

88
    @Override
89
    public <P extends IPartTypeWriter<P, S>, S extends IPartStateWriter<P>> void onDeactivate(P partType, PartTarget target, S state) {
90
        state.setDeactivated(true);
3✔
91
    }
1✔
92

93
    @Override
94
    public <P extends IPartType<P, S>, S extends IPartState<P>> void setProperties(P partType, PartTarget target, S state, IAspectProperties properties) {
95
        onDeactivate((IPartTypeWriter) partType, target, (IPartStateWriter) state);
7✔
96
        super.setProperties(partType, target, state, properties);
6✔
97
        onActivate((IPartTypeWriter) partType, target, (IPartStateWriter) state);
7✔
98
    }
1✔
99

100
    protected String getUnlocalizedType() {
101
        return "write" + unlocalizedTypeSuffix;
4✔
102
    }
103

104
    protected void registerModelResourceLocation() {
105
        Aspects.REGISTRY.getClient().registerAspectModel(this,
×
106
                ResourceLocation.parse(getModId() + ":aspect/" + getUnlocalizedType().replaceAll("\\.", "/")));
×
107
    }
×
108

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