Изменяемая прочность

Версия Minecraft
1.7.10
1,202
31
185
Я уж всех заип своими вопросами, но не к кому больше обратиться.
Дамагаю свой итем в методе так
gunStack.setItemDamage(gunStack.getItemDamage() + 1);
Он дамажит исправно, но предмет дергается при смене прочности.
а если дамажить вот так
gunStack.damageItem(1, entityplayer);
то прочность не меняется
В чем проблема метода damageItem?
Глядел в код меча, лука, там все именно так и делается, но прочность у меня не меняется...
 
7,099
324
1,510
В 1.12.2 этот метод, в 1.7.10 тоже было, но не помню название
предмет дергается
Java:
/**
* Determine if the player switching between these two item stacks
* @param oldStack The old stack that was equipped
* @param newStack The new stack
* @param slotChanged If the current equipped slot was changed,
*                    Vanilla does not play the animation if you switch between two
*                    slots that hold the exact same item.
* @return True to play the item change animation
*/
public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged)

{
    return ...
}
 
1,202
31
185
Наконец то нашел в тему в которой о великий фолкен отписался, что прочность можно сделать через нбт. Как?
В методе который у меня вызывается на лкм, уменьшать переменную? И потом на дисплее отображать проценты?
Или как. Кто с этим работал
 
1,202
31
185
Java:
@Override
public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) {
return true;
}
это вообще не то. Предмет не дергается когда прочность не меняется. Дергается когда меняется. Эт вообще не тот метод.
Вопрос как прочность с помощью нбт делать лол
 
1,202
31
185
Собственно, решил сам и сделал через нбт.
Создаете просто нбт интегер, и в вашем вызываемом методе изменяете его вот так gun.stackTagCompound.setInteger("Прочность", durab--);
Дюраб это сокращение от дюрабилити :)
gun.stackTagCompound.setInteger("Прочность", durab);
так создаете интегер. дюраб он автоматом берет из вашего вызываемого метода и меняется.
 
Последнее редактирование:
1,202
31
185
Однако, предметы с одинаковым айди, у них нбт изменяется странно...
Например есть 2 меча рубиновых. Я им добавил нбт интегер.
В онапдейте ставлю новый интегер так
itemstack.stackTagCompound.setInteger("Прочность", maxDurab);
maxDurab обьявил как инт = 1000
Но для двух предметов с одинаковым айди, нбт изменяется одинаково. В чем проблема?
 

Eifel

Модератор
1,624
79
609
Неплохо было бы посмотреть полный код. Может быть у тебя какая-то переменная оглашена в классе предмета и ты используешь ее в НБТ, тогда она будет одинаковой для всех таких предметов, ибо экземпляр предмета создается лишь раз
 

Eifel

Модератор
1,624
79
609
Брать значение из стака, типа int par = stack.getNBTTagCompound().getInteger("my_int"); stack.getNBTTagCompound().setInteger("my_int", --par);. Думаю суть ты уловил

Блин сори я случайно твои сообщения 2 удалил) Хотел обьидинить но что-то пошло не так ))
 
Последнее редактирование:
Сверху