我正在创建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论坛上发布了这个,但它似乎已经死了。
答案 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()调用它。