Vodič "Od A do Ž" Stvaranje dodatka za Minecraft. Programi za izradu modifikacije za Minecraft Uvod u modificiranje Minecrafta

Kako napraviti mod za Minecraft?

Da biste kreirali modove u Minecraftu, morate imati barem osnovno znanje o radu s aplikacijama i programiranju općenito.

Modove za Minecraft možete kreirati pomoću API-ja ili bez njega. API je sučelje za programiranje aplikacija koje vam omogućuje rad s gotovim klasama, funkcijama, procedurama, strukturama i konstantama za korištenje u drugim programima. Najpopularniji API za Minecraft je Minecraft Forge. Korištenje Forgea za kreiranje modova u igri zahtijeva korištenje ovog API-ja za samu igru, što značajno komplicira sam gameplay, ali u isto vrijeme omogućuje instaliranje aplikacija bez sukoba s vašim modifikacijama i s modovima drugih igrača. To je nemoguće postići bez API-ja.

Priprema za stvaranje modova u igri je sljedeća:

  1. Preuzmite najnoviju verziju Jave.
  2. Instalirajte Java SE Development Kit.
  3. Preuzmite Eclipse IDE za Java Developers i postavite njegovu kopiju na svoju radnu površinu.
  4. Preuzmite Minecraft Forge.
  5. Premjestite sve programe u jednu mapu na radnoj površini i pokrenite install.cmd.
  6. Nakon pokretanja Eclipsea, navedite mapu koju ste prethodno stvorili kao radni prostor.

Nakon toga možete nastaviti izravno na stvaranje moda. Morat ćete proći kroz sljedeće korake:

  1. Stvaranje osnovne datoteke koja navodi naziv, ID i verziju modifikacije;
  2. Izrada bloka;
  3. Stvaranje kapljice;
  4. Generiranje blokova;
  5. Stvaranje višenamjenskih struktura;
  6. Višeblok strukture;
  7. Izrada predmeta;
  8. Izrada alata itd.

Počevši od malih nogu, postupno ćete razumjeti osnovne principe stvaranja modova za Minecraft, a možete čak dodati i vlastite modove na poslužitelj kako biste ih pokazali svojim prijateljima. Ako stvaranje modova još nije na vama, pročitajte članak

Mnogi igrači sanjali su o programu koji bi mogao stvarati izmjene. Zahvaljujući programeru Pilo, svatko može preuzeti MCreator za Minecraft 1.7.2 i 1.7.10 i početi stvarati vlastite modifikacije bez dubokog znanja programiranja. Stvorite nove blokove, stvari, postignuća, nove vrste postojećih blokova, rulje, biome, hranu, alate, biljke, automobile i još mnogo toga. Bilo koja ideja može se lako implementirati pomoću programa MCreator 1.7.10/1.7.2.

Stvorite različite vrste modifikacija


Ovaj vam program omogućuje stvaranje raznih vrsta izmjena, uključujući slojeve (kao u modu mini karte), automobile, strukture, dimenzije, setove alata, oružje (mačevi, puške) i više.

Intuitivno sučelje


MCreator nudi prikladan način za postavljanje stavki u izbornik. Programer samo treba premjestiti stvari i elemente na radnu površinu pomoću miša.

Izrada recepata i kapi


Pišite recepte i poklone jednako jednostavno kao i izrada u igri. Koristite filtre za pretraživanje ogromnog popisa stvari u Minecraftu. MCreator može eksportirati slike recepata tako da se mogu postaviti na stranicu.

Za iskusne programere


Iskusni programeri će voljeti mogućnost uređivanja izvornog koda modifikacije u sučelju jednostavnom za korištenje. Uređivač programa MKreator ima isticanje sintakse, automatsko dovršavanje i druge stvari koje su ugodne programeru. Podržana je integracija s Eclipse.

Ovaj članak opisuje proces stvaranja izmjena za Minecraft pomoću Forgea i Eclipsea. Za izradu jednostavnih modifikacija ne morate biti profesionalac, ali barem osrednje razumijevanje principa programskog jezika Java je poželjno. Ako naiđete na bilo kakva pitanja ili probleme dok radite izmjene koje ovdje nisu pokrivene, molimo vas da ih objavite na stranici za razgovor.

Tablica spremnosti
Lekcija 1.6+ 1.7+
Blok Spreman Spreman
Artikal Spreman Spreman
Zanat Spreman Spreman
Kompilacija Spreman Spreman
Generacija Nije planirano Spreman
Proxy i instanca Nije planirano Spreman
mob Nije planirano Spreman
Blokovi s modelom Nije planirano Može biti
Dodati. Lekcije Ukupno: 2 Ukupno: 12

Prvi koraci

Prvo napravimo najvažniju stvar: instalirajte Javu i Eclipse. Bez obzira na verziju Minecrafta za koju želite stvoriti mod, ovi su koraci isti.

Java JDK

Najvažnija stvar za pisanje bilo čega u Javi su, naravno, same Java biblioteke.

Možete ih preuzeti s web stranice Oracle. Idite na ovu stranicu i kliknite ikonu Java na lijevoj strani. Pomaknite se prema dolje na stranici koja se malo otvori, odaberite da se slažete s licencnim ugovorom (Accept License Agreement), te na dnu prve liste odaberite stavku koja odgovara vašem operativnom sustavu i preuzmite. Nakon preuzimanja jednostavno instalirajte klikom na Dalje. Nakon instalacije morate postaviti instalacijsku stazu na varijable okruženja Windows. Da biste to učinili, idite na izbornik Svojstva računala (⊞ Win + PauseBreak ili Moje računalo -> Svojstva -> Napredne postavke sustava -> Varijable okruženja). Pronađite sistemsku varijablu Path, označite je i kliknite Uredi. Na samom kraju retka Vrijednosti dodajte stazu do JDK/bin odvojenu točkom i zarezom, na primjer, C:\Program Files\Java\jdk1.7.0_45\bin . Zatim kliknite OK tri puta.


Danas ovaj put ponovno otvaram seriju članaka. Neću ga napustiti i čak ću odgovoriti na vaše komentare. Pa s riječi na djela. Ići!
Priprema

Za pisanje naših dodataka trebat će nam:
  • Eclipse Java okruženje za razvoj aplikacija;
  • Spigot Api: https://hub.spigotmc.org/nexus/content/groups/public/org/spigotmc/spigot-api/.
Trebat će vam i osnovno poznavanje Jave. Ako ih nema, onda su ovdje linkovi za "podizanje vaše vještine":
  • Osnove Jave za početnike
    Stranica je dizajnirana za one koji tek počinju učiti Javu.
  • Vodiči programiranja u Javi (za početnike).
    Video tutorial o Javi, dizajniran za početnike (počeo sam s njim).
  • Java referenca
    Ovo bih nazvao Java varalicom
  • Java stručnjak
    I neka vas ime ne plaši. Ovdje možete pronaći mnogo primjera rješenja za ove ili
    druge poslove.
Instaliranje i konfiguriranje Eclipsa
Ako ste već upoznati s Eclipseom ili imate drugi IDE, preskočite ovaj odjeljak.

Ne bi trebalo biti problema s instaliranjem Eclipsea: samo ga trebate raspakirati u bilo koju mapu i pokrenuti. Odmah nakon toga, Eclipse će vas pitati da naznačite koji radni prostor sada otvoriti. Ovo je mapa u koju će se spremati svi izrađeni projekti, a gdje ćete je smjestiti je vaša osobna odluka. Ako ti nije stalo, ostavi sve kako jest. Ako iznenada poželite promijeniti radni prostor, ne brinite: svaki put kada ga pokrenete, Eclipse će vas ponovno pitati za radni prostor. Možete stvoriti koliko god želite ovih prostora, a svaki se može drugačije konfigurirati, za određene svrhe. Na primjer, imam 2 radna prostora: za pisanje uobičajenih java aplikacija i za pisanje dodataka za spremnike. Ako vam iznenada dosadi ova poruka, postoji potvrdni okvir "Koristi ovo kao zadano i ne pitaj više", koji vam omogućuje da postavite radni prostor kao zadani.+

Čim se odlučite za izbor lokacije i Eclipse opterećenja, vidjet ćemo karticu s pozivnicom... koju odmah zatvaramo. Ne trebamo je.

Sada vidimo radni prostor samog Eclipsa. Od svega ovoga trebamo samo sljedeće ploče:

  • Istraživač paketa
    Ovdje će biti prikazani vaši projekti, paketi (više o njima kasnije) i sve vrste datoteka za naše buduće dodatke.
  • Problemi
    Rijetko ćemo koristiti ovu ploču (ako je ikada dobijemo), ali vrijedi razgovarati o njoj. Ovdje će se prikazati pogreške napravljene u kodu, kao i poruke upozorenja o mogućim pogreškama ili netočnostima.
  • Obris
    Ovdje će se prikazati izravna navigacija kroz java kod otvorenog koda.
Zadnje 2 opisane ploče mogu se potpuno srušiti, jer Rijetko ćemo ih koristiti.

Radno mjesto je gotovo spremno. Sve što preostaje je označiti još 2 kućice u postavkama.

Idite na izbornik Prozor -> Postavke, dalje uz stablo Općenito -> Uređivač -> Uređivači teksta i potvrdite okvir "Prikaži brojeve redaka" kako biste omogućili prikaz numeriranja redaka. Sada idite na Općenito -> Radni prostor i u grupi "Kodiranje tekstualne datoteke" postavite kodiranje na UTF-8, čime postavljate zadano kodiranje.

Instalacija i konfiguracija su gotovi. Sada ću objasniti kako stvoriti novi projekt za dodatak. To se može učiniti na jedan od 3 načina:

Pred nama će se otvoriti prozor New Java Project. U nazivu projekta navodimo naziv našeg projekta

Pritisnite Dalje.
U prozoru koji se pojavi idite na karticu Libraries, kliknite gumb Add External JARs i odaberite preuzeti Bukkit API

Pritisnite Završi.

S lijeve strane, u Package Exploreru, pojavljuje se naš projekt s mapom src u kojoj će biti pohranjeni naši izvorni kodovi. Kreirajmo sada novu klasu. To se radi na potpuno isti način kao i kod Java projekta.

U prozoru New Java Class potrebni su nam samo sljedeći stupci:

  • Paket
    označava paket u kojem će biti pohranjena naša klasa. Format imena trebao bi biti otprilike ovakav: ru.dmitriymx.bukkit.tutorial.
    Ukratko i ukratko, paketi u Javi su imenski prostor ili "virtualne mape" u koje su smještene klase. Više o tome možete pročitati ovdje: , , .
  • Ime
    navedite naziv klase (za mene je to DmxFirstPlugin)
Ostavite sve ostale stavke kakve jesu i kliknite Završi.

Sada prijeđimo izravno na kod.
Pisanje jednostavnog dodatka
Čim kreiramo novu klasu, pred očima nam se pojavljuje gotov prazan predložak

Za sada je to samo prazan razred koji je apsolutno beskoristan u svakodnevnom životu. Popravit ćemo ovo. Promijenimo ovo

na ovo

Eclipse će nam istaknuti JavaPlugin, ukazujući na grešku u kodu. Prijeđete li mišem preko tako podcrtanog koda, otvorit će vam se prozor s opisom greške i kako je riješiti. U ovom slučaju, moramo uvesti klasu iz Bukkit API-ja, za što odaberemo stavku “Import ‘JavaPlugin’(org.bukkit.plugin.java)”

Odmah primjećujemo kako je linija napisana iznad našeg koda

Malo teorijskog materijala. Dodaci imaju 3 glavne metode: onEnable(), onDisable() i onLoad(). Prva dva su odgovorna za omogućavanje i onemogućavanje dodatka, a posljednji se aktivira kada se dodatak izravno učita u memoriju poslužitelja. Slijedi da se prvo izvršava onLoad, ali sam dodatak počinje raditi tek nakon što se onEnable pozove sa strane poslužitelja. Kada se poslužitelj isključi ili ponovno pokrene, poziva se metoda onDisable.

Sredili smo “ulazno-izlazne točke”. Napišimo sada nešto više-manje izvodljivo. Skratimo opći kod klase na sljedeći oblik:

tko ne vidi drugi dio:
Ono o čemu smo upravo pisali je gotov dodatak. Sve što radi je pisati u chatu o dolasku i odlasku igrača na server. Njegov ćemo rad razumjeti redom (kako inače?).
Prvo, dopustite mi da obratim pozornost na redak deklaracije klase. Kao što vidite, proširenje Slušatelj je dodano našoj klasi. Bez zalaženja u džunglu Jave, reći ću to jednostavnije: određivanjem ovog proširenja, time proširujemo opseg klase ne samo kao dodatka (JavaPlugin), već i kao rukovatelja događajima (Listener). Ali u metodi onEnable() registriramo našu klasu na poslužitelju kao rukovatelja događajima (ovo je referenca na samu sebe, u slučaju da je netko zaboravio).

Sljedeća su naša 2 rukovatelja događajima onJoin() i onQuit(). Prvi je odgovoran za slučaj ulaska igrača na server, a drugi za izlazak. Pomoću metode event.getPlayer().sendMessage() možemo poslati poruku igraču koji je izazvao ovaj događaj (u našem slučaju igraču koji se prijavio). Statička klasa ChatColor pohranjuje konstante boja za bojanje. Mislim da se već iz primjera vidi kako ga koristiti. Također, oba naša procesora obavještavaju druge igrače na poslužitelju o događajima koji su se dogodili, ali to rade na različite načine. U onJoin(), pomoću metode event.setJoinMessage(), mijenjamo uobičajenu poruku "Igrač se pridružio igri" bilo kojom drugom. A u onQuit() učinili smo nešto drugačije (na primjer u svrhe): uklonili smo izlaz izlazne poruke i prijavili to putem metode getServer().broadcastMessage(), koja jednostavno šalje navedenu poruku svim igračima na poslužitelju. +

Sve što je preostalo je napisati važnu datoteku plugin.yml i sve to zapakirati u jar datoteku.

Plugin.yml je datoteka opisa dodatka. Određuje naziv dodatka, glavnu klasu, opis i koje naredbe treba registrirati za dodatke (više o tome kasnije), itd. U našem slučaju, datoteka bi trebala izgledati ovako:

Oh, zaboravio sam vam reći gdje bi se ova datoteka trebala nalaziti. Desnom tipkom miša kliknite mapu src u PackageExploreru i odaberite Datoteka iz izbornika Novo. U polje Naziv datoteke upišite plugin.yml i kliknite Završi. U uređivaču teksta koji se otvori napišite što sam gore naveo. Spremamo sve i prelazimo na zadnju fazu: pakiranje.

Desni klik na mapu src -> Izvoz. U stablu mapa otvorite Java i odaberite JAR datoteku te kliknite Dalje. Od sitnica ostavljamo samo “Izvezi generirane klasne datoteke i resurse” i “Komprimiraj sadržaj JAR datoteke”. U polju JAR datoteke označavamo gdje ćemo spremiti rezultirajući dodatak. Nakon što kliknete Završi, možete staviti dodatak u mapu dodataka, pokrenuti poslužitelj i provjeriti njegov rad.

Vidiš li? Sasvim je jednostavno. Vježbom ćete steći više iskustva i moći ćete napraviti cool pluginove, čak i one legendarne kao što su WorldEdit i WorldGuard.
Izvor


Nema potrebe brisati META-INF u minecraft.jar i minecraft_server.jar
1. Napravite mapu (Na primjer: MCP Forge) i tamo raspakirajte sadržaj arhive s MCP-om.
2. Kopiraj mapu bin i resources iz klijenta u mapu ../MCP Forge/jars/, sa servera nam treba samo minecraft_server.jar.
3. Raspakirajte arhivu s Forge-src u mapu MCP Forge
4. Otvorite mapu ../MCP Forge/forge/ i pokrenite datoteku install.cmd. Čekamo završetak dekompilacije..
(P.S. Ako želite da imate već gotov MCP s Forgeom, npr. ako ste ga slučajno izbrisali ili nešto drugo, onda: Kada dekompilacija završi, pokrenite igru ​​i pustite je da preuzme lib, a zatim dodajte ovaj MCP Forge u arhivu, na primjer ovako (mcp Forge 1.5.1)
5. “Instalirajte” i pokrenite Eclipse, tijekom pokretanja bit ćete “pitani” za mapu s projektom, odredite stazu: ../MCP Forge/eclipse/
6. Dakle, otvorili smo projekt, sada (Obično s lijeve strane nalazi se Package explorer) gledamo koju biblioteku "jede" (U prozoru Package explorer "otvorite Minecraft projekt" i ako postoji linija “JRE System Library”, onda je sve u redu, ali ako je linija “JRE System Library”, zatim desnom tipkom miša (Right-click), odaberite Properties, zatim se otvara prozor u kojem je odabrano okruženje za izvršavanje, odaberite JavaSE-1.7 u njemu i kliknite U redu.
7. Dakle, pripreme su spremne.

Kako možete početi pisati mod?

Prvo moramo napraviti “bazu”, odnosno glavnu “mapu” u kojoj će biti pohranjena naša “baza” i sve ostalo.
1. Idite na Eclipse, pogledajte mapu Minecraft u Package Exploreru, otvorite je i desnom tipkom miša kliknite mapu src, odaberite New->Package. U otvorenom prozoru, u retku Naziv, označavamo naziv mape u kojoj će sve biti pohranjeno (Na primjer, uzmite: mods.testmod.src) i kliknite Ok.
2. Kliknite desnom tipkom miša na našu mapu (mods.testmod.src), zatim New -> Class. U retku Naziv označite naziv naše datoteke (Na primjer: TestModBase) i kliknite Završi.
3. Promijenite putanju, ali nemojte uklanjati modove, ovako, na primjer mods.NewItemMod.src.
4. U novim verzijama trebate uvesti “Puno” svega, da to učinite brže u Eclipseu pritisnite “ctrl + shift + o”, i brzo će sve uvesti, a ako se pojavi prozor onda odaberite uvoz koji vam je potreban.
5. Ako ne radite u Eclipseu, onda će vam biti puno teže, pa je bolje prijeći na njega, pokazat će vam gdje je greška, i koji su importi potrebni, a nećete postavljati glupa pitanja u komentarima.

paket mods.testmod.src;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.common.network.NetworkMod.SidedPacketHandler;
import cpw.mods.fml.common.SidedProxy;
@Mod (modid = "TestMod", name = "Test Mod", verzija = "0.0.1")
@NetworkMod(clientSideRequired = true, serverSideRequired = false, versionBounds = "1.0.0")

javna klasa TestModBase (

@Instanca("TestModID")
javna statička instanca TestModBase;

@U tome

{
}

@PreInit
javni void preLoad(FMLPreInitializationEvent događaj)
{
}

@PostInit
javni void postLoad(FMLPostInitializationEvent događaj)
{
}
}


U našoj datoteci TestModBase
Nakon natpisa:
javna klasa TestModBase (
Unesite ovaj redak:
public static final Block testBlock = new TestBlock(2020).setUnlocalizedName("testBlock");
Raščlanjivanje:
public static final Block "testBlock" - testBlock naziv našeg bloka u kodu (ne u igri)
new TestBlock(2020) - TestBlock naziv našeg bloka u kodu (ne u igri), 2020 ID bloka
setUnlocalizedName("testBlock") - ("testBlock") naziv našeg bloka u kodu (ne u igrici)
Nakon natpisa:
@U tome
javno prazno opterećenje (događaj FMLInitializationEvent)
{

Unesite ovaj redak:
GameRegistry.registerBlock(testBlock);
LanguageRegistry.addName(testBlock, "Testni blok");

Raščlanjivanje:
(testBlock) - naziv našeg bloka u kodu (ne u igri)
(testBlock, "Test Block") - testBlock je naziv našeg bloka u kodu (ne u igri), "Test Block" je naziv našeg bloka u igri.
Napravite datoteku testBlock i u nju unesite sljedeći kod:
paket mods.testmod.src;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;

javna klasa TestBlock proširuje Block (

javni TestBlock(int par1)
{
super(par1, Material.ground);//Materijal
this.setCreativeTab(CreativeTabs.tabTools);//Dodaj u oglas
}
//Registrirajte teksturu
@Nadjačaj

{
}
}


U našoj datoteci TestModBase
Nakon natpisa:
javna klasa TestModBase (
Unesite ovaj redak:
public static Item testItem = new TestItem(2021).setUnlocalizedName("testItem");
Raščlanjivanje:
public static final Item "testItem" - testItem je naziv naše stavke u kodu (ne u igri)
new TestItem(2021) - TestItem naziv našeg artikla u kodu (ne u igri), 2021 ID artikla
setUnlocalizedName("testItem") - ("testItem") naziv našeg artikla u kodu (ne u igrici)
Nakon natpisa:
@U tome
javno prazno opterećenje (događaj FMLInitializationEvent)
{

Unesite ovaj redak:
LanguageRegistry.addName(testItem, "Test Item");
Raščlanjivanje:
(testItem, "Test Item") - testItem je naziv našeg predmeta u kodu (ne u igri), "Test Item" je naziv našeg predmeta u igri.
Napravite datoteku testItem i u nju unesite sljedeći kod:
paket mods.testmod.src;

import net.minecraft.item.Item;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;

javna klasa TestItem proširuje stavku
{
javni TestItem(int par1)
{
super(par1);
setCreativeTab(CreativeTabs.tabTools);
}

//Registracija teksture za stavku malo se razlikuje od bloka
@Nadjačaj
javni void registerIcons(IconRegister par1IconRegister)
{
}
}


@Nadjačaj
javni void registerIcons(IconRegister par1IconRegister)
{
this.blockIcon = par1IconRegister.registerIcon("testmod:testBlock");
}

("testmod:testBlock"), testmod je "naziv mape" u kojoj će biti "mapa s teksturom", testBlock je naziv naše teksture. Ovo je naš položaj teksture:

\Tutorial Forge 1.5.1\mcp744\src\minecraft\mods\testmod\textures\blocks\testBlock.png


@Nadjačaj
javni void registerIcons(IconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon("testmod:testItem");
}

("testmod:testItem"), testmod je "naziv mape" u kojoj će biti "mapa s teksturom", testItem je naziv naše teksture. Ovo je naš položaj teksture.