• 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

0.0
/src/main/java/org/cyclops/integrateddynamics/client/model/CableModel.java
1
package org.cyclops.integrateddynamics.client.model;
2

3
import net.minecraft.client.Minecraft;
4
import net.minecraft.client.renderer.block.BlockModelShaper;
5
import net.minecraft.client.renderer.block.BlockRenderDispatcher;
6
import net.minecraft.client.renderer.block.model.BakedQuad;
7
import net.minecraft.client.renderer.block.model.BlockStateModel;
8
import net.minecraft.client.renderer.chunk.ChunkSectionLayer;
9
import net.minecraft.client.resources.model.ResolvedModel;
10
import net.minecraft.client.resources.model.UnbakedModel;
11
import net.minecraft.core.BlockPos;
12
import net.minecraft.core.Direction;
13
import net.minecraft.util.RandomSource;
14
import net.minecraft.world.entity.LivingEntity;
15
import net.minecraft.world.item.ItemStack;
16
import net.minecraft.world.level.BlockAndTintGetter;
17
import net.minecraft.world.level.Level;
18
import net.minecraft.world.level.block.state.BlockState;
19
import net.neoforged.neoforge.model.data.ModelData;
20
import org.cyclops.cyclopscore.helper.ModelHelpers;
21
import org.cyclops.integrateddynamics.Reference;
22
import org.cyclops.integrateddynamics.api.part.IPartContainer;
23
import org.cyclops.integrateddynamics.api.part.PartRenderPosition;
24
import org.cyclops.integrateddynamics.block.BlockCable;
25
import org.jetbrains.annotations.Nullable;
26

27
import java.util.List;
28
import java.util.Optional;
29

30
/**
31
 * A dynamic facadeModel for cables.
32
 * @author rubensworks
33
 */
34
public class CableModel extends CableModelBase {
35

36
    public CableModel(BlockAndTintGetter level, BlockState state, Direction facing, RandomSource rand, ModelData modelData, ChunkSectionLayer renderType) {
37
        super(level, state, facing, rand, modelData, renderType);
×
38
    }
×
39

40
    public CableModel(ItemStack itemStack, Level world, LivingEntity entity) {
41
        super(itemStack, world, entity);
×
42
    }
×
43

44
    public CableModel() {
45
        super();
×
46
    }
×
47

48
    @Override
49
    protected boolean isRealCable(ModelData modelData) {
50
        return ModelHelpers.getSafeProperty(modelData, BlockCable.REALCABLE, true);
×
51
    }
52

53
    @Override
54
    protected Optional<BlockState> getFacade(ModelData modelData) {
55
        return ModelHelpers.getSafeProperty(modelData, BlockCable.FACADE, Optional.empty());
×
56
    }
57

58
    @Override
59
    protected boolean isConnected(ModelData modelData, Direction side) {
60
        return ModelHelpers.getSafeProperty(modelData, BlockCable.CONNECTED[side.ordinal()], false);
×
61
    }
62

63
    @Override
64
    protected boolean hasPart(ModelData modelData, Direction side) {
65
        return getPartRenderPosition(modelData, side) != PartRenderPosition.NONE;
×
66
    }
67

68
    @Override
69
    protected PartRenderPosition getPartRenderPosition(ModelData modelData, Direction side) {
70
        return ModelHelpers.getSafeProperty(modelData,
×
71
                BlockCable.PART_RENDERPOSITIONS[side.ordinal()], PartRenderPosition.NONE);
×
72
    }
73

74
    @Override
75
    protected boolean shouldRenderParts(ModelData modelData) {
76
        return ModelHelpers.getSafeProperty(modelData, BlockCable.PARTCONTAINER, null) != null;
×
77
    }
78

79
    @Override
80
    protected BlockStateModel getPartModel(ModelData modelData, Direction side) {
81
        IPartContainer partContainer = ModelHelpers.getSafeProperty(modelData, BlockCable.PARTCONTAINER, null);
×
82
        BlockState blockState = partContainer != null && partContainer.hasPart(side) ? partContainer.getPart(side).getBlockState(partContainer, side) : null;
×
83
        Minecraft mc = Minecraft.getInstance();
×
84
        BlockRenderDispatcher blockRendererDispatcher = mc.getBlockRenderer();
×
85
        BlockModelShaper blockModelShapes = blockRendererDispatcher.getBlockModelShaper();
×
86
        return blockModelShapes.getBlockModel(blockState);
×
87
    }
88

89
    @Override
90
    protected IRenderState getRenderState(ModelData modelData) {
91
        return ModelHelpers.getSafeProperty(modelData, BlockCable.RENDERSTATE, null);
×
92
    }
93

94
    @Override
95
    public List<BakedQuad> handleBlockState(BlockAndTintGetter level, BlockPos pos, BlockState state, Direction side, RandomSource rand, ModelData extraData, ChunkSectionLayer renderType) {
96
        return new CableModel(level, state, side, rand, extraData, renderType).getGeneralQuads();
×
97
    }
98

99
    @Override
100
    public List<BakedQuad> handleItemState(@Nullable ItemStack stack, @Nullable Level world, @Nullable LivingEntity entity) {
101
        return new CableModel(stack, world, entity).getGeneralQuads();
×
102
    }
103

104
    @Override
105
    public UnbakedModel wrapped() {
106
        throw new UnsupportedOperationException();
×
107
    }
108

109
    @Override
110
    public @Nullable ResolvedModel parent() {
111
        throw new UnsupportedOperationException();
×
112
    }
113

114
    @Override
115
    public String debugName() {
116
        return Reference.MOD_ID + ":CableModel";
×
117
    }
118
}
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