minecraft-src/net/minecraft/client/renderer/blockentity/CampfireRenderer.java
2025-07-04 02:00:41 +03:00

47 lines
2 KiB
Java

package net.minecraft.client.renderer.blockentity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Axis;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context;
import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.CampfireBlock;
import net.minecraft.world.level.block.entity.CampfireBlockEntity;
@Environment(EnvType.CLIENT)
public class CampfireRenderer implements BlockEntityRenderer<CampfireBlockEntity> {
private static final float SIZE = 0.375F;
private final ItemRenderer itemRenderer;
public CampfireRenderer(Context context) {
this.itemRenderer = context.getItemRenderer();
}
public void render(CampfireBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) {
Direction direction = blockEntity.getBlockState().getValue(CampfireBlock.FACING);
NonNullList<ItemStack> nonNullList = blockEntity.getItems();
int i = (int)blockEntity.getBlockPos().asLong();
for (int j = 0; j < nonNullList.size(); j++) {
ItemStack itemStack = nonNullList.get(j);
if (itemStack != ItemStack.EMPTY) {
poseStack.pushPose();
poseStack.translate(0.5F, 0.44921875F, 0.5F);
Direction direction2 = Direction.from2DDataValue((j + direction.get2DDataValue()) % 4);
float f = -direction2.toYRot();
poseStack.mulPose(Axis.YP.rotationDegrees(f));
poseStack.mulPose(Axis.XP.rotationDegrees(90.0F));
poseStack.translate(-0.3125F, -0.3125F, 0.0F);
poseStack.scale(0.375F, 0.375F, 0.375F);
this.itemRenderer.renderStatic(itemStack, ItemDisplayContext.FIXED, packedLight, packedOverlay, poseStack, bufferSource, blockEntity.getLevel(), i + j);
poseStack.popPose();
}
}
}
}