• 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/render/blockentity/RenderBlockEntitySqueezer.java
1
package org.cyclops.integrateddynamics.client.render.blockentity;
2

3
import com.mojang.blaze3d.vertex.PoseStack;
4
import com.mojang.blaze3d.vertex.VertexConsumer;
5
import net.minecraft.client.Minecraft;
6
import net.minecraft.client.renderer.LevelRenderer;
7
import net.minecraft.client.renderer.MultiBufferSource;
8
import net.minecraft.client.renderer.RenderType;
9
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
10
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
11
import net.minecraft.client.renderer.item.ItemStackRenderState;
12
import net.minecraft.client.renderer.texture.OverlayTexture;
13
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
14
import net.minecraft.core.Direction;
15
import net.minecraft.world.item.ItemDisplayContext;
16
import net.minecraft.world.item.ItemStack;
17
import net.minecraft.world.phys.Vec3;
18
import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions;
19
import net.neoforged.neoforge.fluids.FluidStack;
20
import org.apache.commons.lang3.tuple.Triple;
21
import org.cyclops.cyclopscore.helper.DirectionHelpers;
22
import org.cyclops.cyclopscore.helper.IModHelpers;
23
import org.cyclops.cyclopscore.helper.IModHelpersNeoForge;
24
import org.cyclops.integrateddynamics.blockentity.BlockEntitySqueezer;
25
import org.joml.Matrix4f;
26

27
/**
28
 * Renderer for the item inside the {@link org.cyclops.integrateddynamics.block.BlockDryingBasin}.
29
 *
30
 * @author rubensworks
31
 *
32
 */
33
public class RenderBlockEntitySqueezer implements BlockEntityRenderer<BlockEntitySqueezer> {
34

35
    private static final float OFFSET = 0.01F;
36
    private static final float MINY = 0.0625F;
37
    private static final float MAXY = 0.125F - OFFSET;
38
    private static final float MIN = 0F + OFFSET;
39
    private static final float MAX = 1F - OFFSET;
40
    private static float[][][] coordinates = {
×
41
            { // DOWN
42
                    {MIN, MINY, MIN},
43
                    {MIN, MINY, MAX},
44
                    {MAX, MINY, MAX},
45
                    {MAX, MINY, MIN}
46
            },
47
            { // UP
48
                    {MIN, MAXY, MIN},
49
                    {MIN, MAXY, MAX},
50
                    {MAX, MAXY, MAX},
51
                    {MAX, MAXY, MIN}
52
            },
53
            { // NORTH
54
                    {MIN, MINY, MIN},
55
                    {MIN, MAXY, MIN},
56
                    {MAX, MAXY, MIN},
57
                    {MAX, MINY, MIN}
58
            },
59
            { // SOUTH
60
                    {MIN, MINY, MAX},
61
                    {MIN, MAXY, MAX},
62
                    {MAX, MAXY, MAX},
63
                    {MAX, MINY, MAX}
64
            },
65
            { // WEST
66
                    {MIN, MINY, MIN},
67
                    {MIN, MAXY, MIN},
68
                    {MIN, MAXY, MAX},
69
                    {MIN, MINY, MAX}
70
            },
71
            { // EAST
72
                    {MAX, MINY, MIN},
73
                    {MAX, MAXY, MIN},
74
                    {MAX, MAXY, MAX},
75
                    {MAX, MINY, MAX}
76
            }
77
    };
78

79
    public RenderBlockEntitySqueezer(BlockEntityRendererProvider.Context context) {
×
80

81
    }
×
82

83
    @Override
84
    public void render(BlockEntitySqueezer tile, float partialTicks, PoseStack matrixStack,
85
                       MultiBufferSource renderTypeBuffer, int combinedLight, int combinedOverlay, Vec3 cameraPos) {
86
        if(tile != null) {
×
87
            if(!tile.getInventory().getItem(0).isEmpty()) {
×
88
                matrixStack.pushPose();
×
89
                matrixStack.translate(-0.5F, -0.5F, -0.5F);
×
90
                renderItem(matrixStack, renderTypeBuffer, tile.getInventory().getItem(0), tile);
×
91
                matrixStack.popPose();
×
92
            }
93

94
            if(!tile.getTank().isEmpty()) {
×
95
                FluidStack fluid = tile.getTank().getFluid();
×
96
                int combinedLightCorrected = LevelRenderer.getLightColor(tile.getLevel(), tile.getBlockPos().offset(Direction.UP.getUnitVec3i()));
×
97
                IModHelpersNeoForge.get().getRenderHelpers().renderFluidContext(fluid, matrixStack, () -> {
×
98
                    float height = Math.max(0.0625F - OFFSET, fluid.getAmount() * 0.0625F / IModHelpersNeoForge.get().getFluidHelpers().getBucketVolume() + 0.0625F - OFFSET);
×
99
                    int brightness = Math.max(combinedLightCorrected, fluid.getFluid().getFluidType().getLightLevel(fluid));
×
100
                    int l2 = brightness >> 0x10 & 0xFFFF;
×
101
                    int i3 = brightness & 0xFFFF;
×
102

103
                    for(Direction side : DirectionHelpers.DIRECTIONS) {
×
104
                        TextureAtlasSprite icon = IModHelpersNeoForge.get().getRenderHelpers().getFluidIcon(fluid, Direction.UP);
×
105
                        IClientFluidTypeExtensions renderProperties = IClientFluidTypeExtensions.of(fluid.getFluid());
×
106
                        Triple<Float, Float, Float> color = IModHelpers.get().getBaseHelpers().intToRGB(renderProperties.getTintColor(fluid));
×
107

108
                        VertexConsumer vb = renderTypeBuffer.getBuffer(RenderType.text(icon.atlasLocation()));
×
109
                        Matrix4f matrix = matrixStack.last().pose();
×
110

111
                        float[][] c = coordinates[side.ordinal()];
×
112
                        float replacedMaxV = (side == Direction.UP || side == Direction.DOWN) ?
×
113
                                icon.getV1() : ((icon.getV1() - icon.getV0()) * height + icon.getV0());
×
114
                        vb.addVertex(matrix, c[0][0], getHeight(side, c[0][1], height), c[0][2]).setColor(color.getLeft(), color.getMiddle(), color.getRight(), 1).setUv(icon.getU0(), replacedMaxV).setUv2(l2, i3);
×
115
                        vb.addVertex(matrix, c[1][0], getHeight(side, c[1][1], height), c[1][2]).setColor(color.getLeft(), color.getMiddle(), color.getRight(), 1).setUv(icon.getU0(), icon.getV0()).setUv2(l2, i3);
×
116
                        vb.addVertex(matrix, c[2][0], getHeight(side, c[2][1], height), c[2][2]).setColor(color.getLeft(), color.getMiddle(), color.getRight(), 1).setUv(icon.getU1(), icon.getV0()).setUv2(l2, i3);
×
117
                        vb.addVertex(matrix, c[3][0], getHeight(side, c[3][1], height), c[3][2]).setColor(color.getLeft(), color.getMiddle(), color.getRight(), 1).setUv(icon.getU1(), replacedMaxV).setUv2(l2, i3);
×
118
                    }
×
119
                });
×
120
            }
121
        }
122
    }
×
123

124
    private void renderItem(PoseStack matrixStack, MultiBufferSource renderTypeBuffer, ItemStack itemStack, BlockEntitySqueezer tile) {
125
        ItemStackRenderState renderState = new ItemStackRenderState();
×
126
        Minecraft.getInstance().getItemModelResolver().updateForTopItem(renderState, itemStack, ItemDisplayContext.FIXED, tile.getLevel(), null, 0);
×
127

128
        matrixStack.pushPose();
×
129
        float yTop = (9 - tile.getItemHeight()) * 0.125F;
×
130
        matrixStack.translate(1F, (yTop - 1F) / 2 + 1F, 1F);
×
131
        if (renderState.isOversizedInGui()) {
×
132
            matrixStack.scale(1.7F, 1.7F, 1.7F);
×
133
        }
134
        matrixStack.scale(1F, yTop - 0.125F, 1F);
×
135

136
        Minecraft.getInstance().getItemRenderer().renderStatic(itemStack, ItemDisplayContext.FIXED, 15728880, OverlayTexture.NO_OVERLAY, matrixStack, renderTypeBuffer, tile.getLevel(), 0);
×
137
        matrixStack.popPose();
×
138
    }
×
139

140
    private static float getHeight(Direction side, float height, float replaceHeight) {
141
        if(height == MAXY) {
×
142
            return replaceHeight;
×
143
        }
144
        return height;
×
145
    }
146

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