текстурка лука у игрока в руке

Версия Minecraft
1.7.10
235
3
21
вечер добрый
делаю свой лук основанный на ItemBow, добавляю туда режимы и прочее, меняю EntityArrow на свою и тд
и все бы хорошо, но я в гробу видел уже текстурки тупого лука

Код:
public class MyItemBow extends ItemBow
{
    public int bowMode;

    public MyItemBow()
    {
        super();
        this.setUnlocalizedName("myBow");
        this.setTextureName("mod:myBow");
        this.setCreativeTab(GameObjects.modCreativeTab);
        this.bowMode = 0;
    }

    @Override
    public void onPlayerStoppedUsing(ItemStack item, World world, EntityPlayer player, int var4)
    {
        int j = this.getMaxItemUseDuration(item) - var4;

        ArrowLooseEvent event = new ArrowLooseEvent(player, item, j);
        MinecraftForge.EVENT_BUS.post(event);
        if (event.isCanceled())
        {
            return;
        }
        j = event.charge;

        boolean flag = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, item) > 0;

        if (flag || player.inventory.hasItem(Items.arrow))
        {
            float f = (float)j / 20.0F;
            f = (f * f + f * 2.0F) / 3.0F;

            if ((double)f < 0.1D)
            {
                return;
            }

            if (f > 1.0F)
            {
                f = 1.0F;
            }

            MyEntityArrow entityarrow = new MyEntityArrow(world, player, f * 2.0F, new ArrowType(0, null));

            if (f == 1.0F)
            {
                entityarrow.setIsCritical(true);
            }

            int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, item);

            if (k > 0)
            {
                entityarrow.setDamage(entityarrow.getDamage() + (double)k * 0.5D + 0.5D);
            }

            int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, item);

            if (l > 0)
            {
                entityarrow.setKnockbackStrength(l);
            }

            if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, item) > 0)
            {
                entityarrow.setFire(100);
            }

            item.damageItem(1, player);
            world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);

            if (flag)
            {
                entityarrow.canBePickedUp = 2;
            }
            else
            {
                player.inventory.consumeInventoryItem(Items.arrow);
            }

            if (!world.isRemote)
            {
                world.spawnEntityInWorld(entityarrow);
            }
        }
    }

    @Override
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining)
    {
        int j = stack.getMaxItemUseDuration() - useRemaining;
        System.out.println(j);

        if (stack != usingItem)
        {
            return Items.bow.getIcon(stack, renderPass);
        }
        if (j >= 18)
        {
            return Items.bow.getItemIconForUseDuration(2);
        }

        if (j > 13)
        {
            return Items.bow.getItemIconForUseDuration(1);
        }

        if (j > 0)
        {
            return Items.bow.getItemIconForUseDuration(0);
        }

        return Items.bow.getIcon(stack, renderPass);
    }
}

и все даже начиналось хорошо, он натягивается стреляет, но (см. картику)
как это исправить?topluk229.png
 
Решение
Попробуй тогда ещё это
Код:
public IIcon getIcon(final ItemStack itemStack, final int renderPass, final EntityPlayer player, final ItemStack usingItem, final int useRemaining) {
        if (Minecraft.getMinecraft().gameSettings.thirdPersonView != 0) {
            GL11.glTranslatef(0.0f, -0.6f, -0.025f);
            GL11.glRotatef(-17.0f, 0.0f, 0.0f, 1.0f);
            GL11.glRotatef(14.0f, 1.0f, 0.0f, 0.0f);
            GL11.glRotatef(4.5f, 0.0f, 1.0f, 0.0f);
        }
        if (player.getItemInUse() == null) {
            return this.itemIcon;
        }
        final int var8 = itemStack.getMaxItemUseDuration() - useRemaining;
        if (var8 >= 16 && this == ModItems.PoisonBow) {
            return ItemPoisonBow.PoisonBow3;
        }...
1,007
36
206
Попробуй тогда ещё это
Код:
public IIcon getIcon(final ItemStack itemStack, final int renderPass, final EntityPlayer player, final ItemStack usingItem, final int useRemaining) {
        if (Minecraft.getMinecraft().gameSettings.thirdPersonView != 0) {
            GL11.glTranslatef(0.0f, -0.6f, -0.025f);
            GL11.glRotatef(-17.0f, 0.0f, 0.0f, 1.0f);
            GL11.glRotatef(14.0f, 1.0f, 0.0f, 0.0f);
            GL11.glRotatef(4.5f, 0.0f, 1.0f, 0.0f);
        }
        if (player.getItemInUse() == null) {
            return this.itemIcon;
        }
        final int var8 = itemStack.getMaxItemUseDuration() - useRemaining;
        if (var8 >= 16 && this == ModItems.PoisonBow) {
            return ItemPoisonBow.PoisonBow3;
        }
        if (var8 > 11 && this == ModItems.PoisonBow) {
            return ItemPoisonBow.PoisonBow2;
        }
        if (var8 > 0 && this == ModItems.PoisonBow) {
            return ItemPoisonBow.PoisonBow1;
        }
        return this.itemIcon;
    }
 
1,007
36
206
Нашёл наверное единственный мод, где запарились с этими луками(среди популярных модов). Это был таумкрафт.
Код:
public class ItemBowBoneRenderer implements IItemRenderer
{
    private static final ResourceLocation RES_ITEM_GLINT;
    private RenderManager renderManager;
    private Minecraft mc;
    private TextureManager texturemanager;
    
    public ItemBowBoneRenderer() {
        this.renderManager = RenderManager.instance;
        this.mc = Minecraft.getMinecraft();
        this.texturemanager = this.mc.getTextureManager();
    }
    
    public boolean handleRenderType(final ItemStack item, final IItemRenderer.ItemRenderType type) {
        return type == IItemRenderer.ItemRenderType.EQUIPPED;
    }
    
    public boolean shouldUseRenderHelper(final IItemRenderer.ItemRenderType type, final ItemStack item, final IItemRenderer.ItemRendererHelper helper) {
        return false;
    }
    
    public void renderItem(final IItemRenderer.ItemRenderType type, final ItemStack item, final Object... data) {
        final EntityLivingBase entity = (EntityLivingBase)data[1];
        final ItemRenderer irInstance = this.mc.entityRenderer.itemRenderer;
        GL11.glPopMatrix();
        GL11.glPushMatrix();
        final float f2 = 2.6666667f;
        GL11.glRotatef(-20.0f, 0.0f, 0.0f, 1.0f);
        GL11.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
        GL11.glRotatef(-60.0f, 0.0f, 0.0f, 1.0f);
        GL11.glScalef(f2, f2, f2);
        GL11.glTranslatef(-0.25f, -0.1875f, 0.1875f);
        final float f3 = 0.625f;
        GL11.glTranslatef(0.0f, 0.125f, 0.3125f);
        GL11.glRotatef(-20.0f, 0.0f, 1.0f, 0.0f);
        GL11.glScalef(f3, -f3, f3);
        GL11.glRotatef(-100.0f, 1.0f, 0.0f, 0.0f);
        GL11.glRotatef(45.0f, 0.0f, 1.0f, 0.0f);
        this.renderItem(entity, item, 0);
        GL11.glPopMatrix();
        GL11.glPushMatrix();
    }
    
    private void renderItem(final EntityLivingBase par1EntityLiving, final ItemStack par2ItemStack, final int par3) {
        final IIcon icon = par1EntityLiving.getItemIcon(par2ItemStack, par3);
        if (icon == null) {
            return;
        }
        this.texturemanager.bindTexture(this.texturemanager.getResourceLocation(par2ItemStack.getItemSpriteNumber()));
        final Tessellator tessellator = Tessellator.instance;
        final float f = icon.getMinU();
        final float f2 = icon.getMaxU();
        final float f3 = icon.getMinV();
        final float f4 = icon.getMaxV();
        final float f5 = 0.0f;
        final float f6 = 0.3f;
        GL11.glEnable(32826);
        GL11.glTranslatef(-f5, -f6, 0.0f);
        final float f7 = 1.5f;
        GL11.glScalef(f7, f7, f7);
        GL11.glRotatef(50.0f, 0.0f, 1.0f, 0.0f);
        GL11.glRotatef(335.0f, 0.0f, 0.0f, 1.0f);
        GL11.glTranslatef(-0.9375f, -0.0625f, 0.0f);
        ItemRenderer.renderItemIn2D(tessellator, f2, f3, f, f4, icon.getIconWidth(), icon.getIconHeight(), 0.0625f);
        if (par2ItemStack.hasEffect(par3)) {
            GL11.glDepthFunc(514);
            GL11.glDisable(2896);
            this.texturemanager.bindTexture(new ResourceLocation("textures/misc/enchanted_item_glint.png"));
            GL11.glEnable(3042);
            GL11.glBlendFunc(768, 1);
            final float f8 = 0.76f;
            GL11.glColor4f(0.5f * f8, 0.25f * f8, 0.8f * f8, 1.0f);
            GL11.glMatrixMode(5890);
            GL11.glPushMatrix();
            final float f9 = 0.125f;
            GL11.glScalef(f9, f9, f9);
            float f10 = Minecraft.getSystemTime() % 3000L / 3000.0f * 8.0f;
            GL11.glTranslatef(f10, 0.0f, 0.0f);
            GL11.glRotatef(-50.0f, 0.0f, 0.0f, 1.0f);
            ItemRenderer.renderItemIn2D(tessellator, 0.0f, 0.0f, 1.0f, 1.0f, 256, 256, 0.0625f);
            GL11.glPopMatrix();
            GL11.glPushMatrix();
            GL11.glScalef(f9, f9, f9);
            f10 = Minecraft.getSystemTime() % 4873L / 4873.0f * 8.0f;
            GL11.glTranslatef(-f10, 0.0f, 0.0f);
            GL11.glRotatef(10.0f, 0.0f, 0.0f, 1.0f);
            ItemRenderer.renderItemIn2D(tessellator, 0.0f, 0.0f, 1.0f, 1.0f, 256, 256, 0.0625f);
            GL11.glPopMatrix();
            GL11.glMatrixMode(5888);
            GL11.glDisable(3042);
            GL11.glEnable(2896);
            GL11.glDepthFunc(515);
        }
        GL11.glDisable(32826);
    }
    
    static {
        RES_ITEM_GLINT = new ResourceLocation("textures/misc/enchanted_item_glint.png");
    }
}
Код:
MinecraftForgeClient.registerItemRenderer(ConfigItems.itemBowBone, (IItemRenderer)new ItemBowBoneRenderer());
 
Сверху