1. Przygotowania
Zapewne wszystkie osoby, które grają w Minecraft posiadają zainstalowaną na swoim komputerze Javę. To co posiadacie, to jednak najczęściej nie jest potrzebny do pisania programów w Javie (w tym także modów) Java Development Kit (JDK), tylko Java Runtime Environment (JRE). Oto jak pobrać i poprawnie zainstalować na swoim komputerze JDK 1.6_26!
Pobierz JDK SE stąd: Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Uruchom pobraną aplikacje i zainstaluj JDK
Wejdź w "Mój komputer" -> PPM -> Właściwości -> Zaawansowane -> Zmienne środowiskowe
Do zmiennych systemowych dodaj zmienną Path o wartości C:\Program Files\Java\jdk1.6.0_26\bin (wasza ścieżka może się różnić!)
Uruchom wiersz poleceń (Uruchom -> cmd) i wprowadź komendę javac - jeżeli wyświetli się długa lista - zainstalował-eś/aś JDK poprawnie!Następnym krokiem jest pobranie MCP (Minecraft Coder Pack). Jest to narzędzie, bez którego osobiście nie wyobrażam sobie tworzenia modów. Pozwala ono na szybką dekompliację clienta, a następnie ponowne jego skompliowanie.
Pobierz MCP stąd: Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Stwórz na Pulpicie folder o nazwie np. MCP i skopiuj do niego wszystkie pliki które znajdują się w pobranym archiwum
Teraz potrzebujesz niezmodyfikowanego clienta Minecraft; otwórz %appData% -> .minecraft i skopiuj z niego foldery bin oraz resources
Skopiowane foldery wklej do Pulpit -> MCP -> jars; teraz musisz pobrać jeszcze minecraft_server.jar - możesz to zrobić na minecraft.net
Pobrałeś minecraft_server.jar? Dobrze! Ten plik również skopiuj do folderu "jars"W folderze jars powinny być teraz następujące pliki:
- folder "bin"
- folder "resources"
- server.properties
- minecraft_server.jar
W zasadzie mógłbyś już teraz zacząć tworzyć mody, ale nie byłyby one kompatybilne z Risugami's ModLoader.
Aby to zmienić, pobierz ModLoader dla Minecraft 1.7.3 stąd:
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Otwórz jars -> bin -> minecraft.jar, przenieś do niego wszystkie pliki z ModLoader.zip i usuń folder META-INF
Gotowe! Przygotowaliśmy już wszystko co potrzebne, aby pisać mody. W nastepnej części poradnika będziemy już tworzyć pierwszą modyfikację, którą będzie nowy blok!
2. Tworzenie Bloku
Wejdź do folderu MCP i uruchom decompile.bat. Po zakończeniu procesu dekompilacji powinieneś/powinnaś zobaczyć nowy folder o nazwie "src". Zawiera on pliki z kodem źródłowym Minecraft'a. Otwórz go, a następnie przejdź do net -> minecraft -> net -> src. Tam stwórz dwa pliki JAVA, o nazwach BlockNAZWABLOKU.java oraz mod_NAZWAMODA.java. Ważne: zwróć uwagę na to, aby stworzone pliki posiadały końcówkę .java, nie zaś .java.txt. Plikiem mod_***.java nie będziemy się chwilowo zajmować, otwórz więc Block***.java. Wprowadź do niego następujący kod źródłowy:
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
W miejsce NAZWABLOKU wpisujemy oczywiście nazwę naszego bloku (koniecznie bez spacji, nie jest to nazwa wstępująca w grze!), zaś TYP zamieniamy na wood, rock, glass lub iron. Od tego zależy, jakie narzędzie będzie potrzebne do wydobycia bloku. Ustawiając np. glass nie będziemy w stanie w ogóle wydobyć tego bloku, zaś ustawiając rock będzie potrzebny będzie do wydobycia Wooden Pickaxe (albo wyżej). Logiczne, prawda?
Okej, zajmijmy się teraz "głównym" plikiem moda. Początek jego nazwy zawsze musi brzmieć "mod_", inaczej nie zostanie on w ogóle zainicjowany przed ModLoader'a przy starcie gry. Krok po kroku pokażę Wam, jak stworzyć taki plik. Zaczynamy.
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Pierwsze trzy linijki będą zawsze powtarzać się na początku Waszych modyfikacji, także najlepiej dobrze nauczcie się ich na pamięć. Następna linijka to deklaracja bloku, w której zdefiniujemy (conajmniej) cztery parametry naszego bloku. Spokojnie, wszystko zaraz wyjaśnię. Słowo NAZWAMODA zastąpcie nazwą modyfikacji, tą samą co w nazwie pliku. Ona również nie może zawierać spacji. W miejsce NAZWABLOKU wpisujemy oczywiście nazwę naszego bloku (zresztą tą samą, którą już wcześniej wybraliśmy: poprzedni plik, pamiętacie?). Kolejne słówko do podmiany to NAZWABLOKU2, tutaj również wpisujemy naszą nazwę bloku bez spacji, z tym, że powinniśmy ją rozpocząć małą literą. (np. NAZWABLOKU = GoldBlock, NAZWABLOKU2 = goldBlock). W miejsce ID wpiszcie, no.. właśnie ID waszego bloku! Najwyższa liczba ID to 256, zajęte są liczby od 1 do 96. Przejdźmy teraz do ustawień/parametrów naszego bloku. Słówko TWARDOŚĆ zamieńcie na wartość oznaczającą twardość (od tego zależy czas potrzebny do zniszczenia bloku). Dla przykładu, Dirt posiada twardość 0.5F, zaś Stone 1.5F. Ważne, aby po liczbie zawsze dodać dużą literę F, jest to swego rodzaju jednostka. Kolejny parametr to ODPORNOŚĆ, oznacza ona mniej więcej tylke, jak odporny jest blok na wybuchy. Tutaj również definiujemy ją za pomocą liczby z dużą literą F na końcu (dla przykładu: Stone = 10F, Obsidian = 2000F). Ale.. co Wy na to, aby nasz blok świecił? Postawcie kropkę oddzielającą parametry i dopiszcie setLightValue(JASNOŚĆ), dla przykładu Redstone Torch = 0.5F, Glowstone = 1.0F. Tutaj także wpiszcie dużą literkę F na końcu! Uff.. odpocznijcie chwilkę. Już? Piszemy dalszą część kodu!
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Chyba najoczywistsza i najprostsza część kodu. Oznacza ona wersję oczywiście! Śmiało, zastąpcie WERSJA odpowiednim oznaczeniem, np. 1.0. Dobra, zatem piszemy dalej!
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Jest to ostatni fragment kodu. Będzie tu sporo tłumaczenia, ale jest to dość ważne, także proszę o uwagę. NAZWAMODA zastępujemy zdefiniowaną już wcześniej nazwą moda, to chyba oczywiste. Ale dalej pojawiają się schodki. W tym momencie stwórzcie nowy folder, nazywający się tak samo jak brzmi NAZWAMODA. Będzie on zawierać wszelkie grafiki potrzebne do poprawnego działania modyfikacji, tj. tekstury, ikony. Będziecie również musieli dołączać go za każdym razem, kiedy będziecie publikować jakąś modyfikację. Ale przejdźmy do konkretów. Stwórzcie nowy plik graficzny o rozszerzeniu .png i wymiarach 16x16. Jest to tekstura, lub jak kto woli jedna ściana naszego bloku. Ten malutki plik będzie odpowiadać za to, jak wyglądać będzie nasz blok w grze. Możecie go nazwać jak wam się podoba, ja zastosuję przykładową nazwę texture.png. No dobra, ale co wpisać w miejsce ŚCIEŻKA_DO_TEKSTUR? Ano, jeżeli nazwaliście pliczek tekstur tak samo jak ja, to zastąpcie ŚCIEŻKA_DO_TEKSTUR ścieżką /NAZWAMODA/texture.png. Jeżeli nie, odpowiednio ją zmodyfikujcie. Ktoś się może zapytać: ale po co to? Już śpieszę z odpowiedzią. Normalnie tekstury bloków wczytywane są z pliku terrain.png znajdującego się w cliencie gry. Dzięki funkcji ModLoader.AddOverride tekstura może być wczytana z zewnętrznego pliku, a osoba używająca moda nie musi edytować pliku terrain.png za każdym razem, gdy chce dodać nowego moda. Mam nadzieję, że jakoś to wyjaśniłem. Idziemy dalej. Funkcja ModLoader.RegisterBlock() odpowiedzialna jest za dodanie bloku do gry. Bez niej pomimo całej reszty kodu blok nie pojawiłby się w grze. W miejsce NAZWABLOKU, wpisujemy oczywiście wybraną wcześniej nazwę bloku (nr. 1, tą pisaną z dużej litery). Teraz opis funkcji ModLoader.AddName. Pozwala ona na wybranie napisu, który wyświetla się po najechaniu na blok w grze. Może ona zawierać spację, ale ponieważ Minecraft nie obsługuje domyślnie polskich znaków, nie powinna ona zawierać znaków diakrytycznych. Zatem, zdefiniujcie nazwę bloku. Zrobione? Idziemy dalej!
Zakończyliście w tym miejscu edycję plików JAVA. Poniżej pokażę, jak to mniej więcej powinno u Was wyglądać w całości.
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Jest podobnie? To dobrze, w takim razie nie powinno być żadnych problemów!
Zajmiemy się teraz rekompilacją clienta. Służy ona głównie wykryciu błędów w Waszych plikach modyfikacji. Uruchomicie ją włączając recompile.bat w folderze MCP. Nie martwcie się zbytnio, jeżeli jakieś błędy się pokażą. W takim wypadku zastanówcie się co mogliście zrobić źle, przeanalizujcie kod. Jeżeli zaś nie pokażą się żadne błędy, to możecie przejść do użycia obfuscatora. Jest to narzędzie, które spowoduje, że Wasze pliki otrzymają rozszerzenie .class, a takie są już gotowe do publikacji. Uruchomcie więc reobfuscator.bat znajdujący się w folderze MCP. Po zakończeniu pracy program stworzy nowy folder o nazwie reobf. Otwórzcie go, a następnie otwórzcie folder minecraft. Powinny się tam znajdować pliki Block***.class oraz mod_***.class. Gotowe!
Co powinniście otrzymać po ukończeniu tej części poradnika?
- plik Block***.class
- plik mod_***.class
- folder z teksturą bloku
Otwórz teraz %appData% -> .minecraft -> bin -> minecraft.jar. Po zainstalowaniu w nim Risugami's ModLoader i usunięciu folderu META-INF możecie przenieść tam pliki swojego moda. Uruchomcie Minecraft i przywołajcie za pomocą TooManyItems/SPC swój pierwszy blok (ID zdefiniowaliście w pliku mod_***)! Możecie również opublikować swoją modyfikację w sieci!
Gratuluję, stworzyłeś (stworzyłaś) swój pierwszy blok!
Następna część będzie poświęcona tworzeniu przedmiotów!
3. Tworzenie Przedmiotu
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Wygląda znajomo? Tak, pierwsze trzy linijki są identyczne jak w poprzedniej części poradnika. Natomiast czwarta różni się tylko tym, że deklarujemy przedmiot zamiast bloku. Zaznaczę to już teraz: tworzenie przedmiotu jest znaaacznie łatwiejsze niż bloku. Edytujemy tylko jeden plik i nie ma potrzeby określania tak wielu parametrów. Tak więc, w miejscu NAZWAMODA wpisujemy nazwę moda, taką samą jak w nazwie pliku mod_***, standardowo bez spacji. W miejsce NAZWAITEMU wpiszmy nazwę przedmiotu, z małej litery, również bez spacji. Oczywiście ID zastępujemy liczbą (maksymalnie 32000!), która będzie ID naszego przedmiotu. Listę zajętych ID znajdziemy na różnych stronach poświęconych Minecraftowi (np. na
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
). Pierwszą część kodu mamy za sobą.Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Wytłumaczyłem w poprzedniej części. Jest to na tyle proste, że chyba nie muszę się powtarzać.
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
NAZWAITEMU oczywiście zastąpimy wybraną wcześniej nazwą naszego przedmiotu (tak, tą bez spacji). Znowu przyda się folder z grafikami do naszego moda. Przedmioty nie posiadają tekstur, ale posiadają ikony wczytywane z pliku /gui/items.png znajdującego się w cliencie. Co zrobić, aby nie edytować tego pliku za każdym razem, kiedy piszemy moda dodającego przedmiot do gry? Z pomocą ponownie przychodzi nam funkcja ModLoader.addOverride. Pozwoli ona wczytać ikonę z pliku znajdującego się w naszym folderze z grafikami. Plik musi mieć rozszerzenie .png i wymiary 16x16 px. Zakładając, że naszą ikonkę nazwiemy icon.png, ŚCIEŻKA_DO_IKONY wygląda w tym wypadku tak: /NAZWAMODA/icon.png. Przedmioty nie posiadają funkcji takiej jak BlockRegister, więc możemy śmiało przejść do ochrzczenia naszego przedmiotu. NAZWAITEMU_W_GRZE zastąp dowolną nazwą, może ona zawierać spację.
Jeżeli napisaliście cały kod prawidłowo, powinnien on wyglądać teraz mniej więcej tak:
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Następnie uruchomcie w odpowiedniej kolejności recompiler.bat i reobfuscator.bat. Żadnych błędów? Wypróbuj więc swojego nowego moda! Jak zainstalować modyfikację w grze, opisałem w części 2 poradnika!
Co powinniście otrzymać po ukończeniu tej części poradnika?
- plik mod_***.class
- folder z ikoną przedmiotu
Gratuluję, stworzyłeś (stworzyłaś) swój pierwszy przedmiot!
Następna część będzie poświęcona tworzeniu tzw. crafting recipes!
4. Crafting Recipes
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Oto kod moda dodającego nowe crafting recipe do gry. Jak widzicie, nie zdefiniowaliśmy tutaj żadnego bloku ani przedmiotu. Przejdźmy do wyjaśniej znaczeń poszczególnych wartości. NAZWAMODA i WERSJA są na tyle oczywiste, że chyba nie muszę ich tłumaczyć. Problemy pojawiają się przy funkcji ModLoader.AddRecipe. No więc tak, wyjaśnię to od początku. ZRODLO, to plik w którym zdefiniowany jest przedmiot/blok po kropce. Jeżeli obiekt ten istnieje już w grze, to w miejsce ZRODLO wpisujemy Item lub Block (zależnie od tego, czy obiekt, który chcemy wycraftować jest przedmiotem czy blokiem). Jeżeli obiekt ten stworzyliśmy, dodaliśmy do gry w naszym pliku mod_***, to słowo ZRODLO zastepujemy wyrażeniem mod_NAZWAMODA. W miejsce ITEM_CRAFTOWANY wpisujemy nazwę przedmiotu, który chcemy wytworzyć. Uwaga: jeżeli jest to przedmiot, który dodaliśmy do gry, to wpisujemy tam drugą nazwę, bez spacji i pisaną z małej litery. Może być to również istniejący już przedmiot (np. Diamond). Słowo ILOSC zastepujemy iloscia przedmiotu, który się wytworzy po ułożeniu recepty (domyślnie 1, przedmioty które się nie stackują nie mogą mieć również tej wartości większej niż 1!). Idziemy dalej. W tym miejscu doszliśmy do dziwnych iksów, ktoś się domyśla, co one oznaczają? Tak, jest to kolejno pierwsza, druga i trzecia linijka recepty! Jak widzicie, ze względu na jej charakter może być ona zrealizowana tylko w Crafting Table. X oznacza dany materiał, który wybraliśmy później funkcją Character.valueOf('X'). W tym wypadku crafting naszego przedmiotu możemy zrealizować wypełniając wszystkie wolne miejsca w Crafting Table tym samym przedmiotem! Dalsze ZRODLO.ITEM_DO_CRAFTINGU to zdefiniowanie, co oznacza X! Pokażę teraz przykład kilku crafting recipes!
Block of Diamond (Blok Diamentu) - Wymagany Crafting Table
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Torch (Pochodnia) - Crafting w EQ
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Iron Axe (Żelazna Siekiera) - Wymagany Crafting Table
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
I ostatni, nieco naciągnięty przykład. Załóżmy, że w naszym modzie (mod_RedDiamonds) stworzyliśmy przedmiot redDiamond (Czerwony Diament) i za jego pomocą chcemy wycraftować stworzony również przez nas redDiamondHelmet (Hełm z Czerwonego Diamentu). Do dzieła!
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Mam nadzieję, że zrozumieliście, jak tworzyć recepty. Całość kodu zamieściłem już wcześniej, także nie będę go wklejać drugi raz. Skompilujcie mod_***.java, następnie uruchomcie reobfuscator i wypróbujcie Wasz nowy crafting recipe!
Gratuluję stworzenia pierwszej recepty na przedmiot!
Następna część: Smelting recipes (wypalanie przedmiotów w piecu!)
5. Smelting Recipes
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
Pominiemy wielokrotnie już wyjaśniane NAZWAMODA i WERSJA i przejdziemy od razu do funkcji ModLoader.AddSmelting. ZRODLO zamieniamy z wyrażeniem Block, Item lub mod_NAZWAMODA, zależnie od tego, czy blok/przedmiot istnieje domyślnie w grze (dokładniej omówiłem to w części 4 poradnika). Idziemy dalej, OBIEKT zamieniamy odpowiednio na nazwę przedmiotu lub bloku, zależnie od tego, co wybraliśmy zamiast ZRODLO. Pierwszy zdefiniowany obiekt jest blokiem, który wypalamy, zaś drugi tym, który otrzymamy po wypaleniu (ILOSC = ilość przedmiotu, który otrzymamy). Przyszła pora na przykładowe Smelting Recipes!
Co wy na to, abyśmy po wypaleniu Obsidianu otrzymali jeden Diamond Gem? Do dzieła!
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
A teraz pokażę jak wypalić Bluestone Gem z bloku Bluestone (obydwa przedmioty wcześniej stworzyliśmy).
Zaloguj się bądź Zarejestruj aby zobaczyć tą ukrytą treść
To by było na tyle, jeżeli chodzi o tworzenie smelting recipes. Zrekompilujcie grę, uruchomcie reobfuscator i wypróbujcie Waszą nową receptę wypalania!
Co powinniście otrzymacie po ukończeniu tej części?
- plik mod_***.class
Gratuluję stworzenia pierwszego smelting recipe!
Następna część: ?
Poradniki autorstwa Gaw3l dla MPCforum.pl
Kopiowanie bez zgody autora zabronione!

Logowanie »
Rejestracja
Steam
YouTube
facebook
Team Speak3


Do góry
Pani Kasia


























