Нет текстуры при натягивании тетивы лука

Версия Minecraft
1.7.10
17
2
0
Здравствуйте, у меня возникает проблема с анимацией. При натягивании лука 2,3 и 4 фазы текстур нет, просто чёрно-розовые текстуры, сама натяжка происходит нормально.
Код класса
Java:
package ru.was.main.item;

import cpw.mods.fml.common.eventhandler.Event;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.init.Items;
import net.minecraft.item.EnumAction;
import net.minecraft.item.ItemBow;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.ArrowLooseEvent;
import net.minecraftforge.event.entity.player.ArrowNockEvent;
import ru.was.main.Main;
import org.lwjgl.opengl.GL11;

public class ItemBossBow111Ardemium extends ItemBow {
  public static final String[] bowPullIconNameArray = new String[] { "pulling_0", "pulling_1", "pulling_2" };
  
  @SideOnly(Side.CLIENT)
  private IIcon[] iconArray;
  
  private static final String __OBFID = "CL_00001777";
  
  public static IIcon ArdemiumBow111;
  
  public static IIcon ArdemiumBow112;
  
  public static IIcon ArdemiumBow113;
  
  public static IIcon ArdemiumBow114;
  
  public ItemBossBow111Ardemium() {
    this.maxStackSize = 1;
    setMaxDamage(550);
    this.bFull3D = true;
  }
  
  public void onPlayerStoppedUsing(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer, int par4) {
    int j = getMaxItemUseDuration(par1ItemStack) - par4;
    ArrowLooseEvent event = new ArrowLooseEvent(par3EntityPlayer, par1ItemStack, j);
    MinecraftForge.EVENT_BUS.post((Event)event);
    if (event.isCanceled())
      return; 
    j = event.charge;
    boolean flag = (par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0);
    if (flag || par3EntityPlayer.inventory.hasItem(Items.arrow)) {
      float f = j / 17.0F;
      f = (f * f + f * 2.0F) / 3.0F;
      if (f < 0.1D)
        return; 
      if (f > 1.0F)
        f = 1.0F; 
      EntityArrow entityarrow = new EntityArrow(par2World, (EntityLivingBase)par3EntityPlayer, f * 2.1F);
      if (f == 1.0F)
        entityarrow.setIsCritical(true); 
      int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, par1ItemStack);
      if (k > 0)
        entityarrow.setDamage(entityarrow.getDamage() + k * 0.5D + 0.5D); 
      int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, par1ItemStack);
      if (l > 0)
        entityarrow.setKnockbackStrength(l); 
      if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, par1ItemStack) > 0)
        entityarrow.setFire(100); 
      par1ItemStack.damageItem(1, (EntityLivingBase)par3EntityPlayer);
      par2World.playSoundAtEntity((Entity)par3EntityPlayer, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
      if (flag) {
        entityarrow.canBePickedUp = 2;
      } else {
        par3EntityPlayer.inventory.consumeInventoryItem(Items.arrow);
      } 
      if (!par2World.isRemote) {
        par2World.spawnEntityInWorld((Entity)entityarrow);
        entityarrow.setDamage(entityarrow.getDamage() * 1.5D);
      } 
    } 
  }
  
  public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) {
    return par1ItemStack;
  }
  
  public int getMaxItemUseDuration(ItemStack par1ItemStack) {
    return 36000;
  }
  
  public EnumAction getItemUseAction(ItemStack par1ItemStack) {
    return EnumAction.bow;
  }
  
  public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) {
    ArrowNockEvent event = new ArrowNockEvent(par3EntityPlayer, par1ItemStack);
    MinecraftForge.EVENT_BUS.post((Event)event);
    if (event.isCanceled())
      return event.result; 
    if (par3EntityPlayer.capabilities.isCreativeMode || par3EntityPlayer.inventory.hasItem(Items.arrow))
      par3EntityPlayer.setItemInUse(par1ItemStack, getMaxItemUseDuration(par1ItemStack)); 
    return par1ItemStack;
  }
  
  public int getItemEnchantability() {
    return 1;
  }
  
  @SideOnly(Side.CLIENT)
  public void registerIcons(IIconRegister par1IIconRegister) {
    this.itemIcon = par1IIconRegister.registerIcon("was:weapons/BossBow1.1.1Ardemium");
    ArdemiumBow111 = par1IIconRegister.registerIcon("was:weapons/BossBow1.1.1Ardemium");
    ArdemiumBow112 = par1IIconRegister.registerIcon("was:weapons/BossBow1.1.2Ardemium");
    ArdemiumBow113 = par1IIconRegister.registerIcon("was:weapons/BossBow1.1.3Ardemium");
    ArdemiumBow114 = par1IIconRegister.registerIcon("was:weapons/BossBow1.1.4Ardemium");
    this.iconArray = new IIcon[bowPullIconNameArray.length];
    for (int i = 0; i < this.iconArray.length; i++)
      this.iconArray[i] = par1IIconRegister.registerIcon(getIconString() + "_" + bowPullIconNameArray[i]); 
  }
  
  public IIcon getIcon(ItemStack itemStack, int renderPass, EntityPlayer player, ItemStack usingItem, 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; 
    int var8 = itemStack.getMaxItemUseDuration() - useRemaining;
    if (var8 >= 16)
      if (this == Main.bossBow111Ardemium)
        return ArdemiumBow114;  
    if (var8 > 11)
      if (this == Main.bossBow111Ardemium)
        return ArdemiumBow113;  
    if (var8 > 0)
      if (this == Main.bossBow111Ardemium)
        return ArdemiumBow112;  
    return this.itemIcon;
  }
}
 
Решение
Сравнение с this это уже говнокодинг. Расстановка модификатора static полям тоже сделана от балды. Иконки разбросаны то по полям, то по массиву. Прибрались бы что ли... Так проблему найдёте быстрее.
1,074
72
372
Сравнение с this это уже говнокодинг. Расстановка модификатора static полям тоже сделана от балды. Иконки разбросаны то по полям, то по массиву. Прибрались бы что ли... Так проблему найдёте быстрее.
 
Последнее редактирование:
Сверху