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

Помогите детект блока

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

  1. Автор темы
    asdqwertypro

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

    Баллы:
    76
    как продетектить под игроком блок? и как заменить его на воздух. короче: мне надо чтобы если игрок на льду то он под ним ломался.
     
  2. MrOnlineCoder

    MrOnlineCoder Новичок

    Баллы:
    6
    Получить блок под игроком можно через метод getBlock():
    Код:
    player.getLocation().subtract(0,1,0).getBlock();
    Добавляйте слушатель на PlayerMoveEvent или таск в scheduler.
     
  3. TheZefirrkka

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

    Баллы:
    76
    Код:
                if(s.getLocation().add(0, -1, 0).getBlock().getType() == Material.ICE){
                    s.getLocation().add(0, -1, 0).getBlock().setType(Material.AIR);   
                }
     
  4. Автор темы
    asdqwertypro

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

    Баллы:
    76
    а как там параметр destroy прифигачить? ну чтоб блок не просто заменялся а уничтожал лёд со звуком, частицами ломания... ну destroy короч
     
  5. AtomicInteger

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

    Баллы:
    76
    breakNaturally();
     
  6. Автор темы
    asdqwertypro

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

    Баллы:
    76
    извини за глупый вопрос, но... куда это приписывать? :D
    НЕУЖТО Я САМ ЗАКОДИЛ БЕЗ ГЛУПЫХ ВОПРОСОВ????
     
    Последнее редактирование: 6 янв 2017
  7. AtomicInteger

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

    Баллы:
    76
    Это метод класса Block.
     
  8. Автор темы
    asdqwertypro

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

    Баллы:
    76
    не понимаю... :3
     
  9. AtomicInteger

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

    Баллы:
    76
    Код:
        @EventHandler
        private void onPlayerMove(PlayerMoveEvent event) {
            if(event.getPlayer().getLocation().getBlock().getRelative(BlockFace.DOWN).getType() == Material.ICE)
                event.getPlayer().getLocation().getBlock().getRelative(BlockFace.DOWN).breakNaturally();
        }
     
  10. Автор темы
    asdqwertypro

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

    Баллы:
    76
    не работает твой код... (может я чот не так с твоим сделал?) вот мой:
    Код:
        @EventHandler
        public void onPlayerMovie (PlayerMoveEvent e){
            Player s = e.getPlayer();
            if(s.getLocation().add(0, -1, 0).getBlock().getType() == Material.ICE){
                s.getLocation().add(0, -1, 0).getBlock().setType(Material.AIR);
            }
        }
     
  11. AtomicInteger

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

    Баллы:
    76
    Руки-крюки.
    [​IMG]
    setType(Material.AIR); меняешь на breakNaturally();, хоть и он звука вроде не дает.
     
  12. Автор темы
    asdqwertypro

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

    Баллы:
    76
    ну так? что делать то? кстати... PlayerMoveEvent должен отслкживать движущихся игроков? у меня он убирает лёд даж если тпхнулся
    да блин... оба кода работают одинакого! мне надо чтобы когда блок под ногами исчезал он был как /setblock ~ ~-1 ~ air 0 destroy а не /setblock ~ ~-1 ~ air 0 replace
     
  13. TheZefirrkka

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

    Баллы:
    76
    if(s.getLocation().add(0, -1, 0).getBlock().getType() == Material.ICE){
    s.getLocation().add(0, -1, 0).getBlock().breakNaturally();
    }
     
  14. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    По моему такое можно спрашивать только у тебя
     
  15. Автор темы
    asdqwertypro

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

    Баллы:
    76
    о боже мой... кажется я нашёл то, что не возможно сделать в eclipse... надо чтобы блоки ломались так как будто их игрок ломает! со звуком ломания, с частицами ломания...
    ой... НЕУЖТО *Я* САМ ЗАКОДИЛ БЕЗ ГЛУПЫХ ВОПРОСОВ???? сорян ошибочка )))
     
  16. Автор темы
    asdqwertypro

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

    Баллы:
    76
    это я знаю, но блин... свой мозг имейте! вы подумайте что я имел ввиду я просто выразился как удобно
     
  17. Автор темы
    asdqwertypro

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

    Баллы:
    76
    ой да ладно уже блин... прям завелись с этого слова
    ну так как блин там уничтожить блок а не тупо заменить на воздух
     
  18. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Код:
    if(p.isOnGround()&&p.getLocation().add(0, -1, 0).getBlock().getType() == Material.ICE){
                Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "setblock "+Integer.toString((int) p.getLocation().getX())+" "+Integer.toString((int) (p.getLocation().getY()-1))+" "+Integer.toString((int) p.getLocation().getZ()) +" air 0 destroy");
                }
     
  19. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Мммм... Маты
     
  20. TheZefirrkka

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

    Баллы:
    76
    Notepad++ и cmd.exe = самодельная IDE =)
    Хмм...чувствуете этот запах?...Костылями пахнет сильно...Очень
     

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