Skocz do zawartości
  • 0

System autocraftowania


Pytanie

Ostatnio zajmuje się tworzeniem pluginu na drop ze stone'a i już cały plugin poza jednym dodatkiem nie mam zrobiony, a mianowicie autocraftowaniem. Jeżeli mógłby mi ktoś spróbować wytłumaczyć jak zrobić żeby za każdym razem ( nie tylko podczas eventu lub wywołania przez komendę ) jak gracz będzie mieć 9 diamentów np. to automatycznie je zamienia na blok diamentu ? Próbowałem  wcześniej zrobić taki system poprzez kilka eventów takich jak PlayerPickupItemEvent, PlayerMoveEvent, BlockBreakEvent , ze w przypadku gdzie gracz się ruszy to szuka czy system czy ma 9 diamentów i gdy je ma to zamienia, ale wydaje mi się ze takie coś jest dosyć słabym rozwiązaniem lecz działającym, wiec prosiłbym o pomoc.

 

Odnośnik do komentarza
https://skript.pl/temat/52673-system-autocraftowania/
Udostępnij na innych stronach

7 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Nie rób tego przy PlayerPickupItemEvent, bo to się odświeża co 1ms, a wystarczy maksymalnie co pół sekundy lub max sekundę, a dodatkowo możesz to wsadzić w asynchronicznego taska dzięki czemu nie będziesz zamulał głównego wątku. Zrobiłem dla Ciebie prosty plugin, który co 10 sekund zamienia 9 diamentów w jeden blok diamentowy. Na podstawie tego próbuj kminić sobie dalej, a jak będziesz mieć problemy to odezwij sie na PW lub dc: paweU#0444.

 

Task:

W klasie głównej w onEnable daj:

Jeśli chodzi o klasę ItemUtil to nie ja jestem jej autorem, miałem to na dysku i chyba jest to z jakiegoś wycieku 😜

Odnośnik do komentarza
https://skript.pl/temat/52673-system-autocraftowania/#findComment-321824
Udostępnij na innych stronach

  • 0
12 minut temu, paweU napisał:

Nie rób tego przy PlayerPickupItemEvent, bo to się odświeża co 1ms

Zdajesz sobie sprawę z tego, że nawet jeśli nie ma żadnych listenerów to silnik i tak wywołuje event i on i tak działa i zabiera zasoby + ten event wywołuje się tylko podczas podnoszenia, więc kod nie wywoływałby się niepotrzebnie co 10 sekund nawet przy pustym serwerze, tylko wtedy kiedy faktycznie takie sprawdzenie byłoby konieczne.

Odnośnik do komentarza
https://skript.pl/temat/52673-system-autocraftowania/#findComment-321825
Udostępnij na innych stronach

  • 0
W dniu 19.05.2022 o 18:09, LeviBoyPL napisał:

Zdajesz sobie sprawę z tego, że nawet jeśli nie ma żadnych listenerów to silnik i tak wywołuje event i on i tak działa i zabiera zasoby + ten event wywołuje się tylko podczas podnoszenia, więc kod nie wywoływałby się niepotrzebnie co 10 sekund nawet przy pustym serwerze, tylko wtedy kiedy faktycznie takie sprawdzenie byłoby konieczne.

Uważasz, że wykonywanie funkcji tego typu przy każdej próbie podnoszenia itemu jest lepszym rozwiązaniem niż zrobienie tego w asynchronicznym tasku?

Odnośnik do komentarza
https://skript.pl/temat/52673-system-autocraftowania/#findComment-321856
Udostępnij na innych stronach

  • 0
3 godziny temu, paweU napisał:

Uważasz, że wykonywanie funkcji tego typu przy każdej próbie podnoszenia itemu jest lepszym rozwiązaniem niż zrobienie tego w asynchronicznym tasku?

Jak już chcesz to robić w tasku, to nie w asynchronicznym :)

@edit

i zgadzam się z @LeviBoyPL + dla optymalizacji ustawić priority na highest & ignore na true 

Edytowane przez Queito
Odnośnik do komentarza
https://skript.pl/temat/52673-system-autocraftowania/#findComment-321865
Udostępnij na innych stronach

  • 0
W dniu 21.05.2022 o 11:32, paweU napisał:

Uważasz, że wykonywanie funkcji tego typu przy każdej próbie podnoszenia itemu jest lepszym rozwiązaniem niż zrobienie tego w asynchronicznym tasku?

Jest dużo lepszym rozwiązaniem i wygodniejszym dla samych użytkowników, jako że check będzie leciał podczas podnoszenia przedmiotu, czyli tak jak powinien działać

Odnośnik do komentarza
https://skript.pl/temat/52673-system-autocraftowania/#findComment-321920
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   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.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...