NBT и натяжка лука

Версия Minecraft
1.7.10
API
Forge
27
2
Есть код
Java:
if(stack.getTagCompound().hasKey("Spell")) {
            if (stack.getTagCompound().getInteger("Spell") > 0) {
               stack.getTagCompound().setInteger("Spell", stack.getTagCompound().getInteger("Spell") - 1);
            }
        } else{
            stack.getTagCompound().setInteger("Spell", 0);
        }
Выполняется в onUpdate, собственно если включил особый режим лука и выстрелил идет откат (
Java:
stack.getTagCompound().setInteger("Spell", 250);
)
Но во время этого отката, лук невозможно натянуть вообще. Он сбрасывает натяжку. Я понимаю что скорее всего это связано с тем что каждый тик меняется NBT предмета и он обновляется, но возможно ли изменять NBT без обновлений и этих обрываний?
 
27
2
Код отката времени перезарядки
Java:
public void onTick(ItemStack stack) {
        if (!stack.hasTagCompound())
            stack.setTagCompound(new NBTTagCompound());
        if(stack.getTagCompound().hasKey("Spell")) {
            if (stack.getTagCompound().getInteger("Spell") > 0) {
               stack.getTagCompound().setInteger("Spell", stack.getTagCompound().getInteger("Spell") - 1);
            }
        } else{
            stack.getTagCompound().setInteger("Spell", 0);
        }
Код получение этого времени вызывается в onPlayerStoppedUsing
Java:
if (item.conditions[i]  && stack.getTagCompound().getBoolean("SpecialArrow")) {
            System.out.println("SpecialArrow");
            switch (item.typeModifier[i]) {
                case "effect":
                    entityarrow.getEntityData().setIntArray("PotionEffect", new int[]{item.potionId[i], item.potionDuration[i], item.potionAmplifier[i]});
                    stack.getTagCompound().setInteger("Spell", item.timeArrow * 20);
                    stack.getTagCompound().setBoolean("SpecialArrow", false);
                    break;
Лук работает, можно выстрелить но он не натягивается, как бы процесс натягивания обнуляется все время.
С мечами та же дичь, когда ПКМ жмешь должен быть блок, так вот блок тоже вечно сбрасывается
 
7,099
324
1,509
Используй переопределения onItemUseFirst, onUsingTick, onPlayerStoppedUsing, onItemUseFinish и getMaxItemUseDuration для создания предмета, для применения которого нужо зажимать пкм
 
7,099
324
1,509
Зачем ваще че-то писать в нбт? В ванили есть готовый механизм для таких механик. Надо просто правильно переопределить методы
 
Сверху