EVENT BUS и клавиши

Версия Minecraft
1.12.2
Всем привчанский. Пишу кое-что. Но появилась проблемка
Java:
@SubscribeEvent
    public void onPlayerTick(TickEvent.PlayerTickEvent event)
    {  
        boolean check = true;
        boolean test = true;
        for(ItemStack stack : event.player.inventory.armorInventory)
        {
            if(!(stack.getItem() instanceof TestArmor))
            {
                 check = false;
                 test = true;
                 break;
            }
        }

        if(check)
        {    
           
            if(KeybindsRegister.power2.isKeyDown()) {
                test = true;  
            }
           
            if(KeybindsRegister.power1.isKeyDown()) {
                test = false;
            }        
            if(test) {
                event.player.motionY = 0;
            } else {
                event.player.motionY = 0.4; 
            }
           
          } else {
            event.player.motionY = 0;
        }
Для теста игрока должно поднимать вверх(motionY = 0.4)
Но Игрока поднимает вверх когда зажата забинденная клавиша "power2". А мне надо что-бы игрока поднимало вверх если игрок нажал кнопку. А останавливался когда нажималась другая кнопка. Подскажите что сделать
 
Последнее редактирование:
1,470
19
189
как вариант создать какой нибудь флаг типа isFlying, при нажатии power2 ставить тру, при нажатии второй в фолс. и проверять этот же флаг. только сделай его в классе, а не в методе. иначе будет сбрасывать каждый тик
 
как вариант создать какой нибудь флаг типа isFlying, при нажатии power2 ставить тру, при нажатии второй в фолс. и проверять этот же флаг. только сделай его в классе, а не в методе. иначе будет сбрасывать каждый тик
Ты имеешь ввиду это?

Java:
public class Test {

    public static boolean test;
    {
        if(KeybindsRegister.power2.isKeyDown()) {
            test = true;
        }
  
        if(KeybindsRegister.power1.isKeyDown()) {
            test = false;
        }
    }
    
    @SubscribeEvent
    public void onPlayerTick(TickEvent.PlayerTickEvent event)
    {       
            if(test = true) {
                event.player.motionY = 0;
            }
            if(test = false) {
                event.player.motionY = 0.4;
            }

        }
    }
 
3,005
192
592
Чел, ты сам то понимаешь, что пишешь?
Скорее всего нет, потому что "Я учу язык, когда пишу моды"...
Это так не работает. Точнее работает, но не в твоем случае. :(
 
Сверху