nbt в getArmorTexture

Версия Minecraft
1.7.10
54
3
6
Короче для анимки юзаю я nbt. в самом методе
getArmorTexture:
 int layer = (onArmorType != ArmorType.LEGGINGS) ? 1 : 2;
        int damageAmount = (stack.getItemDamage() > stack.getMaxDamage() / 2 + stack.getMaxDamage() / 4) ? 2 : ((stack.getItemDamage() > stack.getMaxDamage() / 2) ? 1 : 0);
 if (stack.getTagCompound().getInteger("ANIM") == 1) {
                textureAnimOn = "marks:armors/mark50/animation/lvl" + stack.getTagCompound().getInteger("ANIM_VALUE") + "[I]" /* тут короче _ но в теме то сломалось[I] [I]/ + layer + "[/I]" /[/I]  /[/I]тут тоже*/  + damageAmount + ".png"; // + "_" + layer + "_0.png";
                return textureAnimOn;
            }
но из за
Java:
if (stack.getTagCompound().getInteger("ANIM") == 1) {
                textureAnimOn = "marks:armors/mark50/animation/lvl" + stack.getTagCompound().getInteger("ANIM_VALUE") + "_" + layer + "_" + damageAmount + ".png"; // + "_" + layer + "_0.png";
                return textureAnimOn;
            }
дальше туловища текстура не рендерится (анимка работает но головы и ног нет), хотя текстура ставится (выводит через System.out) пробовал сразу фуловую текстуру без nbt всё норм
setTags(itemStack, player, world); делаю в onArmorTick сами nbt ставлю так
Java:
 public void setTags(ItemStack itemstack, EntityPlayer player, World world) {
        if (!itemstack.hasTagCompound()) {
            super.setTags(itemstack, player, world);
            NBTTagCompound NBTTagCompound = new NBTTagCompound();
            itemstack.setTagCompound(NBTTagCompound);
            itemstack.getTagCompound().setInteger("ANIM", 1);
            itemstack.getTagCompound().setInteger("ANIM_VALUE", 19);
}
}
в onArmorTick
onArmorTick:
 public void onArmorTick(ArmorType onArmorType, EntityPlayer player, World world, Side logical, int i, ItemStack itemStack) {
        super.onArmorTick(onArmorType, player, world, logical, i, itemStack);
   setTags(itemStack, player, world);
     if (itemStack == player.getCurrentArmor(2)) {
 int anim = itemStack.getTagCompound().getInteger("ANIM");
                int animValue = itemStack.getTagCompound().getInteger("ANIM_VALUE");
                if (player.ticksExisted % 3 == 0) {
                    if (anim == 1) {
                        if (animValue > 0) {
                            int newValue;
                            newValue = animValue - 1;
                            itemStack.getTagCompound().setInteger("ANIM_VALUE", newValue);
                        } else {
                            itemStack.getTagCompound().setInteger("ANIM", 0);
                        }
                    }
                }
}
Короче потом удалил проверку nbt и сделал в onTick
if (itemStack == player.getCurrentArmor(2) || itemStack == player.getCurrentArmor(0) || itemStack == player.getCurrentArmor(1) || itemStack == player.getCurrentArmor(3)) { И каким то ЧУДОМ заработало я подумал О УРА, решил добавил проверку по nbt включено или нет, ЗАРАБОТАЛО, ладно захотел сделать выключение (так же добавил новые nbt tag, проверку ии...) первое (включение) работает(выключенин) второе нет текстура ног и головы не изменятся никак

Java:
if (stack.getTagCompound().getInteger("ANIM") == 1) { //работает
                textureAnimOn = "marks:armors/mark50/animation/lvl" + stack.getTagCompound().getInteger("ANIMVALUE") + "" + layer + "" + damageAmount + ".png"; // + "" + layer + "0.png";
                return textureAnimOn;

        }
        if (stack.getTagCompound().getInteger("ANIM_OFF") == 1) { //не работает, но именно не меняется текутура головы и ног (остаётся простой)

                textureAnimOff = "marks:armors/mark50/animation/lvl" + stack.getTagCompound().getInteger("ANIM_VALUE_OFF") + "" + layer + "" + damageAmount + ".png"; // + "" + layer + "0.png";
                return textureAnimOff;

        }
 
Последнее редактирование:
Сверху