1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Ошибка при использование PlayerInteractEvent

Тема в разделе "Разработка плагинов для новичков", создана пользователем _Ruleto4ka_, 24 ноя 2020.

Статус темы:
Закрыта.
  1. deadanykey

    deadanykey Активный участник Пользователь

    Баллы:
    96
    И?
    Какого ответа Вы ждёте?
     
  2. Автор темы
    _Ruleto4ka_

    _Ruleto4ka_ Активный участник Пользователь

    Баллы:
    76
    Я думал что, написал текст и скинул код, а вот вижу что скинул только код, так вот, при использованье этого кода при ломании блока он не ломается
     
  3. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    В чем проблема в начале проверить действие в PlayerInteractEvent и все, лол. И неужели так тяжело скинуть ВЕСЬ код класса, чтобы мы могли лучше понять в чем проблема?
     
  4. Автор темы
    _Ruleto4ka_

    _Ruleto4ka_ Активный участник Пользователь

    Баллы:
    76
    https://pastebin.com/p5zWs2BL
     
  5. _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    Иди учи яву https://pastebin.com/inW1UyFX
    Нельзя будет ломать бедрок
     
  6. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ну что накодил, то и получил.
    Фикс.
    Код:
    @EventHandler
    public void onBreak(BlockBreakEvent event) {
        if (!event.getBlock().getType().equals(Material.BARREL)) {
            event.setCancelled(true);
        }
    }
     
  7. Автор темы
    _Ruleto4ka_

    _Ruleto4ka_ Активный участник Пользователь

    Баллы:
    76
    what? Мне нужно чтобы блок ломался, а не наоборот.
     
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Так они и так же ломаются, когда не отменен ивент.
    setCancelled(false) нельзя делать, сломаются другие плагины на отмену ивента.
     
  9. Автор темы
    _Ruleto4ka_

    _Ruleto4ka_ Активный участник Пользователь

    Баллы:
    76
    Ну у меня от этого кода:

    Код:
        @EventHandler
        public void onPlayerInteract(PlayerInteractEvent event) {
            if (event.getClickedBlock() == null) {
                return;
            } else {
                if (event.getClickedBlock().getState() instanceof ShulkerBox
                        || event.getClickedBlock().getState() instanceof Barrel) {
                    event.setCancelled(true);
                } else {
                    return;
                }
            }
        }
    Не ломается блоки, вырубаю плагин и все ломается
     
  10. _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
  11. Автор темы
    _Ruleto4ka_

    _Ruleto4ka_ Активный участник Пользователь

    Баллы:
    76
  12. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    У тебя конкретно этот шалкеры и бочка(или что это) не ломаются?
     
  13. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    У BlockBreakEvent нет такого метода hasBlock.
     
  14. _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    Ну, думаю додумается сделать проверку на null.
     
  15. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Зачем? Он вызывается, когда ломают блок. В этом случае он не может быть null
     
  16. _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    а, только дошло что там BlockBreakEvent
     
  17. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Ага
     
  18. Автор темы
    _Ruleto4ka_

    _Ruleto4ka_ Активный участник Пользователь

    Баллы:
    76
    Да
     
  19. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Убери BlockBreakEvent и вместо метода onPlayerInteract вставь этот
    PHP:
        @EventHandler
        void onInteract
    (PlayerInteractEvent e) {
            if (
    e.getAction() != Action.RIGHT_CLICK_BLOCK)
                return;
            if (!
    e.hasBlock())
                return;
            if (
    e.getClickedBlock().getState() instanceof ShulkerBox || e.getClickedBlock().getState() instanceof Barrel)
                
    e.setCancelled(true);
        }
     
  20. _MRDen3000YT_

    _MRDen3000YT_ Активный участник Пользователь

    Баллы:
    76
    e.hasBlock() не нужен, т.к. клик идет и так по блоку.
     
Статус темы:
Закрыта.

Поделиться этой страницей