PrettyPipes/src/main/java/de/ellpeck/prettypipes/entities/PipeFrameRenderer.java

39 lines
1.8 KiB
Java
Raw Permalink Normal View History

2020-04-20 03:37:23 +02:00
package de.ellpeck.prettypipes.entities;
2021-12-02 15:25:46 +01:00
import com.mojang.blaze3d.vertex.PoseStack;
2023-07-07 19:54:52 +02:00
import com.mojang.math.Axis;
import net.minecraft.client.gui.Font;
2021-12-02 15:25:46 +01:00
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
2020-04-20 03:37:23 +02:00
import net.minecraft.client.renderer.entity.ItemFrameRenderer;
2021-12-02 15:25:46 +01:00
public class PipeFrameRenderer extends ItemFrameRenderer<PipeFrameEntity> {
public PipeFrameRenderer(EntityRendererProvider.Context renderManagerIn) {
super(renderManagerIn);
2020-04-20 03:37:23 +02:00
}
@Override
2021-12-02 15:25:46 +01:00
public void render(PipeFrameEntity entityIn, float entityYaw, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int packedLightIn) {
2020-04-20 03:37:23 +02:00
super.render(entityIn, entityYaw, partialTicks, matrixStackIn, bufferIn, packedLightIn);
2021-12-02 15:25:46 +01:00
matrixStackIn.pushPose();
var direction = entityIn.getDirection();
var vec3d = this.getRenderOffset(entityIn, partialTicks);
matrixStackIn.translate(-vec3d.x, -vec3d.y, -vec3d.z);
matrixStackIn.translate(direction.getStepX() * 0.46875, direction.getStepY() * 0.46875, direction.getStepZ() * 0.46875);
2023-07-07 19:54:52 +02:00
matrixStackIn.mulPose(Axis.XP.rotationDegrees(entityIn.getXRot()));
matrixStackIn.mulPose(Axis.YP.rotationDegrees(180.0F - entityIn.getYRot()));
2020-04-20 03:37:23 +02:00
2021-12-02 15:25:46 +01:00
var font = this.getFont();
var amount = entityIn.getAmount();
2023-07-07 19:54:52 +02:00
var amountStrg = amount < 0 ? "?" : String.valueOf(amount);
var x = 0.5F - font.width(amountStrg) / 2F;
2021-12-02 15:25:46 +01:00
var matrix4f = matrixStackIn.last().pose();
2020-04-20 16:07:44 +02:00
matrixStackIn.translate(0, 0.285F, 0.415F);
2020-04-20 03:37:23 +02:00
matrixStackIn.scale(-0.02F, -0.02F, 0.02F);
2023-07-07 19:54:52 +02:00
font.drawInBatch(amountStrg, x, 0, 0xFFFFFF, true, matrix4f, bufferIn, Font.DisplayMode.NORMAL, 0, packedLightIn);
2020-04-20 03:37:23 +02:00
2021-12-02 15:25:46 +01:00
matrixStackIn.popPose();
2020-04-20 03:37:23 +02:00
}
}