Короче для анимки юзаю я nbt. в самом методе
но из за
дальше туловища текстура не рендерится (анимка работает но головы и ног нет), хотя текстура ставится (выводит через System.out) пробовал сразу фуловую текстуру без nbt всё норм
setTags(itemStack, player, world); делаю в onArmorTick сами nbt ставлю так
в onArmorTick
Короче потом удалил проверку nbt и сделал в onTick
if (itemStack == player.getCurrentArmor(2) || itemStack == player.getCurrentArmor(0) || itemStack == player.getCurrentArmor(1) || itemStack == player.getCurrentArmor(3)) { И каким то ЧУДОМ заработало я подумал О УРА, решил добавил проверку по nbt включено или нет, ЗАРАБОТАЛО, ладно захотел сделать выключение (так же добавил новые nbt tag, проверку ии...) первое (включение) работает(выключенин) второе нет текстура ног и головы не изменятся никак
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;
}
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:
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);
}
}
}
}
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;
}
Последнее редактирование: