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; import net.minecraft.world.phys.Vec3; @Environment(EnvType.CLIENT) public class CampfireRenderer implements BlockEntityRenderer { private static final float SIZE = 0.375F; private final ItemRenderer itemRenderer; public CampfireRenderer(Context context) { this.itemRenderer = context.getItemRenderer(); } public void render(CampfireBlockEntity campfireBlockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j, Vec3 vec3) { Direction direction = campfireBlockEntity.getBlockState().getValue(CampfireBlock.FACING); NonNullList nonNullList = campfireBlockEntity.getItems(); int k = (int)campfireBlockEntity.getBlockPos().asLong(); for (int l = 0; l < nonNullList.size(); l++) { ItemStack itemStack = nonNullList.get(l); if (itemStack != ItemStack.EMPTY) { poseStack.pushPose(); poseStack.translate(0.5F, 0.44921875F, 0.5F); Direction direction2 = Direction.from2DDataValue((l + direction.get2DDataValue()) % 4); float g = -direction2.toYRot(); poseStack.mulPose(Axis.YP.rotationDegrees(g)); 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, i, j, poseStack, multiBufferSource, campfireBlockEntity.getLevel(), k + l); poseStack.popPose(); } } } }