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

CyclopsMC / IntegratedDynamics / 14556514164

20 Apr 2025 05:42AM UTC coverage: 43.947% (+0.4%) from 43.541%
14556514164

push

github

rubensworks
Add network read aspects game tests

2448 of 8393 branches covered (29.17%)

Branch coverage included in aggregate %.

11331 of 22961 relevant lines covered (49.35%)

2.34 hits per line

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

67.57
/src/main/java/org/cyclops/integrateddynamics/core/block/BlockWithEntityGuiCabled.java
1
package org.cyclops.integrateddynamics.core.block;
2

3
import net.minecraft.core.BlockPos;
4
import net.minecraft.core.Direction;
5
import net.minecraft.world.InteractionHand;
6
import net.minecraft.world.ItemInteractionResult;
7
import net.minecraft.world.entity.LivingEntity;
8
import net.minecraft.world.entity.player.Player;
9
import net.minecraft.world.item.ItemStack;
10
import net.minecraft.world.level.Explosion;
11
import net.minecraft.world.level.Level;
12
import net.minecraft.world.level.LevelAccessor;
13
import net.minecraft.world.level.LevelReader;
14
import net.minecraft.world.level.block.Block;
15
import net.minecraft.world.level.block.state.BlockState;
16
import net.minecraft.world.phys.BlockHitResult;
17
import net.minecraft.world.phys.HitResult;
18
import org.cyclops.cyclopscore.block.BlockWithEntityGui;
19
import org.cyclops.cyclopscore.blockentity.CyclopsBlockEntity;
20
import org.cyclops.cyclopscore.helper.BlockEntityHelpers;
21
import org.cyclops.cyclopscore.helper.InventoryHelpers;
22
import org.cyclops.integrateddynamics.core.blockentity.BlockEntityCableConnectableInventory;
23
import org.cyclops.integrateddynamics.core.helper.CableHelpers;
24
import org.cyclops.integrateddynamics.core.helper.NetworkHelpers;
25
import org.cyclops.integrateddynamics.core.helper.WrenchHelpers;
26

27
import java.util.Collection;
28
import java.util.function.BiFunction;
29

30
/**
31
 * A base block with a gui and part entity that can connect to cables.
32
 * @author rubensworks
33
 */
34
public abstract class BlockWithEntityGuiCabled extends BlockWithEntityGui {
35

36
    public BlockWithEntityGuiCabled(Properties properties, BiFunction<BlockPos, BlockState, CyclopsBlockEntity> blockEntitySupplier) {
37
        super(properties, blockEntitySupplier);
4✔
38
    }
1✔
39

40
    @Override
41
    public ItemInteractionResult useItemOn(ItemStack pStack, BlockState blockState, Level world, BlockPos blockPos, Player player, InteractionHand pHand, BlockHitResult rayTraceResult) {
42
        ItemStack heldItem = player.getItemInHand(player.getUsedItemHand());
5✔
43
        if (WrenchHelpers.isWrench(player, heldItem, world, blockPos, rayTraceResult.getDirection())
9!
44
                && player.isSecondaryUseActive()) {
2!
45
            if (!world.isClientSide()) {
3!
46
                Block.dropResources(blockState, world, blockPos, blockState.hasBlockEntity() ? world.getBlockEntity(blockPos) : null, player, heldItem);
13!
47
                world.destroyBlock(blockPos, false);
5✔
48
            }
49
            return ItemInteractionResult.SUCCESS;
2✔
50
        }
51
        return super.useItemOn(pStack, blockState, world, blockPos, player, pHand, rayTraceResult);
×
52
    }
53

54
    @Override
55
    public void onPlace(BlockState blockState, Level world, BlockPos blockPos, BlockState oldState, boolean isMoving) {
56
        super.onPlace(blockState, world, blockPos, oldState, isMoving);
7✔
57
        if (!world.isClientSide()) {
3!
58
            CableHelpers.onCableAdded(world, blockPos);
3✔
59
        }
60
    }
1✔
61

62
    @Override
63
    public void setPlacedBy(Level world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) {
64
        super.setPlacedBy(world, pos, state, placer, itemStack);
×
65
        if (!world.isClientSide()) {
×
66
            CableHelpers.onCableAddedByPlayer(world, pos, placer);
×
67
        }
68
    }
×
69

70
    @Override
71
    public void destroy(LevelAccessor world, BlockPos blockPos, BlockState blockState) {
72
        CableHelpers.onCableRemoving((Level) world, blockPos, true, false, blockState);
×
73
        Collection<Direction> connectedCables = CableHelpers.getExternallyConnectedCables((Level) world, blockPos);
×
74
        super.destroy(world, blockPos, blockState);
×
75
        CableHelpers.onCableRemoved((Level) world, blockPos, connectedCables);
×
76
    }
×
77

78
    @Override
79
    public void onBlockExploded(BlockState state, Level world, BlockPos blockPos, Explosion explosion) {
80
        CableHelpers.setRemovingCable(true);
2✔
81
        CableHelpers.onCableRemoving(world, blockPos, true, false, state);
7✔
82
        Collection<Direction> connectedCables = CableHelpers.getExternallyConnectedCables(world, blockPos);
4✔
83
        super.onBlockExploded(state, world, blockPos, explosion);
6✔
84
        CableHelpers.onCableRemoved(world, blockPos, connectedCables);
5✔
85
        CableHelpers.setRemovingCable(false);
2✔
86
    }
1✔
87

88
    @SuppressWarnings("deprecation")
89
    @Override
90
    public void neighborChanged(BlockState state, Level world, BlockPos pos, Block neighborBlock, BlockPos fromPos, boolean isMoving) {
91
        super.neighborChanged(state, world, pos, neighborBlock, fromPos, isMoving);
8✔
92
        NetworkHelpers.onElementProviderBlockNeighborChange(world, pos, neighborBlock, null, fromPos);
6✔
93
    }
1✔
94

95
    @Override
96
    public void onNeighborChange(BlockState state, LevelReader world, BlockPos pos, BlockPos neighbor) {
97
        super.onNeighborChange(state, world, pos, neighbor);
6✔
98
        if (world instanceof Level) {
3!
99
            NetworkHelpers.onElementProviderBlockNeighborChange((Level) world, pos, world.getBlockState(neighbor).getBlock(), null, neighbor);
10✔
100
        }
101
    }
1✔
102

103
    @Override
104
    public void onRemove(BlockState oldState, Level world, BlockPos blockPos, BlockState newState, boolean isMoving) {
105
        if (oldState.getBlock() != newState.getBlock()) {
5✔
106
            BlockEntityHelpers.get(world, blockPos, BlockEntityCableConnectableInventory.class)
7✔
107
                    .ifPresent(tile -> InventoryHelpers.dropItems(world, tile.getInventory(), blockPos));
7✔
108
            Collection<Direction> connectedCables = null;
2✔
109
            if (!CableHelpers.isRemovingCable()) {
2✔
110
                CableHelpers.onCableRemoving(world, blockPos, true, false, oldState);
7✔
111
                connectedCables = CableHelpers.getExternallyConnectedCables(world, blockPos);
4✔
112
            }
113
            super.onRemove(oldState, world, blockPos, newState, isMoving);
7✔
114
            if (!CableHelpers.isRemovingCable()) {
2✔
115
                CableHelpers.onCableRemoved(world, blockPos, connectedCables);
5✔
116
            }
117
        }
118
    }
1✔
119

120
    protected boolean isPickBlockPersistData() {
121
        return false;
×
122
    }
123

124
    @Override
125
    public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader world, BlockPos blockPos, Player player) {
126
        if (isPickBlockPersistData()) {
×
127
            return super.getCloneItemStack(state, target, world, blockPos, player);
×
128
        } else {
129
            return getCloneItemStack(world, blockPos, state);
×
130
        }
131
    }
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