Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

PlayerDropItemEvent - Wyrzucanie itemów


Gość Xevis_

Rekomendowane odpowiedzi

Opublikowano

Witam, mam problem z eventem "PlayerDropItemEvent". Próbuję zrobić by danych itemów nie można było wyrzucać z ekwipunku lecz niestety nie udaje mi się ;c

Oto kod:

 

Cytat

public class PlayerDropItemListener implements Listener
{
    @EventHandler
    public void onPlayerDropItem(final PlayerDropItemEvent e) {
        final Player p = e.getPlayer();
        final ItemStack i = p.getItemInHand();
        if (!p.hasPermission("mc4play.lobby.drop")) {
            if (i.getType().equals((Object)Material.COMPASS) && i.isSimilar(ItemManager.getArena()) || i.getType().equals((Object)Material.DIAMOND_SWORD) && i.isSimilar(ItemManager.getArenaXvsX())) {
                e.setCancelled(true);
            }
        }
    }
}

 

Można byłoby wytłumaczyć lub napisać prawidłowy kod? Z góry dziękuję :)

Opublikowano

1.Sprawdzaj czy przedmiot w ręce nie jest nullem: if(p.getItemInHand() == null) return;

2.Po każdym warunku daj debuga(Obstawiam drugi warunek)

3.Masz permisje ?

4.Zarejestrowałeś event ?

5.Po uja castujesz Material do Object ?

 

Jeżeli to plugin na lobby to po prostu sprawdzaj czy ItemInHand == COMPASS

Opublikowano
2 godziny temu, ZiomeczekTVGC napisał:

1.Sprawdzaj czy przedmiot w ręce nie jest nullem: if(p.getItemInHand() == null) return;

2.Po każdym warunku daj debuga(Obstawiam drugi warunek)

3.Masz permisje ?

4.Zarejestrowałeś event ?

5.Po uja castujesz Material do Object ?

 

Jeżeli to plugin na lobby to po prostu sprawdzaj czy ItemInHand == COMPASS

To teraz zabłysłeś po chuju kurwa. XDD

@Topic

Dlaczego sprawdzasz, co trzyma w ręce?
Przecież równie dobrze, może użyć Q + klik na item czy jakoś tak ta kombinacja klawiszy szła.

e.getItemDrop().getItemStack().getType()

 

Bardziej wytłumaczone i opisane, nie wiem co to za metody, więc ich nie wrzucałem

@EventHandler
    public void onPlayerDropItemEvent(PlayerDropItemEvent e) {
        Player player = e.getPlayer();
        ItemStack itemStack = e.getItemDrop().getItemStack();

        if (player.hasPermission("perm.here")) { //Jeśli gracz posiada daną permisję, to zatrzyma kod tutaj
            return;
        }

        if (!itemStack.getType().equals(Material.COMPASS)) { //Jeśli dany przedmiot nie jest kompasem, to zatrzyma kod tutaj
            return;
        }
        
        e.setCancelled(true);

    }

 

784091427630431250239.png

Regulamin sygnatur

Opublikowano

Polecam obadać czy ten event działa też jak się item wyrzuci za inventory.

Zaznaczam, że do enumów nie używamy equals.

Dodaj mój nick do posta jeśli potrzebujesz pomocy | Piszę pluginy na zlecenie | Pomagam z Linuxem

newlogo.png

Opublikowano

@Oldis chodzi po prostu o to by nazwanego przedmiotu np "&6MPCFORUM" nie dało się wyrzucić.

Niestety nie działa ;c

Poradziłem już sobie. Dzięki za pomoc ludzie ;)

Opublikowano

1. Tak jak napisał Oldis, nie sprawdzaj co trzyma w rece bo to bezsensowne :/

2. Zgaduje ,że to kod z dekomplikatora, po uj to object?

3. Masz tu przykład ode mnie:

	@EventHandler
	public void onDrop(PlayerDropItemEvent e){
		if (e.getItemDrop().getItemStack().getType() == Material.ENDER_CHEST && e.getItemDrop().getItemStack() != null){
			e.setCancelled(true);
		}
	}

 

 

Aktualnie interesuję się javą, powoli ogarniam java swing i awt, czasem bawię się HTML.

Opublikowano
1 godzinę temu, ˈyøøniks napisał:

1. Tak jak napisał Oldis, nie sprawdzaj co trzyma w rece bo to bezsensowne :/

2. Zgaduje ,że to kod z dekomplikatora, po uj to object?

3. Masz tu przykład ode mnie:


	@EventHandler
	public void onDrop(PlayerDropItemEvent e){
		if (e.getItemDrop().getItemStack().getType() == Material.ENDER_CHEST && e.getItemDrop().getItemStack() != null){
			e.setCancelled(true);
		}
	}

 

Kolego spałeś na lekcjach logiki? Przypomnij sobie kolejność i sposób wykonywania takich wyrażeń proszę.

Dodaj mój nick do posta jeśli potrzebujesz pomocy | Piszę pluginy na zlecenie | Pomagam z Linuxem

newlogo.png

  • Biter. zablokował(a) ten temat

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...