LayerWolfArmor.java 文件源码

java
阅读 24 收藏 0 点赞 0 评论 0

项目:wolfarmor 作者:
/**
 * Renders this layer.
 *
 * @param entityWolf      The wolf to render.  If it is not am EntityWolfArmored, the layer will not render.
 * @param limbSwing       The entity's limb swing progress.
 * @param limbSwingAmount The entity's limb swing progress amount.
 * @param partialTicks    The current game tick.
 * @param ageInTicks      The entity's age.
 * @param netHeadYaw      The yaw of the entity's head.
 * @param headPitch       The pitch of the entity's head.
 * @param scale           The scale at which to render the layer.
 */
@Override
public void doRenderLayer(@Nonnull EntityWolf entityWolf,
                          float limbSwing,
                          float limbSwingAmount,
                          float partialTicks,
                          float ageInTicks,
                          float netHeadYaw,
                          float headPitch,
                          float scale) {
    if (!WolfArmorMod.getConfiguration().getIsWolfArmorRenderEnabled()) {
        return;
    }

    IWolfArmorCapability wolfArmor = entityWolf.getCapability(CapabilityWolfArmor.WOLF_ARMOR_CAPABILITY, null);
    if(wolfArmor == null) {
        return;
    }

    ItemStack itemStack = wolfArmor.getArmorItemStack();

    if (!itemStack.isEmpty() && itemStack.getItem() instanceof ItemWolfArmor) {
        ItemWolfArmor armorItem = (ItemWolfArmor) itemStack.getItem();

        for (int layer = 0; layer < modelWolfArmors.length; layer++) {
            ModelWolfArmor model = modelWolfArmors[layer];
            model = getArmorModelForLayer(entityWolf, itemStack, layer, model);

            model.setModelAttributes(this.renderer.getMainModel());
            model.setLivingAnimations(entityWolf, limbSwing, limbSwingAmount, partialTicks);

            this.renderer.bindTexture(this.getArmorResource(entityWolf, itemStack, layer, null));

            int color = armorItem.getColor(itemStack);

            if (color != 0xFFFFFFFF) {
                float r = (color >> 16 & 0xFF) / 255F;
                float g = (color >> 8 & 0xFF) / 255F;
                float b = (color & 0xFF) / 255F;
                GlStateManager.color(getColorRed() * r, getColorGreen() * g, getColorBlue() * b, getAlpha());
            } else {
                GlStateManager.color(getColorRed(), getColorGreen(), getColorBlue(), getAlpha());
            }

            model.render(entityWolf, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale);

            GlStateManager.color(getColorRed(), getColorGreen(), getColorBlue(), getAlpha());

            if (armorItem.getHasOverlay(itemStack)) {
                this.renderer.bindTexture(this.getArmorResource(entityWolf, itemStack, layer, "overlay"));
                model.render(entityWolf, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale);
            }

            if (!getShouldSkipArmorGlint() && itemStack.hasEffect()) {
                LayerArmorBase.renderEnchantedGlint(renderer, entityWolf, model, limbSwing, limbSwingAmount, partialTicks,
                        ageInTicks, netHeadYaw, headPitch, scale);
            }
        }
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号