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

Tworzenie modów do Minecraft 1.6.4 z użyciem MCP 8.11


MqSebQu

Rekomendowane odpowiedzi

Opublikowano

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

KURS BĘDZIE NADAL PROWADZONY, ALE DOPIERO PO WYJŚCIU NOWEGO MCP.

 

Cześć. Witam w moim pierwszym tutorialu, w którym dowiesz się jak stworzyć własnego moda z użyciem MCP na Windows 7.

1. Przygotowania


Do tworzenia prostych modów, w których znajdują się nowe bloki, przedmioty, moby itp. wystarczy:
1. Znajomość języka Java (Jeżeli tworzyłeś wcześniej proste programy w tym języku będzie Ci dużo łatwiej)
2. Znajomość języka angielskiego (Możesz tez używać Google Tłumacz)

Jeżeli jednak chciałbyś tworzyć zaawansowane mody - ucz się programować.

Pobieramy potrzebne narzędzia.
1. Pobieramy Java JDK, instalujemy (polecam najnowsza wersje).
2. Pobieramy MCP 8.11 (Mod Coder Pack).
3. Pobieramy Notepad++ lub Eclipse (Może być również inny edytor. Ja opiszę na przykładzie Notepad++).
4. Pobieramy czystą wersję Minecraft 1.6.4 (Bez żadnych modów).
5. Pobieramy minecraft.server.1.6.4.jar

Ustawiamy Path.
Komputer-Właściwości-Zaawansowane ustawienia systemu-Zmienne środowiskowe..-W zmiennych systemowych odnajdujemy Path-Edytuj...-Do wartosci zmiennej dodajemy ścieżkę do folderu bin z JDK np. C:\Program Files\Java\jdk1.7.0_51\bin (jeśli wcześniej są inne wartości oddzielamy je średnikiem). Teraz klikamy Win+R, wpisujemy cmd.exe i klikamy OK. Otworzy nam się okno konsoli. Wpisujemy komendę javac. Jeśli ukażą nam się kolejne komendy to dobrze ustawiliśmy wartości Path.

Przygotowujemy MCP 8.11.
Tworzymy nowy folder i wklejamy do niego plik mcp811.zip. Klikamy na niego PPM i Wypakuj tutaj. Następnie otwieramy folder jars i wklejamy do niego minecraft.server.1.6.4.jar (koniecznie w formacie .jar). Potem klikamy Win+R i wpisujemy %appdata%. Przechodzimy do folderu .minecraft i kopiujemy tam trzy foldery. Mianowicie:
assets
libraries
versions w którym znajduje się Minecraft 1.6.4
i wklejamy je do jars.
Następnie uruchamiamy decompile.bat i czekamy gdy skończy się żmudny proces dekompilowania kodu gry Minecraft. Pozostało nam jeszcze usunąć folder META-INF w 1.6.4.jar. (dziękuję za przypomnienie użytkownikowi MCEnderek)
Po zakończeniu otwieramy kolejno foldery src-minecraft-net-minecraft-src. Jeżeli znajduje się tam bardzo dużo różnych plików w formacie .java to gratuluję. Jesteś prawie gotowy do stworzenia swojego moda. Jeszcze zostało nam do sprawdzenia nasze miejsce testowe. Uruchamiamy recompile.bat i czekamy na zakończenie. Jeżeli nie będzie żadnych błędów, możesz uruchomić startclient.bat. Jeśli natomiast pojawią się jakieś błędy sprawdź czy gdzieś nie popełniłeś błędu.



2. Item


Zaczynamy!
Otwieramy kolejno foldery src, minecraft, net, minecraft, src i szukamy pliku Item.java. Otwieramy go i zjeżdżamy do 188 linijki i piszemy

public static Item NAZWAITEMU = (new Item(ID)).setUnlocalizedName("NAZWAITEMU").setMaxStackSize(ILOSC).setCraeativeTab(CreativeTabs.tabZAKLADKA).setTextureName("NAZWATEKSTURY");

Tłumaczymy:
NAZWAITEMU - wpisujemy nazwę itemu, jednak nie tą w grze. Najlepiej z małej litery.
ID - ID przedmiotu (najlepiej zacząć od 200 wzwyż)
ILOSC - maksymalna ilość w stacku. Jeżeli ma być 64 to wpisujemy 64 lub usuwamy:

.setMaxStackSize(ILOSC)

ZAKLADKA - zakładka, w której znajdować ma się nasz Item w trybie Creative.
Możliwe zakładki:


Block - bloki
Decorations - dekoracje
Redstone - itemy związane z redstone
Transport - przedmioty związane z transportem
Misc - różne
Food - jedzenie
Tools - narzędzia
Combat - walka
Brewing - mikstury
Materials - materiały


NAZWATEKSTURY - nazwa tekstury, którą wklejamy do folderu assets-minecraft-textures-items w 1.6.4.jar, który znajduje się w jars-versions-1.6.4-1.6.4.jar-klikamy na niego PPM-Otwórz za pomocą WinRar.

Teraz tłumaczymy funkcje:

.setMaxStackSize

Maksymalna ilość itemów w stacku

.setCreativeTab

Zakładka w Creative

.setUnlocalizedName

Używane do wyszukania nazwy przedmiotu w grze.

Uruchamiamy recompile.bat i czekamy na wynik, a w między czasie dodamy nazwę w grze. Wchodzimy do jars-versions-1.6.4-1.6.4.jar uruchmiamy przez WinRar. Otwieramy assets-minecraft-lang i otwieramy en_US.lang. Zjeżdżamy do linijki 758 i piszemy

item.NAZWAITEMU.name=NAZWAWGRZE

Teraz przykładowy item

public static Item aluminium = (new Item(200)).setUnlocalizedName("aluminium").setCreativeTab(CreativeTabs.tabMaterials).setTextureName("aluminium");
item.aluminium.name=Aluminium

Gdy skończymy testujemy nasz item uruchamiając startclient.bat
 
Oto efekt naszej pracy:
660601403548299750370.png


 
3. Blok


Do roboty! Otwieramy plik Block.java znajdujący się w naszym folderze roboczym czyli src i zjeżdżamy do linijki 224. Dopisujemy:

public static final Block NAZWABLOKU = (new BlockNAZWABLOKUDUŻA(ID)).setHardness(TWARDOŚĆ).setResistance(10.0F).setStepSound(soundDŻWIĘKFootstep).setUnlocalizedName("NAZWABLOKU").setTextureName("NAZWATEKSTURY");

Tłumaczymy:
NAZWABLOKU - nazwa bloku, ale nie w grze
NAZWABLOKUDUŻA - nazwa bloku, ale nie w grze, z dużej litery
ID - ID bloku (polecam od 200 wzwyż)
TWARDOŚĆ - twardość bloku (dla przykładu Stone - 1.5F, Obsydian - 50.0F)
ODPORNOŚĆ - odporność na wybuchy, ogień (dla przykładu Planks  5.0F, Obsydian 2000.0F)
DŹWIĘK - dźwięk gdy chodzimy po bloku
Możliwe dźwięki:


soundPowderFootstep - stone
soundWoodFootstep - wood
soundGravelFootstep - gravel
soundGrassFootstep - grass
soundStoneFootstep - stone
soundMetalFootstep - stone
soundGlassFootstep - stone
soundClothFootstep - cloth
soundSandFootstep - sand
soundSnowFootstep - snow
soundLadderFootstep - ladder
soundAnvilFootstep - anvil


JASNOŚĆ - światło wydzielane przez blok (dla przykładu Glowstone 1.0F). Jeżeli ma nie świecić - usuwamy.
NAZWATEKSTURY - nazwa tekstury bloku (wklejamy do jars-versions-1.6.4-1.6.4.jar otwieramy poprzez WinRar-assets-minecraft-blocks)
Zamieszczam gotowy kod:

public static final Block aluminium = (new BlockAluminium(180)).setHardness(5.0F).setStepSound(soundMetalFootstep).setUnlocalizedName("aluminium").setTextureName("aluminium");

Jednak to jeszcze nie koniec. Tworzymy nowy plik w folderze roboczym src o nazwie BlockNAZWABLOKUDUŻA.java i wpisujemy tam kod:

package net.minecraft.src; public class BlockNAZWABLOKUDUŻA extends Block{    protected BlockNAZWABLOKUDUŻA(int par1)    {        super(par1, Material.rock);        this.setCreativeTab(CreativeTabs.tabBlock);    }}

Myślę, że tu nie ma co tłumaczyć. 

this.setCreativeTab(CreativeTabs.tabBlock);

Zakładka w Creative
 
Pozostało nam jeszcze dodać nazwę w grze. Otwieramy folder lang (dostęp do niego opisany jest w Spoiler Item) i otwieramy za pomocą Notepad++ plik en_US.lang i zjeżdżamy do linijki 544 i dodajemy:

tile.NAZWABLOKU.name=NAZWAWGRZE

A tu gotowa linijka:

tile.aluminium.name=Aluminium Block

Następnie uruchamiamy recompile.bat. Jeżeli nie wysypało nam błędami odpalamy startclient.bat
Oto efekt:
810191403548299750370.png
 
826951403548300750370.png

 

 

 

4. Jedzenie

 

 

Lecimy! Otwieramy plik Item.java i na końcu listy itemów dopisujemy

public static Item NAZWAITEMU = (new ItemFood(ID, MOC, 0.6F, false)).setUnlocalizedName("NAZWAITEMU").setTextureName("NAZWATEKSTURY");

Tłumaczymy:

NAZWAITEMU - nazwa bloku, ale nie w grze

NAZWATEKSTURY - NAZWATEKSTURY - nazwa tekstury bloku (wklejamy do jars-versions-1.6.4-1.6.4.jar otwieramy poprzez WinRar-assets-minecraft-blocks)

MOC - ilość głodu, która zostanie zmniejszona po zjedzeniu (1=pół 506231403976284750370.png)

 

Pozostało już dodać grafikę i nazwę w grze.

 

Następnie rekompilujemy i uruchamiamy startclient.bat.

Efekt:

468941403548301750370.png

Gotowy kod:

public static Item chips = (new ItemFood(200, 1, 0.6F, false)).setUnlocalizedName("chips").setTextureName("chips");

 

 

 

 

5. Przepisy craftingu

 

 

Ruszamy!

Otwieramy plik CraftingManager.java i na końcu listy dopisujemy:

this.addRecipe(new ItemStack(Item.NAZWAITEMU, ILOSC), new Object[] {"#", '#', Item.ITEMPOTRZEBNY});

Tłumaczymy:

NAZWAITEMU - item który stworzymy

ILOSC - ilość stworzonych przedmiotów

ITEMPOTRZEBNY - item potrzebny do stworzenia danego przedmiotu

 

Teraz najtrudniesza część. Aby ustawić, w których kratkach ma znajdować się dany item musimy się o to postarać. Posłużę się przykładem łóżka:

{"###", "XXX", '#', Block.cloth, 'X', Block.planks}

Po dwukropku mamy pierwszą linię czyli trzy wełny (#), następnie w drugiej lini mamy trzy deski (X). Wystarczy podejrzeć inne przepisy aby to zrozumieć.

 

Została nam już tylko rekompilacja i uruchamiamy startclient.bat.

 

Efekt:

907841403548301750370.png

Gotowy kod:

this.addRecipe(new ItemStack(Item.chips, 6), new Object[] {"#", '#', Item.bakedPotato});

 

 

 

6. Rudy

 

 

Zaczynamy!

Otwieramy Block.java i dopisujemy na końcu listy:

public static final Block NAZWABLOKU = (new BlockOre(ID)).setHardness(TWARDOŚĆ).setResistance(ODPORNOŚĆ).setStepSound(DŻWIĘK).setUnlocalizedName("NAZWABLOKU").setTextureName("NAZWATEKSTURY");

Tłumaczymy:

NAZWABLOKU - nazwa bloku, ale nie w grze

ID - ID bloku (polecam od 200 wzwyż)

TWARDOŚĆ - twardość bloku (dla przykładu Stone - 1.5F, Obsydian - 50.0F)
ODPORNOŚĆ - odporność na wybuchy, ogień (dla przykładu Planks  5.0F, Obsydian 2000.0F)
DŹWIĘK - dźwięk gdy chodzimy po bloku

NAZWATEKSTURY - nazwa tekstury bloku (wklejamy do jars-versions-1.6.4-1.6.4.jar otwieramy poprzez WinRar-assets-minecraft-blocks)

 

Z rudami jest o tyle fajnie, że jeżeli nie chcemy aby ona robiła coś specjalnego np. wylewała lawę po zniszczeniu itp. nie musimy tworzyć osobnego pliku BlockNAZWABLOKUDUŻA.java.

Następnie otwieramy BlockOre.java i w 18 linijce usuwamy na końcu:

this.blockID

Dopisujemy:
 

(this.blockID == Block.NAZWABLOKU.blockID ? Item.DROP.itemID : this.blockID)

Tłumaczymy:

NAZWABLOKU - nazwa rudy podana w Block.java

DROP - item, który ma dropić po zniszczeniu

 

Potem otwieramy BiomeDecorator.java i zjeżdżamy na sam koniec. Dopisujemy:

this.genStandardOre1(2, this.ZMIENNA, 0, 32);

ZMIENNA - na początku w pliku BiomeDecorator.java dodajemy zmienną bloku. Ja dodałem:

protected WorldGenerator rubyGen;

W tym wypadku rubyGen to właśnie ZMIENNA.

 

Potem dodajemy do funkcji BiomeDecorator (136 linia)

this.ZMIENNA = new WorldGenMinable(Block.NAZWABLOKU.blockID, 8);

Pozostało nam już tylko dodać grafikę i nazwę w grze.

Efekt:

778441403548302750370.png

628901403548302750370.png

637641403548303750370.png

449351403548303750370.png

Standardowo na koniec gotowy kod:

Block.java

public static final Block oreRuby = (new BlockOre(200)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setUnlocalizedName("oreRuby").setTextureName("ruby_ore");

BlockOre.java

(this.blockID == Block.oreRuby.blockID ? Item.ruby.itemID : this.blockID)

BiomeDecorator.java

protected WorldGenerator rubyGen;
this.rubyGen = new WorldGenMinable(Block.oreRuby.blockID, 8);
this.genStandardOre1(20, this.rubyGen, 0, 64);

 

 

 

 

7. Przepisy przepalania

 

 

Lecimy!

Otwieramy FurnaceRecipes.java i dopisujemy:

this.addSmelting(TYPD.PRZEDMIOT1.TYPMID, new ItemStack(TYPD.PRZEDMIOT2), EXP);

Tłumaczymy:

TYPD - jeden z dwóch typów - Block lub Item (obowiązkowo z dużej litery). Jeżeli PRZEDMIOT1 jest blokiem dajemy Block, a jeżeli itemem dajemy Item

PRZEDMIOT1 - przedmiot, który ma zostać przepalony

TYPM - wpisujemy to samo co w TYPD, ale z małej litery

PRZEDMIOT2 - przedmiot, który ma powstać z przepalania

EXP - ilość doświadczenia, które dostaniemy po przepaleniu

 

Efekt:

770611403548303750370.png

212901403548304750370.png

Gotowy kod:

this.addSmelting(Item.rottenFlesh.itemID, new ItemStack(Item.leather), 0.1F);

 

 

 

 

8. Własna płyta

 

 

Lecimy!

Otwieramy Item.java i dopisujemy do naszej listy:

public static Item NAZWAPŁYTY = (new ItemRecord(ID, "NAZWAPLIKU")).setUnlocalizedName("NAZWAPŁYTY").setTextureName("NAZWATEKSTURY");

Tłumaczymy:

NAZWAPŁYTY - nazwa płyty, ale nie w grze

ID - ID płyty (polecam od 2015 wzwyż)

NAZWAPLIKU - nazwa pliku z piosenką, który wklejamy do jars-assets-virtual-legacy-records (koniecznie w formacie .ogg)

NAZWATEKSTURY - nazwa tekstury płyty

Efekt:

756871403698097750370.png

Na koniec standardowo gotowy kod:

public static Item recordElectro = (new ItemRecord(2012, "electro")).setUnlocalizedName("record").setTextureName("record_electro");

 

 

 

 

9. Własny materiał z rudy

 

 

Zaczynamy!

Otwieramy dwa pliki - EnumToolMaterial.java i EnumArmorMaterial.java. W pierwszym z nich, który odpowiedzialny jest za materiał, z którego wytwarzane są narzędzia, w typie ENUM w przed ostatniej linijce dodajemy:

NAZWA(POZIOM, ILOŚĆ, SIŁA, PRZECIWNIK, ENCHANT),

Tłumaczymy:

NAZWA - nazwa materiału (koniecznie z dużej litery)

POZIOM - poziom materiału. Dla przykładu drewno ma 0, a diament 3.

ILOŚĆ - ilość użyć

SIŁA - siła z jaką wykopujemy bloki (w formacie 0.0F)

PRZECIWNIK - ilość życia jaką zabieramy przeciwnikowi (w formacie 0.0F)

ENCHANT - łatwość enchantu - im więcej tym łatwiej

 

Następnie na samym końcu usuwamy 0 i dodajemy:

(this == NAZWA ? Item.PRZEDMIOT.itemID : 0)

NAZWA - nazwa materiału. Ta którą podaliśmy wcześniej (koniecznie z dużej litery)

PRZEDMIOT - item, z którego powstają narzędzia

 

Teraz otwieramy EnumArmorMaterial.java (odpowiedzialny za materiał, z którego tworzymy zbroję) i w typie ENUM w przedostatniej linijce dodajemy:

NAZWA(WYTRZYMAŁOŚĆ, new int[]{H, P, L, B}, ENCHANT),

Tłumaczymy:

NAZWA - nazwa materiał€ (koniecznie z dużej litery)

WYTRZYMAŁOŚĆ - wytrzymałość zbroji (diamentowa ma 33, skórzana ma 5)

H - wytrzymałość hełmu (1 = pół 208241403972308750370.png)

P - wytrzymałość napierśnika (1 = pół 208241403972308750370.png)

L - wytrzymałość spodni (1 = pół 208241403972308750370.png)

B - wytrzymałość butów (1 = pół 208241403972308750370.png)

ENCHANT - łatwość enchantu - im więcej tym łatwiej

 

Teraz na końcu usuwamy 0 i dopisujemy:

(this == NAZWA ? Item.PRZEDMIOT.itemID : 0)

NAZWA - wpisujemy nazwą wpisaną w typie ENUM

PRZEDMIOT - item, z którego powstanie zbroja

 

Gotowy kod:

EnumToolMaterial.java

RUBY(2, 500, 7.0F, 3.0F, 18),
(this == RUBY ? Item.ruby.itemID : 0)

EnumArmorMaterial.java

RUBY(13, new int[]{3, 6, 4, 2}, 25),
(this == RUBY ? Item.ruby.itemID : 0)

 

 

 

 

10. Narzędzia

 

 

Lecimy!

Otwieramy Item.java i do naszej listy dodajemy:

 

Łopata

public static Item NAZWAŁOPATY = (new ItemSpade(ID, EnumToolMaterial.MATERIAŁ)).setUnlocalizedName("NAZWAŁOPATY").setTextureName("NAZWATEKSTURY");

Kilof

public static Item NAZWAKILOFA = (new ItemPickaxe(ID, EnumToolMaterial.MATERIAŁ)).setUnlocalizedName("NAZWAKILOFA").setTextureName("NAZWATEKSTURY");

Siekiera

public static Item NAZWASIEKIERY = (new ItemAxe(ID, EnumToolMaterial.MATERIAŁ)).setUnlocalizedName("NAZWASIEKIERY").setTextureName("NAZWATEKSTURY");

Motyka

public static Item NAZWAMOTYKI = (new ItemHoe(ID, EnumToolMaterial.MATERIAŁ)).setUnlocalizedName("NAZWAMOTYKI").setTextureName("NAZWATEKSTURY");

Tłumaczymy:

NAZWAŁOPATY - nazwa łopaty, ale nie w grze

NAZWAKILOFA - nazwa kilofa, ale nie w grze

NAZWASIEKIERY - nazwa siekiery, ale nie w grze

NAZWAMOTYKI - nazwa motyki, ale nie w grze

ID - ID itemu (polecam od 200 wzwyż)

MATERIAŁ - materiał, który dodaliśmy w EnumToolMaterial.java w części dziewiątej.

NAZWATEKSTURY - nazwa tekstury

 

Pozostało nam dodać nazwę w grze i tekstury:

Efekt:

788611403974041750370.png

359171403974042750370.png

Gotowy kod:

Łopata

public static Item shovelRuby = (new ItemSpade(204, EnumToolMaterial.RUBY)).setUnlocalizedName("shovelRuby").setTextureName("ruby_shovel");

Kilof

public static Item pickaxeRuby = (new ItemPickaxe(205, EnumToolMaterial.RUBY)).setUnlocalizedName("pickaxeRuby").setTextureName("ruby_pickaxe");

Siekiera

public static Item axeRuby = (new ItemAxe(206, EnumToolMaterial.RUBY)).setUnlocalizedName("hatchetRuby").setTextureName("ruby_axe");

Motyka

public static Item hoeRuby = (new ItemHoe(207, EnumToolMaterial.RUBY)).setUnlocalizedName("hoeRuby").setTextureName("ruby_hoe");

 

 

 

 

11. Broń

 

 

Startujemy!

Otwieramy Item.java i dodajemy:

public static Item NAZWA = (new ItemSword(ID, EnumToolMaterial.MATERIAŁ)).setUnlocalizedName("NAZWA").setTextureName("NAZWATEKSTURY");

Tłumaczymy:

NAZWA - nazwa itemu, ale nie w grze

ID - ID itemu (polecam od 200 wzwyż)

MATERIAŁ - materiał jaki dodaliśmy w EnumToolMaterial.java w dziewiątej części.

NAZWATEKSTURY - nazwa tekstury

 

Efekt:

503341403974758750370.png

Gotowy kod:

public static Item swordRuby = (new ItemSword(208, EnumToolMaterial.RUBY)).setUnlocalizedName("swordRuby").setTextureName("ruby_sword");

 

 

 

 

12. Rośliny typu kwiatek

 

 

Lecimy!

Otwieramy Block.java i dodajemy do naszej listy:

public static final BlockFlower NAZWAKWIATU = (BlockFlower)(new BlockFlower(ID)).setHardness(0.0F).setStepSound(soundGrassFootstep).setUnlocalizedName("NAZWAKWIATU").setTextureName("NAZWATEKSTURY");

Tłumaczymy:

NAZWAKWIATU - nazwa kwiatu, ale nie w grze (najlepiej z małej litery)

ID - ID kwiatu (polecam od 200 wzwyż)

NAZWATEKSTURY - nazwa tekstury

 

Nasz kwiat już jest w grze, ale nie możemy go wstawić do doniczki. Z tym też sobie poradzimy. Otwieramy BlockFlowerPot.java i w funkcji

public static ItemStack getPlantForMeta(int par0)

dodajemy

case LICZBA:
return new ItemStack(Block.NAZWAKWIATU);

A w funkcji

public static int getMetaForPlant(ItemStack par0ItemStack)

dodajemy

else if (var1 == Block.NAZWAKWIATU.blockID)
{
return LICZBA;
}

Tłumaczymy:

LICZBA - spójrzmy trochę wyżej. Ostatni case to 11, więc następny będzie 12 itd.

NAZWAKWIATU - nazwa kwiatu wpisana w Block.java

Teraz otwieramy RenderBlocks.java i zaraz po

case 8:
var17 = Block.mushroomBrown;

dodajemy

case LICZBA:
var17 = Block.NAZWAKWIATU;

Tłumaczenie jest takie samo jak wyżej.

Rekompilujemy i uruchamiamy startclient.bat.

Efekt:

797261404288865750370.png

907781404288865750370.png

Na koniec gotowy kod:

Block.java

public static final BlockFlower plantBlack = (BlockFlower)(new BlockFlower(205)).setHardness(0.0F).setStepSound(soundGrassFootstep).setUnlocalizedName("plantBlack").setTextureName("flowerBlack");

BlockFlowerPot.java

case 12:
return new ItemStack(Block.plantBlack);
else if (var1 == Block.plantBlack.blockID)
{
return 12;
}

RenderBlocks.java

case 12:
var17 = Block.plantBlack;

 

 

 

 

Plany:


Postaram się dodawać dwie kolejne pozycje co weekend. Planuję dodać:
Itemy
Bloki

Bloki z inną teksturą po każdej stronie
Przepisy craftingu
Przepisy przepalania
Zbroje

Narzędzia

Broń

Broń dystansowa (może)
Jedzenie
Jedzenie z efektem
Rudy
Rośliny

     - typu trzcina

     - typu zboże

     - typu marchewka, ziemniak

     - typu kwiatek

Własny materiał z rudy

Własne podłoże pod rośliny

Własne paliwo do pieca
Biomy

Własna płyta z własną piosenką ^^
Moby (mam problemy z modelami)

 

 

Ważne lokalizacje

 

 

Nazwa w grze - większość nazw bloków, itemów itp. znajdziemy otwierając 1.6.4.jar znajdujący się w folderze versions poprzez np. WinRAR. Następnie otwieramy folder assets. W nim znajdziemy folder lang. W nim znajdują się wszystkie tłumaczenia.

 

 

 

 

Sam znam Javę na niezbyt wysokim poziomie i ogarniam to wszystko na bieżąco, także dla chcącego nic trudnego. Mam nadzieję, że lista się powiększy. W razie problemów proszę pisać w komentarzu. Postaram się pomóc.

 

Jeżeli czegoś nie ma w planach to znaczy, że tego nie będzie w poradniku. Mimo wszystko swoje propozycje piszcie w komentarzach.

Informatyka. Synu.

  • 2 miesiące temu...
Opublikowano

Zrób teraz GUI i bloki wybuchające proszę.

 

Chcę robić moda i to mi jest najbardziej potrzebne.

 

 

Z góry dzięki.

 

 

(przydały by się też szybko potki i bloki wywołujące polecenie po stanięciu: /effect @p ...).

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

Dekompilowanie to  tragedia z czekaniem.

poza tym czasem nie cały kod sie poprawnie zdekompiluje

AVERNUS MINECRAFT RPG - SZUKAJ NAS W GOOGLE

 

28kht7s.png

  • 1 miesiąc temu...
Opublikowano

poza tym czasem nie cały kod sie poprawnie zdekompiluje

Tak. W niektórych plikach z kodem znajdują się rożne "field'y", ale jeżeli ktoś pisze na Forge, to nie ma z tym problemów.

Informatyka. Synu.

Opublikowano

Mam problem nie mogę dodać nazwy do moich rzeczy. Kiedy dodaje nazwę np: tile.bloodBlock.name=Blood Block nie mogę uruchomić gry. Bez nazwy mi działają.

Opublikowano

Mam problem nie mogę dodać nazwy do moich rzeczy. Kiedy dodaje nazwę np: tile.bloodBlock.name=Blood Block nie mogę uruchomić gry. Bez nazwy mi działają.

Sprawdź w Block.java w funkcji

.setUnlocalizedName()

czy w nawiasie masz podane

"bloodBlock"

Czyli ma to wyglądać mniej więcej tak:

.setUnlocalizedName("bloodBlock")

Pozdrawiam.

Informatyka. Synu.

Opublikowano

Dalej nic mam w Block.java tak:
public static final Block bloodBlock = (new BlockBlood(180)).setHardness(5.0F).setStepSound(soundMetalFootstep).setUnlocalizedName("bloodBlock").setTextureName("blood_block");
a w en_US.java:
tile.bloodBlock.name=Blood Block
Przekopiowałem też gotowy kod i dodałem teksturę i też nic.

Opublikowano

W 1.6.4.jar usunąłeś META-INF?
Spróbuj skopiować w en_US.lang ten tile co jest wyżej, czyli quartzStairs. Wklej go i zmień wartości.

Jeżeli to nie pomoże wklej loga z błędami.

Informatyka. Synu.

Opublikowano

Zrób GUI i obrażenia jak się wejdzie na kwiatka.

 

Jeżeli chodzi o GUI to nad tym pracuję, ale nic nie obiecuję. Obrażenia dodam niedługo. Pozdrawiam.

Informatyka. Synu.

  • 4 tygodnie później...
Opublikowano

Witam, skończyłem robić wszystkie bloki i itemy. Jak teraz wszystko "spakować" do jednego pliku .jar i gdzie można ustawić nazwę i wersję moda?

PS: Czy to jest na Forge?

mca.png

Opublikowano

Witam, skończyłem robić wszystkie bloki i itemy. Jak teraz wszystko "spakować" do jednego pliku .jar i gdzie można ustawić nazwę i wersję moda?

PS: Czy to jest na Forge?

Witam. W folderze uruchom reobfuscate.bat. Gdy skończy się pakowanie wejdź do folderu reobf. Następnie spakuj pliki tam się znajdujące do archiwum. To nie jest na Forge, jednak jest to takie programowanie jak programuje Mojang.

Informatyka. Synu.

Opublikowano

Nie ma z tym problemu dopóki nie wyjdzie nowa wersja Minecraft'a. Wtedy np. Mojang dodaje nowe itemy itp. o takim samym ID jak w naszych modach. W tym wypadku Usuwamy z Minecraft'a itemy dodane przez Mojang,a w zamian dodajemy nasze, jednak tego nie chcemy. Musimy więc aktualizować nasze itemy, bloki itp, by nie blokował innym.

 

Chodzi po prostu o to by nasze itemy i bloki nie kolidowały z tymi Mojangowymi.

Informatyka. Synu.

Opublikowano

Mówiłeś mi, że gdybym chciał rozprzestrzeniać swoje modyfikacje w Internecie, potrzebuję Forge'a. Dodasz poradnik instalacji do Forge'a 1.6.4?

mca.png

Opublikowano

Oczywiście jeżeli chcesz rozprzestrzeniać swoje modyfikacje w Internecie, nie wystarczy zainstalowanie Forge... Musisz znać jego język, metody, funkcje itp. Niestety sam go nie znam, więc dużo Ci pod tym względem nie pomogę.

Informatyka. Synu.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...