Проверка предмета в руке 1.16.5

Версия Minecraft
1.16.5
API
Forge
Не понимаю :
1) Как правильно реализовать метод для полета
2) Почему equals не делает проверки предмета в руке
P.S. Это буквально весь код,пжлст не бейте
 

Вложения

  • Безымянный.png
    Безымянный.png
    42.9 KB · Просмотры: 24
346
25
94
Как правильно реализовать метод для полета
Если я не ошибаюсь, то ты включил полёт игроку, а не возможность летать. Поищи переменную что-то по типу allowFlying
Почему equals не делает проверки предмета в руке
Предметы - синглтон, сравнивай объекты по ссылкам.
 
ты написал код который если я не ошибаюсь вызывается по ПКМ на сущности, и он будет давать атрибуты цели
код должен выглядеть так
Code:
    @Override
    public InteractionResultHolder<ItemStack> use(Level world, Player entity, InteractionHand hand) {
        InteractionResultHolder<ItemStack> ar = super.use(world, entity, hand);
        ItemStack itemstack = ar.getObject();
       

        if (entity instanceof Player _player && !_player.level.isClientSide && hand=InteractionHand.MAIN_HAND) {
            _player.getAbilities().flying = (true);
            _player.onUpdateAbilities();
        }

        return ar;
    }

проверка на InteractionHand.MAIN_HAND и !_player.level.isClientSide обязательна, иначе код будет выполняться 4 раза
1раз для клиента и правой руки
2раз для клиента и левой руки
3 и 4 раз тоже самое для сервера

проверка итем стака не нужна в данном случае
если ты хочешь сделать тоже самое когда игрок держит предмет в руке, сделай это в тиковом событии игрока
в тиковом событии предмета код будет подобен этому

Code2:
    @Override
    public void inventoryTick(ItemStack itemstack, Level world, Entity entity, int slot, boolean selected) {
        super.inventoryTick(itemstack, world, entity, slot, selected);
        if (selected){
            //код
        }
           
    }

я могу допустить ошибки в коде, под рукой сейчас нет IDE для проверки
 
Последнее редактирование:
Сверху