piątek, 29 maja 2015

Zaczynamy - część II

Posiadasz już podstawową wiedzę o programowaniu w Java (jeśli nie, dobrze Ci radzę, poszukaj informacji nawet podstawowych, bo inaczej nie zrozumiesz o czym będę tu wspominał) oraz przygotowane środowisko i JDK. Jeśli tak, to możemy przejść do części drugiej poradnika.

No dobrze. Masz już zainstalowane IDE (Eclipse lub Intelij IDEA), lecz co z tym wszystkim zrobić?

Na początek, po rozpoczęciu pracy przywita nas widok:

poprzez klikanie strzałek otwieramy Minecraft i src/main/java.
Po otworzeniu zobaczymy package com.example.examplemod - jest to przykładowy mod, a właściwie jego zalążek dostarczony przez ekipę MinecraftForge. Kliknij go prawym przyciskiem myszy i wybierz opcję delete, gdyż jest nam on nie potrzebny.
Od teraz rozpoczynamy pracę nad własnym modem. Kliknij ppm na src/main/java i utwórz nowy package:
W polu name należy wpisać nazwę nowego package (paczki - aby nie mieszać za wiele będziemy używać nazw angielskich). Nazwa ta zazwyczaj wygląda tak:
  • net.autor.nazwamoda
  • com.autor.nazwamoda
To, której wersji użyjesz zależy wyłącznie od ciebie. Służy to jedynie rozpoznawaniu dla ciebie, język Java i tak to zinterpretuje prawidłowo. Na cele poradnika stworzymy package net.polskimodder.tutorial.

Po stworzeniu package utwórz class (klasę). Analogicznie będzie to wyglądać następująco: klikasz ppm na utworzony package (dzięki temu nowa klasa znajdzie się w naszym package) i wybierasz opcję class. W nowo otwartym oknie nadaj jej nazwę, która będzie ci się kojarzyć z głównym plikiem moda. W moim wypadku nazwiemy ją po prostu Tutorial. W Modifiers wybierz opcję public po czym zatwierdź nową klasę.

Dobrze teraz możemy zająć się już właściwym kodem, więc od tej pory zalecam być skupionym.
Póki co nie skupimy się na rozdzieleniu kodu serwera i klienta. Tym razem podam cały kod źródłowy, ponieważ jego późniejsze złożenie może okazać się problematyczne.
Standardowo po otworzeniu pliku Tutorial.java zobaczysz taki kod:


package net.polskimodder.tutorial;

public class Tutorial
{

}

Póki co nie ma on nic wspólnego z modami do minecraft, co można zobaczyć poprzez próbę uruchomienia z Eclipse Minecrafta. Poniżej znajduje się kod, który takowym modem już jest:

package net.polskimodder.tutorial;

import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.registry.EntityRegistry;



@Mod(modid = Tutorial.MODID, version = Tutorial.VERSION)
public class Tutorial
{
public static final String MODID = "tutorial";
    public static final String VERSION = "0.0.1";
    
    @Mod.Instance(Tutorial.MODID)
    public static Tutorial instance;
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {

    }
    
    @EventHandler
    public void init(FMLInitializationEvent event)
    {

    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {

    }
    
    public static String prependModID(String name)
    {
    return MODID + ":" + name;
    }
}

Proszę jedynie, abyście nie kopiowali tego kodu, ponieważ będzie on u was błędny. Rozpocznijmy od linijki pierwszej: package net.polskimodder.tutorial - jest to zadeklarowanie, że ten plik należy do tego package. Potem następują importy wszystkich potrzebnych plików z Minecraft Forge lub samego Minecraft. Dopiero linijka @Mod mówi środowisku Forge, że ten plik jest modem i należy go załadować, jak zauważyliście w @Mod pojawia się modid = Tutorial.MODID oraz version = Tutorial.VERSION. Jest to wpisanie do Forge naszego moda, który za pomocą modid jest rozpoznawany przez Forge, a parametr VERSION nadaje mu aktualną wersję. Dzięki temu Forge wie, że nasz mod nie jest innym modem. public class Tutorial to utworzenie klasy naszego moda, ponieważ w Javie każdy obiekt musi posiadać swoją klasę. Wewnątrz klasy Tutorial tworzymy dwa ciągi znaków (string) z parametrami public static final. Powinniście wiedzieć już do czego one służą, jeśli wzięliście udział w dowolnym kursie Java, jednak jeśli nie wiecie oto wytłumaczenie. Te słowa tworzą obiekty dostępne w dowolnym miejscu w modzie, lecz są one statyczne, dzięki czemu nie można ich modyfikować (Raczej źle skończyłoby się, gdyby nagle w połowie pracy minecrafta mod zmienił nazwę z tutorial na np pączek).

Oczywiście stringi MODID oraz VERSION to wasz własny wymysł, modid będzie wykorzystywane w komendach do uzyskania waszych przedmiotów, version może być dosłownie dowolny.

W następnej linii tworzymy instancję naszego moda. Jest to wymagane, ponieważ Minecraft Forge musi wiedzieć, gdzie jest twój mod i jak ma się do niego odwoływać.

Podział kodu na serwer i klient specjalnie pominąłem, gdyż wpis byłby za długi i nudny... (Aczkolwiek do tego wrócimy w następnej części poradnika - jest to wymagane, aby mod mógł działać prawidłowo)

Na samym końcu posiadamy 3 funkcje, wszystkie poprzedzone linijką @EventHandler.
Są to funkcje, które naszego moda inicjują (startują). Dzielą się na trzy funkcje, gdyż nie nie każdy kod może być włączany w tym samym miejscu.
  • preInit -  w tej funkcji wywołane zostają podstawowe rzeczy, bez których dalsze ładowanie moda nie może działać. Wczytuję się tutaj pliki konfiguracyjne, tworzy oraz rejestruje bloki i przedmioty.
  • init - tutaj twój mod zostaje właściwie załadowany. W tym etapie tworzy się wszystko co jest potrzebne w modzie oraz rejestruje się przepisy.
  • postInit - bardzo ważna funkcja, która już nie ładuje samego moda, lecz odpowiada za interakcję z innymi modami (dla przykładu interakcja z modem BuildCraft).
No i pozostaje funckja prependModID, która odpowiada za zwrócenie prawidłowo naszego ModID, kiedy jest potrzebne.

Jeśli przeczytałeś to wytłumaczenie, to znak, że masz ochotę zrozumieć jak działa Minecraft i Minecraft Forge, czyli masz zadatki na moddera! Jeśli kod przepisałeś prawidłowo i zmieniłeś potrzebne wartości na swoje własne możesz spróbować uruchomić Minecrafta. Zrobisz to poprzez wciśnięcie strzałki w zielonym kółku, jeśli mod jest prawidłowo napisany Minecraft się załaduje, a w zakładce Mods zobaczysz swojego moda:

W następnej części omówimy podział kodu na stronę Serwera i Klienta.







środa, 13 maja 2015

Lista Tematów

Lista tematów:

Wstęp:

Zaczynamy - część I

Dobrze, jeśli już znasz podstawy języka Java możemy zacząć od zainstalowania potrzebnych programów. Poradnik oraz wszelkie przykłady są tworzone w środowisku Eclipse, lecz jeśli chcesz możesz używać programu, który bardziej ci pasuje:

  • Eclipse
  • IntelliJ Idea
W przypadku tego poradnika skupimy się na Eclipse. Jeśli chcesz skorzystać z innego programu zalecam odwiedzenie strony minecraftforge.net.

Będą nam potrzebne:
Instalacja JDK postępuje poprzez uruchomienie instalatora i wykonywanie instrukcji. Eclipse należy wypakować w dowolne miejsce na dysku.

Jeśli mamy już JDK oraz Eclipse pora przystąpić do uzyskania potrzebnych plików, czyli Minecraft Forge oraz Mod Coder Pack.

Oba zestawy są połączone i dostępne pod tym adresem: Minecraft Forge.

Po wejściu na stronę wybieramy wersję Minecraft, która nas interesuje. W tym wypadku zaczynamy od wersji 1.8, lecz w przyszłości będzie to inna wersja, dlatego wybieramy najnowszą.
Po wybraniu wersji pojawi nam się informacja o dwóch wersjach Minecraft Forge - Latest i Recommended. Nas będzie dotyczyć wersja recommended czyli zalecana. Jest ona przetestowana i mało podatna na błędy. Musimy wybrać pakiet src - są to wszystkie pliki potrzebne do pracy, lecz niech was nie myli mały rozmiar paczki, wszystko trzeba jeszcze zainstalować.

Po pobraniu wypakowujemy w dowolnym miejscu na dysku.
W paczce znajduje się plik gradlew.bat. Nie uruchamiamy go jeszcze! Najpierw musimy sprawdzić, czy po instalacji JDK jesteśmy w stanie wykorzystać je.

Musimy sprawdzić czy zmienne środowiskowe są prawidłowo ustawione:
  • Dla windows: wchodzimy w menu start i wpisujemy zmienne. Powinny nam wyskoczyć dwa programy, Edytuj zmienne środowiskowe konta/Edytuj zmienne środowiskowe systemu. Bezpieczniej jest wybrać opcję konta, lecz aby mieć pewność, że zadziała musimy  edytować opcje systemu. Po włączeniu edytowania zmiennych środowiskowych musimy znaleźć w zmiennych systemowych zmienną Path. Jak ją znajdziemy DODAJEMY na jej końcu średnik i miejsce instalacji JDK oraz ponownie średnik i miejsce instalacji Javy (JRE). W moim wypadku: C:\Program Files (x86)\Java\jdk1.8.0_31\bin;C:\Program Files (x86)\Java\jre8\bin (ważne, aby średnik znalazł się przed ścieżkami, a same ścieżki zawierała w sobie folder bin). Dodatkowo musimy stworzyć nową zmienną JAVA_HOME, chyba, że już taka istnieje to tylko zmodyfikować jej wartość. Wpisujemy w niej ponownie katalog JDK, tym razem bez \bin, czyli: C:\Program Files (x86)\Java\jdk1.8.0_31. W waszym wypadku ścieżki będą inne, dlatego pamiętajcie by najpierw je sprawdzić!
Po zmianie zmiennych środowiskowych czas na instalację Minecraft Forge.
  • Wchodzimy w folder z plikami Minecraft Forge, które wcześniej pobraliśmy.
  • klikamy prawy przycisk myszy z przytrzymanym shiftem na dowolnym miejscu w folderze (tylko nie pliki i inne foldery) po czym wybieramy opcję Otwórz okno polecenia tutaj.
  • wpisujemy gradlew setupDecompWorkspace --refresh-dependencies (zalecam być cierpliwym, może to trwać kilkanaście minut - zależnie od prędkości łącza internetowego oraz samego komputera)
  • po zakończeniu pierwszej komendy powinniśmy zobaczyć napis BUILD_SUCCESSFUL, jeśli jest inaczej udaj się niżej, aby uzyskać pomoc.
  • Jeśli po zakończeniu masz napis BUILD_SUCCESSFUL wpisz: gradlew eclipse (jeśli posiadasz IDE eclipse)
  • W przypadku IntelliJ Idea trzeba wykonać nieco inne rzeczy. Otwórz Idea i wybierz opcję import project. Znajdź folder z plikami Minecraft Forge i wybierz plik Build.gradle. Kiedy Idea zakończy importowanie projektu zamknij ją i wpisz komendę gradlew getIntellijruns
  • Po zakończeniu działania komend pozostaje jeden bardzo prosty krok - uruchomienie Eclipse i wskazanie ścieżki Workspace do folderu eclipse w folderze z plikami Minecraft Forge lub w przypadku Idea automatyczne otworzenie się projektu po jego zaimportowaniu.
W następnej części zajmiemy się bazowymi plikami moda oraz ich działaniem.


Zanim rozpoczniesz

Jak już pewnie doskonale wiesz, tworzenie modyfikacji wymaga znajomości języka Java. Nie będę tutaj opisywał wszystkich rzeczy związanych z Javą. Wytłumaczę tylko najważniejsze rzeczy - tak aby ci, którzy dopiero zaczynają wiedzieli o czym jest mowa w poradniku. Zanim jednak przejdę do tej ważniejszej części wprowadzenia, muszę ustalić kilka zasad (Lepiej o nich pamiętać, wpłynie to korzystnie na modyfikacje i na twoją pracę).

  • Nie wolno udostępniać kodu gry Minecraft, gdyż jest to niezgodne z prawem. Jeśli musisz wykorzystać oryginalny kod Minecraft odwołaj się do niego, a nie kopiuj.
  • Jeśli jakaś modyfikacja znaleziona w internecie jest udostępniona na licencji OpenSource, możesz korzystać z jej kodu, lecz pamiętaj o autorze kodu. Wspomnij o nim w opisie, bo ten kod nie należy do ciebie.
  • Poradniki mają na celu pokazanie jak działa modyfikowanie Minecrafta w oparciu o Minecraft Forge i bazowe pliki Minecraft.
  • W poradnikach mogą pojawić się zadania o różnym poziomie trudności. Powiedzmy, że poradnik to swego rodzaju lekcja, a waszym zadaniem domowym będzie stworzyć modyfikację, która wykorzysta nowo zdobytą wiedzę.
  • Jeśli masz większe doświadczenie ode mnie i zauważysz błąd w poradniku, bądź chcesz dołączyć do tworzenia bloga - napisz do mnie maila.
  • Jeśli coś nie chce działać, pomimo wykonania wszystkich instrukcji z poradnika - zgłoś się do mnie, spróbujemy razem to naprawić.
  • Poradnik można udostępniać w sieci poprzez wysłanie linka do tego bloga. Wszelkie plagiaty będą sukcesywnie usuwane. Szanujmy pracę innych.
Dobrze. Po kilku zasadach pora na właściwą treść wprowadzenia.

Po pierwsze znajomość Javy jest wymagana. Nie musisz znać jej doskonale, wystarczy, że będziesz umieć napisać prosty kod, ponieważ w poradnikach rzadko będzie pojawiał się cały kod. Celem poradnika jest nauczenie was tworzenia modów, nie nauczenie jak przepisywać z internetu.

Po kursy, poradniki i wiedzę związaną z Javą odsyłam do internetu (Wujaszek Google pomoże). Proszę o nie wysyłanie maili z pytaniem gdzie jakiś poradnik można znaleźć. Wszystko jest łatwo dostępne. Jeśli czytasz ten wpis oznacza to, że jesteś początkującym i chcesz zacząć.

W następnej części wprowadzenia zaczniemy od instalacji potrzebnych programów oraz ustawienia wszystkich rzeczy, które będą nam potrzebne.



3... 2.. 1.. START!!!

Cóż to takiego? Nowy blog? Kolejny pseudo poradnik jak tworzyć modyfikacje do gry Minecraft?
Możliwe, że macie rację, że jest to tylko kolejna próba stworzenia poradnika dla ludzi, którzy chcą modyfikacje tworzyć, lecz nie wiedzą jak... Aczkolwiek tutaj następuje pewna różnica. Blog ten jest poświęcony wytłumaczeniu jak działają modyfikacje do Minecraft oraz jak je prawidłowo tworzyć.

Rozpoczniemy od kilku wyjaśnień oraz ważnych informacji:
  1. Minecraft to gra studia Mojang AB stworzona przez Markusa "Notcha" Perssona.
  2. Wszystkie modyfikacje zgodnie z nowym EULA Mojangu (licencja) są legalne, a nawet wskazane, jeśli nie udostępniają głównego kodu gry.
  3. Znajomość języka Java jest wskazana, lecz można się go uczyć równolegle z tworzeniem modyfikacji.
  4. Nie jestem jakimś bóstwem lub mentorem - moja wiedza na temat tworzenia modyfikacji wciąż się poszerza, a to co już wiem chcę przekazać dalej.
  5. To WY macie możliwość współtworzenia tego bloga. Wystarczy napisać do mnie maila z propozycjami co chcielibyście zobaczyć jako poradnik albo co chcecie aby wytłumaczyć.
  6. Jestem uczniem technikum oraz wciąż nie znam możliwości modyfikowania Minecrafta w pełni, dlatego poradniki mogą pojawiać się częściej lub rzadziej, na pewno jakiś wpis się będzie pojawiał raz na jakiś czas.
  7. Jeśli masz jakieś pytanie - napisz do mnie maila lub skontaktuj się dowolną inną metodą, jedynie wiadomość musi do mnie dotrzeć.
  8. Wszelkie problemy z poradnikami lub własnym kodem możecie do mnie zgłaszać, jeśli będę w stanie pomóc - zrobię to.