Minecraft Forge Отменить событие / Не уведомлять сервер - PullRequest
1 голос
/ 30 января 2020

У меня есть событие EntityInteract

@SubscribeEvent(priority = EventPriority.HIGHEST)
public static void EntityInteractEvent(PlayerInteractEvent.EntityInteract event) {
    if (event.getPlayer() != null && event.getWorld() != null && event.getTarget() instanceof AbstractHorseEntity) {
        PlayerEntity player = event.getPlayer();
        AbstractHorseEntity horseEntity = (AbstractHorseEntity) event.getTarget();
        if (player.isCrouching()) {
            Item main = player.getHeldItemMainhand().getItem();
            for (Item a : allowed) {
                if (main.equals(a)) {
                    String[] result = new HorseStats().getHorseStats(horseEntity);
                    for (String s : result) {
                        if (s != null && !s.isEmpty())
                            player.sendMessage(new TranslationTextComponent(s));
                    }
                    event.setCancellationResult(ActionResultType.SUCCESS);
                    event.setResult(Event.Result.DENY);
                    event.setCanceled(true);

                    return;
                }
            }

        }
    }
}

Оно не отменяется, когда я нажимаю на лошадь с разрешенным предметом. Таким образом Сервер все еще получает щелчок, и инвентарь Лошади открыт.

Как я могу предотвратить это?

Событие корректно инициируется и обрабатывается, сообщения ChatMessages печатаются на клиенте.

...