Skocz do zawartości
  • 0

Dokładna ilość dropu z bloku


knugi
 Udostępnij

Pytanie

Siemaneczko, chciałbym tylko się zapytać pewną rzecz.

Mam sobie event BlockBreakEvent - świetnie, blokuje na nim exp i daje go dla gracza i tak samo chcę zrobić z dropem.

Tylko jest jedno ale :P gdy dam:

e.getBlock().getDrops(e.getPlayer().getInventory().getItemInMainHand())

zawsze wyświetla, że zdobyłem np 1 coal (a z fortunką wykopałem np 4 albo 2)

I teraz tak myślę i znalazłem event ItemSpawnEvent - i normalnie on pokazuje, daną ilość. Tylko nie wiem jak to ze sobą połączyć.

Widzę odnośnik do lokalizacji (bloku i itemu który się zespawnował [wyleciał z bloku]) - jest różnica ~2m no to wiem jaki warunek dać. Ale jak to połączyć w jedność? :P

By w evencie BlockBreakEvent uzyskać te itemy które się zespawnowały w Evencie ItemSpawnEvent.

Odnośnik do komentarza
Udostępnij na innych stronach

3 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

niestety nie idzie tego normalnie zrobić, może podaj jaki masz dokładnie cel, jaki plugin robisz, to ci może dam trochę rad jak to najlepiej osiągnąć, ale na pewno albo będzie to niewygodne, albo wymagało użycia NMS itd. Już różne takie zabawki musiałem robić, to pewnie skojarzę co wtedy wybrałem, ale potrzebuje lepszego opisu co tworzysz.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Każdy gracz może mieć fortunę MAX 100. No wiadomo, jak wykopie się takim kilofem rudę redstone to dużo tego leci. A im więcej jest entity na mapie = większe lagi.

Zrobiłem Obiekt, dla gracza, który przechowywuje drop itemów i później je umieszcza do GUI (1 rodzaj itemstacku = 1 slot) - to ogarnę.

No i chciałem, aby podczas wykopywania danej rudy zablokować drop itemów czyli event.setDropItems(false) i dodawać takie itemy do tego schowka. (Ponieważ zaraz nasz ekwipunek może się przepełnić)

I teraz myśl. Jak zablokuję drop itemów to listener ItemSpawnEvent raczej nie zadziała :/

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Nooo, to masz spory problem :D Masz 3 opcje, wszystkie niezbyt dobre, ale zacznijmy od tego czy na pewno tego potrzebujesz? teoretycznie spigot powinien stackować itemu.

1. Symulujesz drop samemu, anulujesz BlockBreakEvent i sam symulujesz drop, z tym że nie dość ze to masa kodu by symulować wszystke możliwe dropy z enchantami, to jeszcze psujesz kompatybilność z innymi pluginami które mogą nasłuchiwać tego eventu, bo nie będą się spodziewały zniszczenia bloku pomimo anulowania eventu.

2. Musisz pogrzebać w NMS i znaleźć tam funkcje odpowiedzialną za generowanie dropu i wywołać ją ręcznie - tutaj niestety nie jestem pewien jak, dokładnie czegoś takiego nie robiłem, ja się zadowalałem symolwaniem zniszczenia bloku, ale to co innego.

3. I chyba najprościej, możesz spróbować stackować itemy blisko siebie w ItemSpawnEvent z dodatkowym wsparciem na stackowanie itemów powyżej 64, ale wydaje mi się że spigot już to powinien robić za ciebie, ogarnij config spigota, moze coś znajdziesz by to lepiej skonfigurować.

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

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

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