Скорость при использовании предмета

Версия Minecraft
1.12.2

ReyMagos

Тег-бомбастер
412
7
121
У меня есть предмет в котором есть метод onItemRightClick, который возвращает SUCCESS экшн. Чтобы предмет не дёргался (подсмотрел у ItemBow) я прописал player.setActiveHand(hand). Но при этом игрок замедляется, как при использовании щита. Я попробовал это изменить с помощью player.capabilites.setPlayerWalkSpeed(1.5F) (1.5F вроде как стандартная скорость игрока). Но теперь появилось дребезжание экрана от смены скорости. Да и сама скорость по какой-то причине стала огромной. Можете помочь решить эту проблему.
 
Решение
Возможно, это то, что ты ищешь. КЛИК. Предполагаю, строчка которая тебя испугала, только добавляет значение, а затем в апдейте игрока применяет к нему эффекты. В твоём случае, скорее всего придётся сделать свой атрибут, и PlayerTickEvent добавить что-то... В любом случае, я с такими вещами никогда не работал, посмотри ссылку выше и решай подходит тебе она или нет.

ReyMagos

Тег-бомбастер
412
7
121
А что если посмотреть в сам player.setActiveHand(hand)
Неа, там корни уходят куда-то вглубь
Java:
public void setActiveHand(EnumHand hand)
    {
        ItemStack itemstack = this.getHeldItem(hand);

        if (!itemstack.isEmpty() && !this.isHandActive())
        {
            int duration = net.minecraftforge.event.ForgeEventFactory.onItemUseStart(this, itemstack, itemstack.getMaxItemUseDuration());
            if (duration <= 0) return;
            this.activeItemStack = itemstack;
            this.activeItemStackUseCount = duration;

            if (!this.world.isRemote)
            {
                int i = 1;

                if (hand == EnumHand.OFF_HAND)
                {
                    i |= 2;
                }

                this.dataManager.set(HAND_STATES, Byte.valueOf((byte)i));
            }
        }
    }
 

ReyMagos

Тег-бомбастер
412
7
121
Вопрос, кстати, не решён и по сей день. Я смотрел, как изменить положение руки без изменения скорости в других модах и в самом minecraft. В первых такой реализации я не нашёл, а втором такого просто не существует (все предметы с зажатием правой кнопки используют замедление).
 
917
22
332
Возможно, это то, что ты ищешь. КЛИК. Предполагаю, строчка которая тебя испугала, только добавляет значение, а затем в апдейте игрока применяет к нему эффекты. В твоём случае, скорее всего придётся сделать свой атрибут, и PlayerTickEvent добавить что-то... В любом случае, я с такими вещами никогда не работал, посмотри ссылку выше и решай подходит тебе она или нет.
 
Сверху