我正在创建 ItemBow
的一个非常基本的扩展。现在,我只是想改变我的新弓的纹理。我的“待机”图标工作正常,但是在射击弓时,我没有得到“拉动”图标来循环播放动画。
下面是一个缺少动画的小截屏视频。正如您所看到的,“待机”图标贯穿整个镜头。动画从不循环显示 3 个“拉动”图标。
http://screencast-o-matic.com/watch/c2lfr0e0Ze
这是我的类(class):
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 论坛中,但它似乎已经死在那里了。
最佳答案
我不久前做了一把定制弓。虽然这两种方法似乎没有必要,但它们确实是必要的。 (我刚刚删除了它们以在我自己的弓上进行测试)以下是我对方法进行编码的方式:
@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()调用它。
关于minecraft - 自定义拉弓动画未显示 - Minecraft Forge 1.7.10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27305013/