Skocz do zawartości
  • 0
Dawid_PL

Problem z PlayerInteractEvent

Pytanie

Użytkownik

Witam Mam cały czas problem z tym kodem:

a dokladnie linijska 7, 12, 17

o to bład:

z góry dzięki za pomoc

 

Edytowane przez Dawid_PL
Dodanie codu błedu

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

Użytkownik
  • 0
W dniu 30.07.2018 o 12:59, SeRyJnY napisał:

 

po pierwsze to nie dawaj gotowcow bo tak to nikt sie niczego nie nauczy, a po drugie masz tak samo zle kod.

 

Zacznijmy od tego, że item zdefiniowany w zmiennej 's' może być nullem, np. jak gracz kliknie ppm 'niczym' - lub będzie to powietrze - a powietrze nie zawiera itemmety (z tego co wiem) Każdy item zawiera itemmete oprócz powietrza, sprawdzaj czy item w zmiennej jest nullem, jak tak to returnuj event (lub chyba w 1.12+ jest cos takiego jak event.hasItem()), sprawdzaj czy item zawiera itemmeta, jezeli nie to returnuj (s.hasItemMeta()), no i oczywiscie tez sprawdzaj czy ma nazwe, (s.getItemMeta().hasDisplayName()), do tego jak gracz kliknie w powietrze to nic sie nie dzieje i uzna to za jakiś błąd, sprawdzaj dodatkowo akcje RIGHT_CLICK_AIR..

kolejne: tworzysz itemy podczas eventu, bez zadnych warunkow itd. przed tworzeniem, zaloze sie ze wystarczy z kilkunastu botów poklikać troche ppm i pewnie troszke lagi będą =/, zdefiniuj to sobie najlepiej w jakims polu w tej klasie

kolejne: 

            if (s.getItemMeta().getDisplayName().equals("§dVoucher §8(§fVIP§8)"))

nie uzywaj paragrafów, do tego po co takie porównywanie, wystarczy użyjesz metody ItemStack#isSimilar

do tego nie wiem po co to castujesz:

            Bukkit.dispatchCommand((CommandSender)Bukkit.getConsoleSender(), "pex user " + p.getName() + " group set VIP");

to juz i tak jest commandsender, no i ja oczywiscie zamiast tych ifów to bym zrobił jakiś interfejs voucherhandler, i tam mial po prostu jakąś metodę a w klasie voucherviphandler itd bym po prostu implementowal tą metodę i wrzucil to co jest w ifach, no ale to juz jak kto woli

 

no i na koniec:

public void Voucher(PlayerInteractEvent e) {

brak adnotacji EventHandler nad metodą, do tego metody nazywamy z małej litery, już nie mówiąc o tym, że ta nazwa nie ma sensu

(w sumie to event sie wykonuje wiec adnotacja pewnie jest, ale jej nie pokazałeś)

Edytowane przez nicku1
Nicku

Zmieniam cytaty na kolorowy code :)

Notatka dodana przez Nicku

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Ten temat jest nieaktywny od dłuższego czasu. Nie odkopuj go bez potrzeby.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Losowy awatar
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Maksymalnie dozwolone są tylko 75 emotikony.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.


  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×