Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Vývoj modifikací, externích nástrojů pro Minecraft server a serveru samotného

Datapacky

Pokud chcete začít s vytvářením datapacků, ideálním místem pro start je Minecraft wiki: https://minecraft.fandom.com/wiki/Tutorials/Creating_a_data_pack

Pluginy

Pluginy se vyvíjí v programovacím jazyce Java, a tak je silně doporučeno umět Javu, než se vrhnete do jejich vytváření, a to především, pokud nemáte s programováním předešlé zkušenosti. Pokud to s vyvíjením pluginů myslíte vážně, a nechcete si jen “hrát”, naučte se Javu pořádně, což ale zabere mnoho času. V opačném případě bude vývoj vašich pluginů extrémně neefektivní, stejně jako samotné pluginy, a kvalita kódu bude otřesná.

Když se Javu opravdu naučíte (to ale není proces trvající dny, týdny, ani měsíce), nebudete pak mít žádný problém s vývojem nejen pluginů, ale i módů či i ostatních věcí, které se Minecraftu netýkají. Navíc se naučíte programovat, což je velice užitečná dovednost, která je zároveň přenositelná.

Pokud znalostí Javy disponujete, PaperMC dokumentace je skvělým místem, kde začít: https://docs.papermc.io/paper/dev

Módy

Módy se vyvíjí v programovacím jazyce Java, a tak je silně doporučeno umět Javu, než se vrhnete do jejich vytváření, a to především, pokud nemáte s programováním předešlé zkušenosti. Pokud to s vyvíjením módů myslíte vážně, a nechcete si jen “hrát”, naučte se Javu pořádně, což ale zabere mnoho času. V opačném případě bude vývoj vašich módů extrémně neefektivní, stejně jako samotné módů, a kvalita kódu bude otřesná.

Když se Javu opravdu naučíte, nebudete pak mít žádný problém s vývojem nejen módů, ale i pluginů či i ostatních věcí, které se Minecraftu netýkají. Navíc se naučíte programovat, což je velice užitečná dovednost, která je zároveň přenositelná.

Pokud znalostí Javy disponujete, začněte s dokumentací platformy, pro kterou chcete mód vytvořit: https://fabricmc.net/wiki/tutorial:start https://docs.minecraftforge.net/en/latest/gettingstarted/

Získání UUID

Pro získání UUID existujícího účtu stačí poslat (HTTP) GET request na https://api.mojang.com/users/profiles/minecraft/<username> viz zde.

Offline UUID je generováno ze jména, konkrétně je použita Java metoda

UUID#nameUUIDFromBytes(byte[] name)

kde jsou pro parametr name použity bajty řetězce OfflinePlayer:NICK.

Tato metoda generuje UUID verze 3, což je MD5 hash s pár úpravami:

md5Bytes[6]  &= 0x0f;  /* clear version        */
md5Bytes[6]  |= 0x30;  /* set to version 3     */
md5Bytes[8]  &= 0x3f;  /* clear variant        */
md5Bytes[8]  |= 0x80;  /* set to IETF variant  */

Externí nástroje

V případě, kdy chcete vyvíjet externí nástroje, které například čtou soubory hry (např. světa) či interagují se serverem, (např. získání statusu serveru), jistě se Vám bude hodit https://wiki.vg/Main_Page a https://minecraft.fandom.com/

Pokud byste chtěli například přepsat Minecraft Region Fixer, který čte a opravuje soubory světa, v jiném jazyce, stačí znalost NBT, Region a Anvil formátu, které bychom našli na následujících odkazech

https://wiki.vg/NBT https://minecraft.wiki/w/NBT_format https://minecraft.fandom.com/wiki/Region_file_format https://minecraft.fandom.com/wiki/Anvil_file_format

Kdybyste chtěli program, který získá status serveru (podobný https://mcsrvstat.us), stačí znát protokol Query a Server List Ping (a RakNet pro Bedrock edici).

Na programovacím jazyce tedy nezáleží. Je to stejné jako například u protokolu HTTP - existuje určitá specifikace, kterou stačí dodržet. Samozřejmě existují určité hranice - pokud byste chtěli napsat program, který vygeneruje svět v programovacím jazyce Rust, bylo by to pro jednotlivce velice náročné (stejně jako provádět jeho aktualizace), jelikož by bylo potřeba přepsat celý generátor světa, ale teoreticky to možné je (ke zdrojovému kódu serveru se lze dostat jednoduše).

Taktéž se Vám může hodit následující nástroj pro porovnání změn mezi verzemi: https://pokechu22.github.io/BurgerWebViewer/

Samotný server

Pokud chcete implementovat vlastní Minecraft server, začněte zde: https://wiki.vg/How_to_Write_a_Server

Na https://wiki.vg/ najdete dokumentaci protokolu, kterou budete nutně potřebovat.

Mějte však na paměti, že Minecraft server je velký projekt a jeho reimplementace od nuly se zatím nikomu nepovedla, jelikož by to bylo ohromně náročné.

Pokud chcete získat kód Vanilla serveru, použijte https://github.com/hube12/DecompilerMC (eventuelně https://parchmentmc.org/ může poskytovat kód s více informaci)

Taktéž se Vám může hodit následující nástroj pro porovnání změn mezi verzemi: https://pokechu22.github.io/BurgerWebViewer/