Skocz do zawartości
  • 0

Tworzenie customowego craftingu


MrSpoks

Pytanie

Cześć, mam problem ze stworzeniem craftingu własnego przedmiotu.

Chcę, żeby do wytworzenia tego customowego przedmiotu, trzeba było włożyć 64x9 wełny. Poniższy zapis pozwala jednak tworzyć przedmiot, jeżeli wszędzie jest minimum 1 wełna (czyli, żeby craftować przedmiot, wystarczy 1x9 wełny).
Co zrobić, żeby crafting był możliwy dopiero po wrzuceniu 64x9 jakiejś rzeczy?

Tak wygląda aktualny kod:

 

Odnośnik do komentarza
Udostępnij na innych stronach

10 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Godzinę temu, MrSpoks napisał:

Cześć, mam problem ze stworzeniem craftingu własnego przedmiotu.

Chcę, żeby do wytworzenia tego customowego przedmiotu, trzeba było włożyć 64x9 wełny. Poniższy zapis pozwala jednak tworzyć przedmiot, jeżeli wszędzie jest minimum 1 wełna (czyli, żeby craftować przedmiot, wystarczy 1x9 wełny).
Co zrobić, żeby crafting był możliwy dopiero po wrzuceniu 64x9 jakiejś rzeczy?

Użyj eventu PrepareItemCraftEvent i sprawdzaj sloty w matrixie.

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Spróbowałem coś z tym pokminić, szukając jeszcze pomocy w jakichś angielskich poradnikach.
Żeby zobaczyć jak działa ten event, chciałem ustawić, że po włożeniu 1x9 desek daje item, jednak ten przedmiot się nawet nie pokazuje.

Co zmienić w tym kodzie, żeby chociaż działał ten crafting 1x9 desek (przy tym evencie)? 

(inb4 - dopiero się uczę)

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
3 godziny temu, MrSpoks napisał:

Spróbowałem coś z tym pokminić, szukając jeszcze pomocy w jakichś angielskich poradnikach.
Żeby zobaczyć jak działa ten event, chciałem ustawić, że po włożeniu 1x9 desek daje item, jednak ten przedmiot się nawet nie pokazuje.

1. Co ma oznaczać TNT.getItem()?

2. Rozdrobnij sobie ten masywny warunek na kilka linijek, aby było ci na niego łatwiej patrzeć.

if (inv.getMatrix()[0].getType() == Material.JUNGLE_PLANKS
	&& inv.getMatrix()[1].getType() == Material.JUNGLE_PLANKS
	&& inv.getMatrix()[2].getType() == Material.JUNGLE_PLANKS
	&& inv.getMatrix()[3].getType() == Material.JUNGLE_PLANKS
	// I tak dalej...

Taki mały przykład.

3. Usuń te nawiasy w warunku poza zewnętrznymi i tymi od metod, są one zbędne i czynią kod mniej czytelnym.

4. Material.WOOD jest przestarzały, musisz użyć konkretnego rodzaju drewna, przykładowo Material.JUNGLE_WOOD.

Jeżeli chcesz sprawdzać czy dany slot zawiera jakikolwiek rodzaj drewna, dodaj sobie Material każdego z nich do jakiejś listy i sprawdzaj czy ta lista zawiera typ (Material) danego slotu.

Możesz do kodu również dorzucić jakieś null checki, przy sprawdzaniu listą lepiej, aby były.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
21 godzin temu, Kormic napisał:

1. Co ma oznaczać TNT.getItem()?

2. Rozdrobnij sobie ten masywny warunek na kilka linijek, aby było ci na niego łatwiej patrzeć.


if (inv.getMatrix()[0].getType() == Material.JUNGLE_PLANKS
	&& inv.getMatrix()[1].getType() == Material.JUNGLE_PLANKS
	&& inv.getMatrix()[2].getType() == Material.JUNGLE_PLANKS
	&& inv.getMatrix()[3].getType() == Material.JUNGLE_PLANKS
	// I tak dalej...

Taki mały przykład.

3. Usuń te nawiasy w warunku poza zewnętrznymi i tymi od metod, są one zbędne i czynią kod mniej czytelnym.

4. Material.WOOD jest przestarzały, musisz użyć konkretnego rodzaju drewna, przykładowo Material.JUNGLE_WOOD.

Jeżeli chcesz sprawdzać czy dany slot zawiera jakikolwiek rodzaj drewna, dodaj sobie Material każdego z nich do jakiejś listy i sprawdzaj czy ta lista zawiera typ (Material) danego slotu.

Możesz do kodu również dorzucić jakieś null checki, przy sprawdzaniu listą lepiej, aby były.

Okay, zrobiłem chyba tak jak napisałeś. Jedyny problem jest taki, że na wersji 1.8 nie ma "Material.JUNGLE_WOOD" (Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!), więc jak na razie zostałem przy poprzednim. 

Niestety dalej nie działa tak, jak powinno (nie ma takiego craftingu).

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
21 minut temu, MrSpoks napisał:

Niestety dalej nie działa tak, jak powinno (nie ma takiego craftingu).

Czy poprawnie zarejestrowałeś event?

Dla pewności możesz na początku tego eventu dodać prosty, kontrolny broadcast, abyś wiedział, że dobrze zarejestrowałeś event.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
15 godzin temu, Kormic napisał:

Czy poprawnie zarejestrowałeś event?

Dla pewności możesz na początku tego eventu dodać prosty, kontrolny broadcast, abyś wiedział, że dobrze zarejestrowałeś event.

Faktycznie, teraz poprawnie zarejestrowałem event.

Mimo to, ten przedmiot nie ma craftingu (chyba, że z tych desek chciałbym craftować np. schody, czy półpłytki - wtedy dopiero tworzy ten item).

kDH4cpp.png ZxdA1HS.png

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
23 minuty temu, MrSpoks napisał:

Mimo to, ten przedmiot nie ma craftingu (chyba, że z tych desek chciałbym craftować np. schody, czy półpłytki - wtedy dopiero tworzy ten item).

Upewnij się, że wrzuciłeś poprawną wersję pluginu.

Dorzuć jeszcze jakiegoś broadcasta z wysyłaniem matrixa, zobacz co tam nie trybi.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
23 godziny temu, Kormic napisał:

Upewnij się, że wrzuciłeś poprawną wersję pluginu.

Dorzuć jeszcze jakiegoś broadcasta z wysyłaniem matrixa, zobacz co tam nie trybi.

Hm, wydaje mi się, że wersja pluginu jest poprawna.

Po dodaniu broadcasta, na czacie wyświetla się wiadomość tylko wtedy, gdy deski w craftingu układają się w jakąś recepturę (tak jak wyżej - np. schody, półpłytki itd).

 

edit.

 

Edytowane przez MrSpoks
dodany kod
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, MrSpoks napisał:

Hm, wydaje mi się, że wersja pluginu jest poprawna.

Po dodaniu broadcasta, na czacie wyświetla się wiadomość tylko wtedy, gdy deski w craftingu układają się w jakąś recepturę (tak jak wyżej - np. schody, półpłytki itd).

Hmm...

W takim wypadku najprawdopodobniej zostaje ci InventoryClickEvent.

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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