package net.minecraft.client.renderer.entity.layers; import com.mojang.blaze3d.vertex.PoseStack; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.PandaModel; import net.minecraft.client.renderer.ItemInHandRenderer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.util.Mth; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.animal.Panda; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; @Environment(EnvType.CLIENT) public class PandaHoldsItemLayer extends RenderLayer> { private final ItemInHandRenderer itemInHandRenderer; public PandaHoldsItemLayer(RenderLayerParent> renderer, ItemInHandRenderer itemInHandRenderer) { super(renderer); this.itemInHandRenderer = itemInHandRenderer; } public void render( PoseStack poseStack, MultiBufferSource buffer, int packedLight, Panda livingEntity, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch ) { ItemStack itemStack = livingEntity.getItemBySlot(EquipmentSlot.MAINHAND); if (livingEntity.isSitting() && !livingEntity.isScared()) { float f = -0.6F; float g = 1.4F; if (livingEntity.isEating()) { f -= 0.2F * Mth.sin(ageInTicks * 0.6F) + 0.2F; g -= 0.09F * Mth.sin(ageInTicks * 0.6F); } poseStack.pushPose(); poseStack.translate(0.1F, g, f); this.itemInHandRenderer.renderItem(livingEntity, itemStack, ItemDisplayContext.GROUND, false, poseStack, buffer, packedLight); poseStack.popPose(); } } }