定制弓拉动画不显示 - Minecraft Forge for 1.7.10

时间:2014-12-04 22:04:48

标签: minecraft minecraft-forge

我正在创建ItemBow的基本扩展。现在,我只想改变新弓的纹理。我有“待机”图标正常工作,但在拍摄弓时,我没有得到“拉动”图标来循环播放动画。

以下是缺少动画的小型截屏视频。如您所见,整个镜头中都出现“待机”图标。动画永远不会循环显示3个“拉动”图标。

http://screencast-o-matic.com/watch/c2lfr0e0Ze

这是我的班级:

package com.swatkins.firstmod;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemBow;
import net.minecraft.util.IIcon;

public class DiamondBow extends ItemBow {

   public static final String[] bowPullIconNameArray = new String[] {"diamond_bow_pulling_0", "diamond_bow_pulling_1", "diamond_bow_pulling_2"};
    @SideOnly(Side.CLIENT)
    private IIcon[] iconArray;

   public DiamondBow()
   {
      setUnlocalizedName(FirstMod.MODID + "_" + "diamond_bow");
   }

   @Override
   @SideOnly(Side.CLIENT)
    public void registerIcons(IIconRegister p_94581_1_)
    {
        this.itemIcon = p_94581_1_.registerIcon(FirstMod.MODID + ":" + "diamond_bow_standby");
        this.iconArray = new IIcon[bowPullIconNameArray.length];

        for (int i = 0; i < this.iconArray.length; ++i)
        {
            this.iconArray[i] = p_94581_1_.registerIcon(FirstMod.MODID + ":" + bowPullIconNameArray[i]);
        }
    }
}

我知道有一个getItemIconForUseDuration方法,但是当按住鼠标右键射击弓时,它永远不会被调用。我也尝试过实现getIcon方法,但也没有调用它。

任何人都可以帮助我制作这个动画吗?感谢您的帮助!

仅供参考:我已经在Minecraft forge论坛上发布了这个,但它似乎已经死了。

1 个答案:

答案 0 :(得分:4)

我刚才做了一个定制的弓。虽然这两种方法似乎没有必要,但它们是。 (我现在删除它们以便在我自己的弓上进行测试)以下是我编写方法的方法:

@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon (ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining)
{
    if (usingItem != null)
    {
        int time = 72000 - useRemaining;
        if (time < 8)
            return iconArray[0];
        if (time < 14)
            return iconArray[1];
        return iconArray[2];
    }
    return getIcon(stack, renderPass);
}

@Override
public IIcon getItemIconForUseDuration(int par1)
{
    return this.iconArray[par1];
}

希望这有帮助!

编辑:我发现调用了getItemIconForUseDuration()的位置。在EntityPlayer.class中,getItemIcon()调用它。