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

asdqwertypro

Активный участник
Пользователь
Баллы
76
как продетектить под игроком блок? и как заменить его на воздух. короче: мне надо чтобы если игрок на льду то он под ним ломался.
 
Получить блок под игроком можно через метод getBlock():
Код:
player.getLocation().subtract(0,1,0).getBlock();

Добавляйте слушатель на PlayerMoveEvent или таск в scheduler.
 
Java:
            if(s.getLocation().add(0, -1, 0).getBlock().getType() == Material.ICE){
                s.getLocation().add(0, -1, 0).getBlock().setType(Material.AIR);   
            }
 
Java:
            if(s.getLocation().add(0, -1, 0).getBlock().getType() == Material.ICE){
                s.getLocation().add(0, -1, 0).getBlock().setType(Material.AIR);  
            }
а как там параметр destroy прифигачить? ну чтоб блок не просто заменялся а уничтожал лёд со звуком, частицами ломания... ну destroy короч
 
Последнее редактирование:
Java:
    @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();
    }
не работает твой код... (может я чот не так с твоим сделал?) вот мой:
Java:
    @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);
        }
    }
 
не работает твой код... (может я чот не так с твоим сделал?) вот мой:
Java:
    @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);
        }
    }
Руки-крюки.
39381430839508.jpg

setType(Material.AIR); меняешь на breakNaturally();, хоть и он звука вроде не дает.
 
ну так? что делать то? кстати... PlayerMoveEvent должен отслкживать движущихся игроков? у меня он убирает лёд даж если тпхнулся
Java:
    @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();
    }
да блин... оба кода работают одинакого! мне надо чтобы когда блок под ногами исчезал он был как /setblock ~ ~-1 ~ air 0 destroy а не /setblock ~ ~-1 ~ air 0 replace
 
if(s.getLocation().add(0, -1, 0).getBlock().getType() == Material.ICE){
s.getLocation().add(0, -1, 0).getBlock().breakNaturally();
}
 
if(s.getLocation().add(0, -1, 0).getBlock().getType() == Material.ICE){
s.getLocation().add(0, -1, 0).getBlock().breakNaturally();
}
о боже мой... кажется я нашёл то, что не возможно сделать в eclipse... надо чтобы блоки ломались так как будто их игрок ломает! со звуком ломания, с частицами ломания...
По моему такое можно спрашивать только у тебя
ой... НЕУЖТО *Я* САМ ЗАКОДИЛ БЕЗ ГЛУПЫХ ВОПРОСОВ???? сорян ошибочка )))
 
какой наxуй cука эклипс.

Иди учи яву, учи что такое эклипс и т.д.


Функции предоставляются не эклипсом. Функции предоставляются bukkit'om
это я знаю, но блин... свой мозг имейте! вы подумайте что я имел ввиду я просто выразился как удобно
 
какой наxуй cука эклипс.

Иди учи яву, учи что такое эклипс и т.д.


Функции предоставляются не эклипсом. Функции предоставляются bukkit'om
кодить можно вообще в иппаном блокноте, он просто не удобнее, но максимально доступный функционал не увеличится\не уменьшится ни на йоту

180px-Hate.jpg


Что бы не писали

программист НЕ ИМЕЕТ ПРАВА выражаться КАК УДОБНО, он имеет право выражаться ТОЛЬКО КАК ПРАВИЛЬНО
ой да ладно уже блин... прям завелись с этого слова
какой наxуй cука эклипс.

Иди учи яву, учи что такое эклипс и т.д.


Функции предоставляются не эклипсом. Функции предоставляются bukkit'om
кодить можно вообще в иппаном блокноте, он просто не удобнее, но максимально доступный функционал не увеличится\не уменьшится ни на йоту

180px-Hate.jpg


Что бы не писали

программист НЕ ИМЕЕТ ПРАВА выражаться КАК УДОБНО, он имеет право выражаться ТОЛЬКО КАК ПРАВИЛЬНО
ну так как блин там уничтожить блок а не тупо заменить на воздух
 
Java:
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");
            }
 
какой наxуй cука эклипс.

Иди учи яву, учи что такое эклипс и т.д.


Функции предоставляются не эклипсом. Функции предоставляются bukkit'om
кодить можно вообще в иппаном блокноте, он просто не удобнее, но максимально доступный функционал не увеличится\не уменьшится ни на йоту

180px-Hate.jpg


Что бы не писали

программист НЕ ИМЕЕТ ПРАВА выражаться КАК УДОБНО, он имеет право выражаться ТОЛЬКО КАК ПРАВИЛЬНО
Мммм... Маты
 
Notepad++ и cmd.exe = самодельная IDE =)
Java:
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");
            }
Хмм...чувствуете этот запах?...Костылями пахнет сильно...Очень
 
Назад
Верх