PlayerInteractEvent.RightClickEmpty вызывается дважды

Версия Minecraft
1.12.2
1,417
44
594
Добрый день, вопрос в заголовке, также хочу сразу сказать, что вызывается дважды ТОЛЬКО на клиенте, с сервера от этого эвента ничего не приходит.
код:
Java:
@Mod.EventBusSubscriber(modid = Constants.MODID)
public class ClientEventHandler {
    @SubscribeEvent
    public static void onRightClickEmpty(PlayerInteractEvent.RightClickEmpty event) {
        final World world = event.getEntityPlayer().world;
        if(!world.isRemote) {
            System.out.print(" use " + event.getWorld().isRemote + "\n");
        }
// Ничего не приходит (Т.к. ловлю сервер)
        
        if(world.isRemote) {
            System.out.print(" use " + event.getWorld().isRemote + "\n");
        }
// Приходит дважды
    }
}

Java:
        System.err.print(" use " + event.getWorld().isRemote + "\n");

Код:
use true
use true
 
154
17
97
То, что ивент не вызывается на сервере можно прочитать из описания к нему

Java:
    /**
     * This event is fired on the client side when the player right clicks empty space with an empty hand.
     * The server is not aware of when the client right clicks empty space with an empty hand, you will need to tell the server yourself.
     * This event cannot be canceled.
     */
    public static class RightClickEmpty extends PlayerInteractEvent
    {
        public RightClickEmpty(EntityPlayer player, EnumHand hand)
        {
            super(player, hand, new BlockPos(player), null);
        }
    }
А насчет того, что регается дважды...
Может ты случайно повторно зарегал его в шину событий? (хотя без понятия почему бы оно так работало, ведь метод статик)
 
1,417
44
594
Похоже на баг. Посмотри, где вызывается метод. В идее можно через двойное нажатие Ctrl + Alt + F7, вроде.
Сейчас попробую

То, что ивент не вызывается на сервере можно прочитать из описания к нему
Ну это очевидно, просто я к тому, что дважды и не на разных сайдах.


А насчет того, что регается дважды...
Может ты случайно повторно зарегал его в шину событий? (хотя без понятия почему бы оно так работало, ведь метод статик)
Регаю только аннотацией к классу, для этого название класса и аннотацию указал в коде.
 
5,018
47
783
Еще есть фазы клика. Не помню, в райтклике или лефт клике, но советую еще делать проверку на то какая e.getPhase
 
1,417
44
594
Путем анализа кода было выявлено, что форж запускает этот ивент для каждой из двух рук.
Чтобы отлавливать нужный, чекай event.getHand()
Вообще забыл о второй руке.
Спасибо, понял
 
Сверху