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/