Witam! Po krótkiej przerwie powracamy do naszego poradnika. Ostatnio pewna osoba zapytała się o drzewa. Oto one. Zajmiemy się dzisiaj generatorem drzew! Tak więc, zaczynamy!

Pamiętacie część, w której prezentowałem Wam tworzenie różdżki? Dzisiaj wykorzystamy grafikę naszej różdżki do stworzenia… kolejnej różdżki. Może brzmi to trochę dziwnie, ale nasza modyfikacja będzie działała w sposób podobny do poprzedniego. Gdy klikniemy na trawie lub ziemi naszą magiczną różdżką, to wyrośnie nam potężne drzewko. A efekt będzie wyglądał tak:

Zauważyliście na zdjęciu, że liście układają się w różny sposób i każde z drzew różni się od poprzedniego? Dzieję się tak, ponieważ nie wykorzystujemy gotowego schematu drzewa, tylko jest one generowane losowo.

1. Główny plik różdżki.

****Zaczniemy od napisania głównego pliku naszej różdżki. Możecie skopiować kod z poradnika o którym wspominałem na początku. W miejscu, gdzie stawialiśmy blok diamentu, zmienimy kod na wstawienie generatora drzewa. Edytujemy więc na plik, a całość powinna wyglądać tak:

TutWand.java

Na samym początku powinienem Was uprzedzić, że ten kod zaliczamy do średniego poziomu trudności. Dużo matematyki i funkcji.

Początek kodu, jak widzimy, nie uległ znaczącym zmianom. Jedynie w miejscu (jak już wspomniałem powyżej), gdzie generował nam się blok diamentu widzimy odwołanie do funkcji generującej drzewo.

Poniżej w kodzie widzimy właśnie tę funkcję. Co w niej mamy? Na początku ustalamy wysokość drzewa – plus minus 10 bloków. Kolejną linią kodu jest wartość, która ustala, od jakiej wysokości mają wyrastać liście – plus minus 5 bloków. I właśnie w tym momencie widzimy, że te wartości generowane są losowo. Dlatego nasze drzewa nie zawsze są podobne do siebie i nie otrzymujemy efektu „klonów”.

W dalszej części sprawdzamy, czy nic nie rośnie już nad nami, czy nie mamy żadnych przeszkód (np. zwisające części góry) oraz czy nasze drzewo nie będzie wyżej, niż 256 bloków.

Jeśli wszystkie te wartości zostaną spełnione, przystępujemy do generowania struktury drzewa. Tutaj ukłon w stronę matematyków. Jest to funkcja czysto matematyczna, generująca nam stopniowo wszystkie segmenty naszego drzewa – od korzenia po sam czubek. Osoby z dobrą wyobraźnią przestrzenną, które wczytają się w ten kawałek kodu, na pewno zrozumieją.

W tej części możecie pozmieniać niektóre wartości i zobaczyć, jakie efekty otrzymacie. Dla osób, którym nie chce się zbyt intensywnie myśleć, polecam „wujka Google”. Znajdziecie tam wiele ciekawych algorytmów generujących drzewa (zaliczam się do osób leniwych, bo na rzecz tego tutoriala pobrałem go z jednej ze stron – nie oznacza to jednak, że nie piszę swoich).

W kodzie możecie również pozmieniać bloki, z których generują się wasze drzewa, np. bloki diamentów zamiast liści, a zamiast pnia – obsydian. Może zaproponuję małą rywalizację – kto stworzy ładniejsze drzewo? Najciekawszy projekt, wraz z dopiskiem o autorze, przedstawię w następnej części poradnika. Opis wraz z linkiem do zdjęcia nadsyłajcie do mnie na forum (wiadomość na priv) lub pozostawcie tutaj, w komentarzach.

2. Główna klasa naszej modyfikacji.

Przechodzimy teraz do głównego pliku naszej modyfikacji, czyli „Tutorial.java”. Tutaj wystarczy tylko przypisać nasz item (różdżka) do zmiennej oraz nadać mu nazwę. Cały kod powinien wyglądać tak:

Tutorial.java

Przypomnę tylko, że itemów nie należy w tym przypadku rejestrować.

Kod źródłowy + grafika >> Pobierz <<

W związku z tym, że w najbliższym czasie podkręcimy troszkę poziom trudności, zadam Wam jeszcze jedno pytanie. W następnej części poradnika chcielibyście zobaczyć:

A) nowe biomy;

B) generator skrzyń w świecie (coś w stylu modyfikacji Lucky Block)?

Odpowiedzi zostawcie w komentarzach.