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

CyclopsMC / IntegratedDynamics / 19594217053

22 Nov 2025 10:29AM UTC coverage: 45.13% (+0.3%) from 44.865%
19594217053

push

github

rubensworks
Bump mod version

2613 of 8556 branches covered (30.54%)

Branch coverage included in aggregate %.

11857 of 23507 relevant lines covered (50.44%)

2.39 hits per line

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

73.02
/src/main/java/org/cyclops/integrateddynamics/core/blockentity/BlockEntityCableConnectableInventory.java
1
package org.cyclops.integrateddynamics.core.blockentity;
2

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

27
import javax.annotation.Nullable;
28
import java.util.function.Supplier;
29

30
/**
31
 * A part entity with inventory whose block can connect with cables.
32
 * @author rubensworks
33
 */
34
public abstract class BlockEntityCableConnectableInventory extends CyclopsBlockEntity {
35

36
    @NBTPersist
1✔
37
    private EnumFacingMap<Boolean> connected = EnumFacingMap.newMap();
2✔
38

39
    private final ICable cable;
40
    private final INetworkCarrier networkCarrier;
41
    private final SimpleInventory inventory;
42

43
    public BlockEntityCableConnectableInventory(BlockEntityType<?> type, BlockPos blockPos, BlockState blockState, int inventorySize, int stackSize) {
44
        super(type, blockPos, blockState);
5✔
45
        inventory = createInventory(inventorySize, stackSize);
6✔
46
        cable = new CableTile<BlockEntityCableConnectableInventory>(this) {
11✔
47

48
            @Override
49
            protected boolean isForceDisconnectable() {
50
                return false;
2✔
51
            }
52

53
            @Override
54
            protected EnumFacingMap<Boolean> getForceDisconnected() {
55
                return null;
×
56
            }
57

58
            @Override
59
            protected EnumFacingMap<Boolean> getConnected() {
60
                return tile.connected;
5✔
61
            }
62
        };
63
        networkCarrier = new NetworkCarrierDefault();
5✔
64
    }
1✔
65

66
    public static class CapabilityRegistrar<T extends BlockEntityCableConnectableInventory> extends BlockEntityCapabilityRegistrar<T> {
67
        public CapabilityRegistrar(Supplier<BlockEntityType<? extends T>> blockEntityType) {
68
            super(blockEntityType);
3✔
69
        }
1✔
70

71
        @Override
72
        public void populate() {
73
            add(
4✔
74
                    Capabilities.Cable.BLOCK,
75
                    (blockEntity, context) -> blockEntity.getCable()
3✔
76
            );
77
            add(
4✔
78
                    Capabilities.NetworkCarrier.BLOCK,
79
                    (blockEntity, context) -> blockEntity.getNetworkCarrier()
3✔
80
            );
81
            add(
4✔
82
                    Capabilities.PathElement.BLOCK,
83
                    (blockEntity, context) -> new PathElementTile<>(blockEntity, blockEntity.getCable())
7✔
84
            );
85
            add(
4✔
86
                    net.neoforged.neoforge.capabilities.Capabilities.ItemHandler.BLOCK,
87
                    (blockEntity, context) -> blockEntity.getInventory().getItemHandler()
×
88
            );
89
            add(
4✔
90
                    org.cyclops.commoncapabilities.api.capability.Capabilities.InventoryState.BLOCK,
91
                    (blockEntity, context) -> new SimpleInventoryState(blockEntity.getInventory())
×
92
            );
93
        }
1✔
94
    }
95

96
    public EnumFacingMap<Boolean> getConnected() {
97
        return connected;
3✔
98
    }
99

100
    public ICable getCable() {
101
        return cable;
3✔
102
    }
103

104
    public INetworkCarrier getNetworkCarrier() {
105
        return networkCarrier;
3✔
106
    }
107

108
    public abstract INetworkElementProvider getNetworkElementProvider();
109

110
    protected SimpleInventory createInventory(int inventorySize, int stackSize) {
111
        return new SimpleInventory(inventorySize, stackSize) {
15✔
112
            @Override
113
            public boolean stillValid(Player entityplayer) {
114
                return level.getBlockEntity(worldPosition) == BlockEntityCableConnectableInventory.this;
×
115
            }
116
        };
117
    }
118

119

120
    @Override
121
    public void read(CompoundTag tag, HolderLookup.Provider provider) {
122
        super.read(tag, provider);
×
123
        connected.clear();
×
124
        inventory.readFromNBT(provider, tag, "inventory");
×
125
    }
×
126

127
    @Override
128
    public void saveAdditional(CompoundTag tag, HolderLookup.Provider provider) {
129
        inventory.writeToNBT(provider, tag, "inventory");
6✔
130
        super.saveAdditional(tag, provider);
4✔
131
    }
1✔
132

133
    /**
134
     * Called after the network has been fully initialized
135
     */
136
    public void afterNetworkReAlive() {
137

138
    }
1✔
139

140
    @Nullable
141
    public INetwork getNetwork() {
142
        return this.networkCarrier.getNetwork();
4✔
143
    }
144

145
    public SimpleInventory getInventory() {
146
        return inventory;
3✔
147
    }
148

149
    @Override
150
    public void onChunkUnloaded() {
151
        super.onChunkUnloaded();
2✔
152
        if (getLevel() != null && !getLevel().isClientSide) {
7!
153
            INetwork network = getNetworkCarrier().getNetwork();
4✔
154
            if (network != null) {
2!
155
                NetworkHelpers.invalidateNetworkElements(getLevel(), getBlockPos(), network, getNetworkElementProvider());
8✔
156
            }
157
        }
158
    }
1✔
159

160
    public static class Ticker<T extends BlockEntityCableConnectableInventory> extends BlockEntityTickerDelayed<T> {
3✔
161
        @Override
162
        protected void update(Level level, BlockPos pos, BlockState blockState, T blockEntity) {
163
            super.update(level, pos, blockState, blockEntity);
6✔
164

165
            if (blockEntity.getConnected().isEmpty()) {
4!
166
                blockEntity.getCable().updateConnections();
×
167
            }
168
            if (NetworkHelpers.revalidateNetworkElements(level, pos)) {
4!
169
                blockEntity.afterNetworkReAlive();
×
170
            }
171
        }
1✔
172
    }
173

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