minecraft - 自定义拉弓动画未显示 - Minecraft Forge 1.7.10

标签 minecraft minecraft-forge

我正在创建 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/

相关文章:

windows - 指定用于批处理的 zip 文件

java - Minecraft Bukkit 1.8 将列表保存到 config.yml 中

java - 把一个Integer变成一组图片

gradle - 从build.gradle添加jvm args

java - FML Gradle - 失败 : Build failed with an exception

java - 如何在 Forge 中获取 MinecraftServer 的实例?

java - 如何获取库存中单击的项目的名称

c - Minecraft 洪水填充

java - 注册项目时出错 [1.12.2] Minecraft Forge

java - net.minecraft.util.Session.getToken() 和 net.minecraft.util.Session.getProfileID() 的奇怪返回值