Blokada wybuchania danego bloku.

Dyskusja w 'Tworzenie pluginów' rozpoczęta przez użytkownika Err0r, Sty 10, 2017.

  1. Err0r
    Offline

    Err0r Bywalec

    Wiadomości:
    128
    Polubienia:
    1
    Punkty:
    68
    Witam, jak zablokować dany blok aby nie wybuchał przez tnt, creepera, wagoniki txt itp. itd? Chodzi mi jedynie o jajko smoka.
     
  2. ZahuseK
    Offline

    ZahuseK Użytkownik

    Wiadomości:
    1,900
    Polubienia:
    1,110
    Punkty:
    163
    Mistrzem spekulacji nie jestem, ale wydaje mi się, że może być od tego TEN event oraz wykorzystanie metody "blockList()" w sposób taki, że przeszukujesz listę w poszukiwaniu danego bloku i usuwasz go.
     
  3. DarkQueen
    Offline

    DarkQueen Nowicjusz

    Wiadomości:
    17
    Polubienia:
    2
    Punkty:
    8
    Kod (java):
    1. for(Block b : e.blockList()){
    2. if(b.getType() == Material.DRAGON_EGG){
    3. e.blockList().remove(b);
    4. }
    To może pomóc :D EntityExplodeEvent :p
     
  4. TiREX
    Offline

    TiREX Użytkownik

    Wiadomości:
    749
    Polubienia:
    89
    Punkty:
    88
    Z tego co mi się wydaje to wywali wtedy ConcurrentModificationException.

    Najlepiej jest to moim zdaniem zrobić Iteratorem.
     
  5. Err0r
    Offline

    Err0r Bywalec

    Wiadomości:
    128
    Polubienia:
    1
    Punkty:
    68
    Coś takiego znalazłem
    Kod (java):
    1. @EventHandler(priority = EventPriority.LOW)
    2.     public void onEntityExplode(EntityExplodeEvent event) {
    3.         List destroyed = event.blockList();
    4.         Iterator it = destroyed.iterator();
    5.         while (it.hasNext()) {
    6.             Block block = it.next();
    7.             if (blockIsProtectedSomehow(block, foobar))
    8.                 it.remove();
    9.         }
    10.     }
    jak sprawdzić czy ten blok to jajo smoka?