Witam! To już kolejna część mojego poradnika. Dzisiaj dodamy do gry więcej kwiatów i dowiemy się czym są „multiblocki”. Każdy blok ma swój indywidualny numer ID. Jeśli chcielibyśmy stworzyć więcej bloków, musielibyśmy wykorzystać wiele numerów ID. Żeby tego nie robić, możemy stworzyć „multiblock”. Zaczynamy!

1. Małe zmiany

Zaczniemy od wprowadzenia małych zmian w dotychczasowym kodzie. Po pierwsze, musimy zmienić nazwę naszego pliku „BlockTutorial” na „BlockFlower„. Dlaczego na początku nie użyłem takiej nazwy? Ponieważ chciałem zaprezentować wam jak w Eclipse można zmienić nazwę pliku, albo paczki. Klikamy prawym przyciskiem myszy na nasz plik i wybieramy „Refactor -> Rename„. Zmieniła nam się nie tylko nazwa pliku, ale również nazwa klasy.

Następnie otwieramy nasz plik i wprowadzamy zmiany. Zawartość pliku powinna później wyglądać tak:

BlockFlower.java

Opis poszczególnych części kodu znajdziecie w komentarzach.

Od teraz nasz blok będzie mógł rosnąć tylko na ziemi, trawie i polach uprawnych. Będziemy mogli postawić go też wyłącznie na tych blokach.

Czym są „multiblocki / subblocki”. Jest to jeden blok o tym samym numerze ID, ale mogący zmieniać wygląd na podstawie wartości „meta„. Czym jest „meta„? Meta może przybrać wartość od 0 do 15 (czyli szesnaście różnych wartości). Wyobraźmy sobie pusty kubek i kubek z trzema piłeczkami. Wygląda inaczej?

Tak samo dzieje się z wyglądem naszego bloku. Różne wartości to różne wyglądy naszego bloku. Wszystkie tekstury naszego bloku zapisane są w zmiennej „Textures„.

****2. Nowy plik i rejestracja bloku.

Żeby gra poprawnie mogła odczytać wygląd naszego bloku, musimy stworzyć jeszcze jeden element. Tworzymy nowy plik class w paczce „tutorial„. Nazywamy go „ItemBlockFlower„. Edytujemy plik, aby zawartość wyglądała tak:

ItemBlockFlower.java

Wartość „UnlocalizedName” musi być inna dla każdego z kwiatków. Jeśli była by taka sama, mielibyśmy problem w późniejszym czasie z nadaniem nazw dla poszczególnych bloków. Mogłyby też wystąpić problemy z teksturami. Między tym plikiem a poprzednim istnieje „więź” poprzez wartość „damage„. To właśnie w niej przekazywana jest wartość meta.

Przejdziemy teraz do naszego głównego pliku, czyli „Tutorial„, a dokładniej do części, w której rejestrowaliśmy blok. Zmieniamy tę część kodu na: „***GameRegistry.registerBlock(mFlower, ItemBlockFlower.class);***„. Dopisaliśmy do rejestratora naszego bloku nasz nowy plik class, który stworzyliśmy poprzednio.

Struktura naszych plików powinna wyglądać tak:

Teraz, gdy użyjemy przycisku „Run Client” w Eclipse, gra zostanie uruchomiona, a my zobaczymy nasze piękne kwiaty.

Zamieszczam kod źródłowy + grafika: >>Pobierz<<

PS. Komentarze zamieszczone w kodzie źródłowym są mojego autorstwa, a nie tłumaczone z angielskich tutoriali. Starałem się w nich jak najprościej wyjaśnić działanie kodu.