Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

ModLoader Od zera do Moddera!


Gaw3l

Rekomendowane odpowiedzi

Opublikowano


 

1. Przygotowania

 

 

Witam, chciałbym przedstawić Wam serię poradników o nazwie "Od zera do Moddera!". Temat tworzenia modów jest wyjątkowo obszerny, dlatego na pewno nie dam rady przedstawić Wam tutaj wszystkich zagadnień, jednakże mam nadzieję, że stworzę Wam dobrą podstawę do nauki tworzenia modów. Na wstępie: nie musisz znać języka Java! Oczywiście znajomość składni w podstawowym zakresie byłaby pomocna, ale nie jest ona wymagana. Druga rzecz: jeżeli masz zamiar się nauczyć pisać mody, to musisz bardzo chcieć się tego nauczyć. Dziwnie to brzmi, ale bez cierpliwości i uporu daleko nie zajdziecie. Tym oto miłym akcentem kończę wstęp i zapraszam do dalszej części!

 

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!

 

ironb.png Pobierz JDK SE stąd: http://www.oracle.co...oads/index.html

ironb.png Uruchom pobraną aplikacje i zainstaluj JDK

ironb.png Wejdź w "Mój komputer" -> PPM -> Właściwości -> Zaawansowane -> Zmienne środowiskowe

ironb.png 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ć!)

ironb.png 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.

 

goldez.png Pobierz MCP stąd: http://mcp.ocean-lab...hp/MCP_Releases

goldez.png Stwórz na Pulpicie folder o nazwie np. MCP i skopiuj do niego wszystkie pliki które znajdują się w pobranym archiwum

goldez.png Teraz potrzebujesz niezmodyfikowanego clienta Minecraft; otwórz %appData% -> .minecraft i skopiuj z niego foldery bin oraz resources

goldez.png Skopiowane foldery wklej do Pulpit -> MCP -> jars; teraz musisz pobrać jeszcze minecraft_server.jar - możesz to zrobić na minecraft.net

goldez.png 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: http://www.minecraft...e-book-updated/

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! smile.gif

 

 


 

2. Tworzenie Bloku

 

 

W tej części zajmiejmy się już 'właściwym' pisaniem modów, a dokładniej stworzymy nasz pierwszy blok. Od teraz niezbędnę będzie posiadanie dobrego edytora tekstu (polecam np. Notepad++) oraz skupienie i cierpliwość. Gotowi? Zaczynamy!

 

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:

 

package net.minecraft.src;

public class BlockNAZWABLOKU extends Block
{

protected BlockNAZWABLOKU(int i, int j)
{
	super(i, j, Material.TYP);
}
}

 

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.

 

package net.minecraft.src;

public class mod_NAZWAMODA extends BaseMod
{
public static final Block NAZWABLOKU2 = new BlockNAZWABLOKU(ID, 0).setBlockName("NAZWABLOKU2").setHardness(TWARDOŚĆ).setResistance(ODPORNOŚĆ);

 

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!

 

public String Version()
{
	return "WERSJA";
}

 

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!

 

public mod_NAZWAMODA ()
{
   NAZWABLOKU2.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "SCIEŻKA_DO_TEKSTUR");
   ModLoader.RegisterBlock(NAZWABLOKU2);
   ModLoader.AddName(NAZWABLOKU2, "NAZWABLOKU_W_GRZE");
}
}

 

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.

 

package net.minecraft.src;

public class mod_NAZWAMODA extends BaseMod
{
public static final Block NAZWABLOKU2 = new BlockNAZWABLOKU(ID, 0).setBlockName("NAZWABLOKU2").setHardness(TWARDOŚĆ).setResistance(ODPORNOŚĆ).setLightValue(JASNOŚĆ);

public String Version()
{
	return "WERSJA";
}

public mod_NAZWAMODA ()
{
   NAZWABLOKU2.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "SCIEŻKA_DO_TEKSTUR");
   ModLoader.RegisterBlock(NAZWABLOKU2);
   ModLoader.AddName(NAZWABLOKU2, "NAZWABLOKU_W_GRZE");
}
}

 

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! smile.gif

Następna część będzie poświęcona tworzeniu przedmiotów!

 

 


 

 

3. Tworzenie Przedmiotu

 

 

Gotowi na stworzenie własnego przedmiotu? Szable w dłoń! Otwórzcie src -> minecraft -> net -> minecraft -> src. Stwórzcie tam nowy plik modyfikacji, mianowcie mod_NAZWAMODA.java. Uwaga: jeżeli ktoś chce stworzyć "większą" modyfikację, to może dopisywać kod do poprzedniego moda (z części 2 poradnika). Ja jednak pokaże, jak przygotować taki plik z nowym przedmiotem od zera. W wypadku tworzenia nowego przedmiotu, nie jest potrzebny drugi plik. Wystarczy mod_***.java. Piszmy więc!

 

package net.minecraft.src;

public class mod_NAZWAMODA extends BaseMod
{
public static final Item NAZWAITEMU = new Item(ID).setItemName("NAZWAITEMU");

 

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 http://www.minecraft....com/idlist.htm). Pierwszą część kodu mamy za sobą.

 

public String Version()
{
	return "WERSJA";
}

 

Wytłumaczyłem w poprzedniej części. Jest to na tyle proste, że chyba nie muszę się powtarzać.

 

public mod_NAZWAMODA ()
{
   NAZWAITEMU.iconIndex = ModLoader.addOverride("/gui/items.png", "SCIEŻKA_DO_IKONY");

   ModLoader.AddName(NAZWAITEMU, "NAZWAITEMU_W_GRZE");
}
}

 

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:

 

package net.minecraft.src;

public class mod_NAZWAMODA extends BaseMod
{
public static final Item NAZWAITEMU = new Item(ID).setItemName("NAZWAITEMU");

public String Version()
{
	return "WERSJA";
}

public mod_NAZWAMODA ()
{
   NAZWAITEMU.iconIndex = ModLoader.addOverride("/gui/items.png", "SCIEŻKA_DO_IKONY");

   ModLoader.AddName(NAZWAITEMU, "NAZWAITEMU_W_GRZE");
}
}

 

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! smile.gif

Następna część będzie poświęcona tworzeniu tzw. crafting recipes!

 

 


 

4. Crafting Recipes

 

 

Przyszła pora na kolejny istotny element tworzenia modów. Są to tzw. crafting recipes. Odpowiadają one za kształt jaki musimy ułożyć z różnych materiałów, aby wycraftować dany przedmiot. W tym wypadku także jest tam potrzebny tylko plik mod_NAZWAMODA.java. Stwórzcie więc nowy plik, albo dopisujcie kod do modów z poprzednich części poradnika! Jak zawsze, tak i teraz plik ten musimy umieścić w src -> minecraft -> net -> minecraft -> src. Przejdźmy do pisania kodu.

 

package net.minecraft.src;

public class mod_NAZWAMODA extends BaseMod
{

public String Version()
{
return "WERSJA";
}

public mod_NAZWAMODA ()
{
ModLoader.AddRecipe(new ItemStack(ZRODLO.ITEM_CRAFTOWANY, ILOSC), new Object[] {"XXX", "XXX", "XXX", Character.valueOf('X'), ZRODLO.ITEM_DO_CRAFTINGU});
}
}

 

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

ModLoader.AddRecipe(new ItemStack(Block.blockDiamond, 1), new Object[] {"XXX", "XXX", "XXX", Character.valueOf('X'), Item.diamond});

 

Torch (Pochodnia) - Crafting w EQ

ModLoader.AddRecipe(new ItemStack(Item.torch, 4), new Object[] {"X", "Y", Character.valueOf('x'), Item.coal, Character.valueOf('Y'), Item.stick});

 

Iron Axe (Żelazna Siekiera) - Wymagany Crafting Table

ModLoader.AddRecipe(new ItemStack(Item.axeIron, 1), new Object[] {"XX ", "XY ", " Y ", Character.valueOf('X'), Item.ingotIron, Character.valueOf('Y'), Item.stick});

 

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!

ModLoader.AddRecipe(new ItemStack(mod_RedDiamonds.redDiamondHelmet, 1), new Object[] {"XXX", "X X", Character.valueOf('X'), Item.redDiamond});

 

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! smile.gif

Następna część: Smelting recipes (wypalanie przedmiotów w piecu!)

 

 


 

5. Smelting Recipes

 

 

Ta część poświęcona będzie tworzeniu smelting recipes. Dzięki nim, wypalanie w piecu określonych przedmiotów powoduje utworzenie szkła, przetopów (sztabek) itd. Część jest bardzo krótka, a utworzenie nowych recept wypalania nie zabiera wiele czasu. Standardowo, stwórzcie nowy plik mod_NAZWAMODA.java w src -> minecraft -> net -> minecraft -> src. Kod jest zbyt krótki, aby dzielić go na części, więc od razu wklejam całość.

 

package net.minecraft.src;

public class mod_NAZWAMODA extends BaseMod
{
public String Version()
{
	return "WERSJA";
}

public mod_NAZWAMODA ()
{
	ModLoader.AddSmelting(ZRODLO.OBIEKT.blockID, new ItemStack(ZRODLO.OBIEKT, ILOSC));
}
}

 

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!

ModLoader.AddSmelting(Block.obsidian.blockID, new ItemStack(Item.diamond, 1)

 

A teraz pokażę jak wypalić Bluestone Gem z bloku Bluestone (obydwa przedmioty wcześniej stworzyliśmy).

ModLoader.AddSmelting(Block.blockBluestone.blockID, new ItemStack(Item.bluestone, 1)

 

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! smile.gif

Następna część: ?

 

 


 

Poradniki autorstwa Gaw3l dla MPCforum.pl

Kopiowanie bez zgody autora zabronione!

  • Odpowiedzi 419
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

Rozwijaj a będzie pięknie ;). Już masz plusa :)

 

Było coś podobnego na forum ;)

1390144171-U592769.png

 

3x ExModerator Minecraft | ExModerator Battlefield | ExMentor | 2x Ex MPC Media Team | Gold Member | MPC Coders Team | ExMPC Modder | Combat Arms Private

Opublikowano

Było coś podobnego, ale mimo to z niecierpliwością czekam na twoje tutoriale. Tamte mi nie działały. Tylko, że w tamtych nie było nic o tym, co jest w tym. ;)

 

Po za tym. To na tej stronce nie widzę SDK, a jedynie JDK.

survarium_user_bar_en.jpg
Opublikowano

@up

 

No właśnie się dziwiłem co to to SDK i że chyba mu chodziło o JDK :P. Niech poprawi :P

1390144171-U592769.png

 

3x ExModerator Minecraft | ExModerator Battlefield | ExMentor | 2x Ex MPC Media Team | Gold Member | MPC Coders Team | ExMPC Modder | Combat Arms Private

Opublikowano

Dodaj jeszcze jak dodać tekstury z osobnego pliku :D

GG:5542533

Bez jakichkolwiek danych,proszę nie pisać w sprawie pomocy...

Opublikowano

karol199718, zobaczymy, póki co mam w planach poradniki nt. tworzenia przedmiotów i crafting recipes. :)

 

Qwaq, jest to opisane w 2giej części poradnika. Funkcja ModLoader.AddOverride, mianowicie.

 

@jeżeli macie problemy, podczas kompilacji otrzymujecie błędy, to śmiało, piszcie. pomogę jak będę mógł.

Opublikowano

karol199718, pobierz JDK 1.6_26, będzie Ci później łatwiej podążać wg. tutoriala, który był robiony na tej wersji ;)

Opublikowano

Mogę prosić Cię o jakiś kontakt???

 

Czekam na następną część

 

A właściwie na czym się wzorujesz??

1390144171-U592769.png

 

3x ExModerator Minecraft | ExModerator Battlefield | ExMentor | 2x Ex MPC Media Team | Gold Member | MPC Coders Team | ExMPC Modder | Combat Arms Private

Opublikowano

@up

Nie płacz. Wg. twojego mi żaden mod nie działał. :)

Po za tym w swoich nie zawarłeś kilku istotnych informacji. Wniosek - jeśli już close, to twój. Aczkolwiek oba powinny zostać otwarte.

 

A swoją drogą ten jest łatwiejszy do zrozumienia. ;)

 

Pisząc nie na temat - osoba w twojej sygnaturze jest bardziej mężczyzną, czy kobietą? Czysta ciekawość.

survarium_user_bar_en.jpg
Opublikowano

Mąka, staram się organizować poradniki mniej więcej tak jak wyglądają one na minecraftforum.net, jest to dość czytelny sposób, musisz przyznać. wiedzę o tworzeniu modów również posiadam stamtąd, i oczywiście jak najbardziej polecam to źródło. ;)

 

Manderigon_Back, szkoda słów, drugi raz na dwa tematy oskarżasz mnie o plagiat. nie wiedziałem nawet o tym, że pisałeś tego typu poradnik, a jeżeli modding 'czystego' clienta i praca z wykorzystaniem ModLoadera to dla Ciebie to samo, to proponuję najpierw się douczyć a później pisać durne posty. eot.

Opublikowano

@Manderigon_Back

 

Daj mu spokój. Gadałem z wiarą i mówili że u ccb nic nie działało

1390144171-U592769.png

 

3x ExModerator Minecraft | ExModerator Battlefield | ExMentor | 2x Ex MPC Media Team | Gold Member | MPC Coders Team | ExMPC Modder | Combat Arms Private

Opublikowano

Fajne ale bez przepisu to nic.. next poradnik to przepis na blok ok? i moze jak zrobić zeby np. świecił

............

Opublikowano

Aktualizacja!

 

- Znacznie poprawiona część "Tworzenie Bloku"

- Dodana część "Tworzenie Przedmiotu"

 

Wkrótce: Crafting Recipes

 

Pozdrawiam! :)

Opublikowano

@Manderigon_Back

W pierwszej generacji twoich poradników nie było filmów. I na podstawie tejże generacji napisałem mojego posta. A że nie działało, toteż odechciało mi się zaglądać. ;)

survarium_user_bar_en.jpg
Pomocnik
Opublikowano

Przy rekomplikacji wyskakuje ten blad:

src\minecraft\net\minecraft\src\mod_lampa.java:5: cannot find symbol
symbol  : variable ID
location: class net.minecraft.src.mod_lampa
public static final Block lampa = new Blocklampa(ID, 222).setBlockName("Lampa").
setHardness(1F).setResistance(10F).setLightValue(2F);

Zmienialem id ale to nic nie daje.

@edit

dam jeszcze plik mod

 

package net.minecraft.src;

public class mod_lampa extends BaseMod
{
public static final Block lampa = new Blocklampa(ID, 222).setBlockName("Lampa").setHardness(1F).setResistance(10F).setLightValue(2F);

public String Version()
   {
       return "0.1";
   }

public mod_lampa ()
   {
      lampa.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "Lampa/terrain.png");
      ModLoader.RegisterBlock(lampa);
      ModLoader.AddName(lampa, "Lampa");
   }
}

Pomocnik
Opublikowano

@up nie.

Dalem w poprzednim poscie calosc bledu skopiowana z konsoli.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...