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

CyclopsMC / IntegratedDynamics / 20620100972

31 Dec 2025 01:35PM UTC coverage: 53.056% (-0.02%) from 53.079%
20620100972

push

github

rubensworks
Merge remote-tracking branch 'origin/master-1.21-lts' into master-1.21

2859 of 8756 branches covered (32.65%)

Branch coverage included in aggregate %.

17427 of 29479 relevant lines covered (59.12%)

3.07 hits per line

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

82.0
/src/main/java/org/cyclops/integrateddynamics/core/blockentity/BlockEntityCableConnectable.java
1
package org.cyclops.integrateddynamics.core.blockentity;
2

3
import net.minecraft.core.BlockPos;
4
import net.minecraft.world.level.Level;
5
import net.minecraft.world.level.block.entity.BlockEntityType;
6
import net.minecraft.world.level.block.state.BlockState;
7
import net.minecraft.world.level.storage.ValueInput;
8
import org.cyclops.cyclopscore.blockentity.BlockEntityTickerDelayed;
9
import org.cyclops.cyclopscore.blockentity.CyclopsBlockEntity;
10
import org.cyclops.cyclopscore.capability.registrar.BlockEntityCapabilityRegistrar;
11
import org.cyclops.cyclopscore.datastructure.EnumFacingMap;
12
import org.cyclops.cyclopscore.persist.nbt.NBTPersist;
13
import org.cyclops.integrateddynamics.Capabilities;
14
import org.cyclops.integrateddynamics.api.block.cable.ICable;
15
import org.cyclops.integrateddynamics.api.network.INetwork;
16
import org.cyclops.integrateddynamics.api.network.INetworkCarrier;
17
import org.cyclops.integrateddynamics.api.network.INetworkElementProvider;
18
import org.cyclops.integrateddynamics.capability.cable.CableTile;
19
import org.cyclops.integrateddynamics.capability.network.NetworkCarrierDefault;
20
import org.cyclops.integrateddynamics.capability.path.PathElementTile;
21
import org.cyclops.integrateddynamics.core.helper.CableHelpers;
22
import org.cyclops.integrateddynamics.core.helper.NetworkHelpers;
23

24
import java.util.function.Supplier;
25

26
/**
27
 * A part entity whose block can connect with cables.
28
 * @author rubensworks
29
 */
30
public abstract class BlockEntityCableConnectable extends CyclopsBlockEntity {
31

32
    @NBTPersist
1✔
33
    private EnumFacingMap<Boolean> connected = EnumFacingMap.newMap();
2✔
34

35
    private final ICable cable;
36
    private final INetworkCarrier networkCarrier;
37

38
    public BlockEntityCableConnectable(BlockEntityType<?> type, BlockPos blockPos, BlockState blockState) {
39
        super(type, blockPos, blockState);
5✔
40
        cable = new CableTile<BlockEntityCableConnectable>(this) {
11✔
41

42
            @Override
43
            protected boolean isForceDisconnectable() {
44
                return false;
2✔
45
            }
46

47
            @Override
48
            protected EnumFacingMap<Boolean> getForceDisconnected() {
49
                return null;
×
50
            }
51

52
            @Override
53
            protected EnumFacingMap<Boolean> getConnected() {
54
                return tile.connected;
5✔
55
            }
56
        };
57
        networkCarrier = new NetworkCarrierDefault();
5✔
58
    }
1✔
59

60
    public static class CapabilityRegistrar<T extends BlockEntityCableConnectable> extends BlockEntityCapabilityRegistrar<T> {
61
        public CapabilityRegistrar(Supplier<BlockEntityType<? extends T>> blockEntityType) {
62
            super(blockEntityType);
3✔
63
        }
1✔
64

65
        @Override
66
        public void populate() {
67
            add(
4✔
68
                    Capabilities.Cable.BLOCK,
69
                    (blockEntity, context) -> blockEntity.getCable()
3✔
70
            );
71
            add(
4✔
72
                    Capabilities.NetworkCarrier.BLOCK,
73
                    (blockEntity, context) -> blockEntity.getNetworkCarrier()
3✔
74
            );
75
            add(
4✔
76
                    Capabilities.PathElement.BLOCK,
77
                    (blockEntity, context) -> new PathElementTile<>(blockEntity, blockEntity.getCable())
7✔
78
            );
79
        }
1✔
80
    }
81

82
    public EnumFacingMap<Boolean> getConnected() {
83
        return connected;
3✔
84
    }
85

86
    public ICable getCable() {
87
        return cable;
3✔
88
    }
89

90
    public INetworkCarrier getNetworkCarrier() {
91
        return networkCarrier;
3✔
92
    }
93

94
    public abstract INetworkElementProvider getNetworkElementProvider();
95

96
    @Override
97
    public void read(ValueInput input) {
98
        super.read(input);
×
99
        connected.clear();
×
100
    }
×
101

102
    @Override
103
    public void onChunkUnloaded() {
104
        super.onChunkUnloaded();
2✔
105
        if (getLevel() != null && !getLevel().isClientSide()) {
7!
106
            INetwork network = getNetworkCarrier().getNetwork();
4✔
107
            if (network != null) {
2!
108
                NetworkHelpers.invalidateNetworkElements(getLevel(), getBlockPos(), network, getNetworkElementProvider());
8✔
109
            }
110
        }
111
    }
1✔
112

113
    @Override
114
    public void preRemoveSideEffects(BlockPos pos, BlockState state) {
115
        super.preRemoveSideEffects(pos, state);
4✔
116

117
        if (!CableHelpers.isRemovingCable()) {
2✔
118
            CableHelpers.onCableRemoving(level, pos, false, false, state, this);
9✔
119
        }
120
    }
1✔
121

122
    public static class Ticker<T extends BlockEntityCableConnectable> extends BlockEntityTickerDelayed<T> {
3✔
123
        @Override
124
        protected void update(Level level, BlockPos pos, BlockState blockState, T blockEntity) {
125
            super.update(level, pos, blockState, blockEntity);
6✔
126

127
            if (blockEntity.getConnected().isEmpty()) {
4!
128
                blockEntity.getCable().updateConnections();
×
129
            }
130
            NetworkHelpers.revalidateNetworkElements(level, pos);
4✔
131
        }
1✔
132
    }
133
}
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