1. díl - Minecraft Modding - Úvod

Java Minecraft Modding Minecraft Modding - Úvod

Vítejte u 1. dílu mého nového seriálu o základech modování Java hry s názvem Minecraft. Naučíme se zde základní věci např. přidání blocku do hry až po pokročilejší programování TileEntity. Dnes si vytvoříme prostředí pro modování. (Vše v OS Windows 7.)

Vytvoření prostředí pro Modding

MinecraftForge

Je ve zkratce systém řízení modů, přidává zdrojovou přílohu (source attachment=Můžeme se podívat na tělo např. metody, třídy... Prostě víme jak pracuje) pro Minecraft. Je to API, programovací rozhraní, díky kterému jsme schopni udělat mod. Je to ovšem také mod, základní mod bez kterého by žadný další nefungoval, protože všichni samozřejmě využívají pro vytvoření modu MinecraftForge. Znamená to tedy, že by všechny mody měly být kompatibilní? Bohužel tomu tak není.. Samozřejmě záleží na tom, jak to naprogramujete a jak to naprogramovali ostatní. Pokud spolu mody nefungují, musíme si najít jiný mod zastupující stejnou funkci či se hrabat ve zdrojáku.

Eclipse

Vývojové prostředí, které je podporováno MinecraftForgem a ve kterém budeme programovat.

Jdeme na to

Eclipse zde popisovat nebudu z důvodu zbytečného rozepisování. Nejprve si potřebujeme stáhnout nejnovější verzi MinecraftForge_src na Minecraft verzi 1.7.10 a zvolit si v "Download Recommended" možnost "src" (symbol: </>). Soubor extrahujeme, přejmenujeme na jméno našeho modu a pomocí Shift+RightClick v extrahované složce zvolíme možnost Zde otevřít Příkazové okno, do okna zadáme příkaz gradlew setupDecompWor­kspace eclipse. Počkáme, až nám vypíše build succesfull a poté můžeme příkazové okno zavřít.
Když rozjedeme eclipse, v možnosti Select/Switch Workspace najdeme naši extrahovanou složku, otevřeme ji a zvolíme adresář eclipse.

Nyní, když jsme úspěšně importovali project vytvořený přes MinecraftForge do Eclipse, musíme nastavit Run Configurations, aby Eclipse věděl, jakou třídu z té hromady má vybrat. Takže najedeme na Možnosti zeleného play tlačítka s názvem Run=>Run Configuration­s=>New Run Configuration (Takový papír s plusíkem). Pojmenujeme si ho třeba Client a teď ho musíme nastavit:

  • V Main nastavíme Project na Minecraft a MainClass nastavíme na GradleStart, což je třída ke spuštění.
  • V Arguments vložíme do Program Arguments kod:

    --version 1.6 --tweakClass cpw.mods.fml.com­mon.launcher.FML Tweaker --accessToken FML

    a do VM Arguments tento kod:

    -Xincgc -Xmx1024M -Xms1024M -Dfml.ignoreIn­validMinecraf­tCertificates=true

  • Working Directory nastavíme na Other, a vložíme tento kod: ${workspace_loc}.

Gratuluji, nyní pokud zvolíte možnost Client, měl by vám najet Minecraft (if problém, use comments). Ještě jsem však opomenul říci, že MinecraftForge používá “cracknutý“ Minecraft, díky této výhodě se nemusíme pořád přihlašovat, pokud program spustíme.

Vytvoření projektu našeho modu

V Eclipse si vytvoříme nový Java Project, nazveme ho názvem našeho modu - "SaltMod", protože bude všechno ze soli. A to je vše, můžeme dát Finish. Vytvoří se nám project, ve kterém najdeme source folder. Nyní bychom chtěli do našeho modu dát nějakou třídu main hádám, avšak není třeba ji psát díky hodným chlápkům z MinecraftForge, stačí pouze otevřít project Minecraft, otevřít source folder src/main/java, kde najdeme package com.example.e­xamplemod v něm třídu ExamleMod.java a celý package včetně třídy přesunout do našeho source folderu. Nyní na nás vyskočí celá řada chyb.

  1. Přejmenujeme package =Alt+Shift+R podle vzoru: cs.some_name.mod_na­me.main
  2. Přejmenujeme třídu na Main.java
  3. Teď k těm chybám: Jelikož náš project neví, kde je někde nějaký block , item atd., musíme mu to říci:=>Klik pravým tlačítkem na náš project=>Build Path=>Configure Build Path=>Project=>Add a vybereme Project Minecraft=>OK=>OK

Nyní všechny chyby zmizí, pokud ne zkuste Refresh(F5)+Sa­ve(Ctrl+S). Fajn, takže teď náš project ví o tom Minecraft projectu, avšak to neplatí obráceně,(To znamená, že pokud bychom to teď spustili, náš mod(v našem projektu) by to nenačetlo) tím pádem musíme nastavit v Run Configuration­s(zase to zelené tlačítko) v našem Client=>ClassPat­h=>Use Entries=>Add Projects, vybereme ten náš a odškrtneme ty dvě volby dole, jelikož to nepotřebujeme. Nyní můžeme zvolit Run. Pokud nám najetý Minecraft hlásí v levém dolním rohu 4mods loaded, 4mods active, tak je vše správně a můžeme klidně spát. :D

public static final String MODID

Je nutné nastavit unikátní ID modu, se kterým Minecraft pracuje a závisí na něm všechny blocky, itemy, obecně objekty, protože každý objekt má ve svém ID také ID modu (Např.: "DopravniPros­tredkyMod:Bagr"). Vysvětlím to asi tak, že kdybychom měli mod, jehož MODID="Doprav­niProstredkyMod", který by přidával např. Item Bagr, vytvořili bychom si svět, schovali Bagr do truhly, vypnuli MC a teď změnili MODID na "DopravniPros­tredkyMod2", a loadli bychom svět:

Forge zjistil, že tu má object neexistující, neplatné ID, jelikož ID Bagru se změnilo na "DopravniPros­tredkyMod2:Ba­gr".(Takže ho ze světa vymaže(nabídne zálohu)). K tomu udělat novou verzi je tu String VERSION.

public static final String VERSION

Je verze modu, tím pádem pokud chceme udělat novou verzi modu, nebudeme přepisovat MODID jako předtím, ale změníme VERSION. Jelikož bude mít object pořád stejné MODID, nezmizí(object) a vše bude v pohodě.

mcmod.info

Je textový soubor, ve kterém jsou uloženy nějaké Stringy. Jistě jste již na tento soubor narazili, pokud jste byli zvědaví a nahlédli do Minecraft src složky src/main/resou­rces. Pokud chceme tento soubor přemístit, jednoduše přesuneme src složku do našeho projectu. Ok, pořád ještě něco chybí, musíme napsat MODID našeho modu do mcmod.info, aby Minecraft věděl, k jakému modu náleží. Když ho otevřeme:

[
{
  "modid": "examplemod",
  "name": "Example Mod",
  "description": "Example placeholder mod.",
  "version": "${version}",
  "mcversion": "${mcversion}",
  "url": "",
  "updateUrl": "",
  "authorList": ["ExampleDude"],
  "credits": "The Forge and FML guys, for making this example",
  "logoFile": "",
  "screenshots": [],
  "dependencies": []
}
]

Tady si samozřejmě můžete vyhrát. Teď chceme najít, kde se zobrazí, spustíme Minecraft, klikneme na tlačítko Mods (přidává Forge) a zde najdeme svůj mod, klikneme na něj a co vidíme? To, co jsme napsali do mcmod.info.

Tak a je konec úvodu, ve druhém díle se koukneme na Block, Item, a celkové rozpoložení tříd v duchu OOP.


 

  Aktivity (1)

Článek pro vás napsal Matěj Černý
Avatar
Autor se věnuje programování v Javě, moduje Java hru Minecraft a pracuje se Cinema4D.

Jak se ti líbí článek?
Celkem (13 hlasů) :
4.076924.076924.076924.07692 4.07692


 


Miniatura
Předchozí článek
Tvorba pluginů pro Spigot
Miniatura
Všechny články v sekci
Minecraft Modding

 

 

Komentáře
Zobrazit starší komentáře (36)

Avatar
Richard H.
Redaktor
Avatar
Richard H.:

dobry podarilo se mi problem vyřešit (trochu divným způsobem ale když to funguje :D)

Odpovědět  +1 15.8.2015 21:02
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Odpovědět 15.8.2015 22:51
Neaktivní uživatelský účet
Avatar
Richard H.
Redaktor
Avatar
Richard H.:

(dočti tohle celé) No když jsem ještě neuměl javu tak jsem chtěl dělat módy přes program mccreator no a v jeho adresářích je správná složka eclipse atd.

Odpovědět 16.8.2015 11:08
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Pavel Říkovský:

Nějak mi to nefunguje... Můžete mi prosím poradit? Hlásí mi to tohle.
C:\Users\Pavel\Des­ktop\Můj první mod>gradlew setupDecompWor­kspace eclipse


Powered By MCP:
http://modcoderpack.com/
Searge, ProfMobius, Fesh0r,
R4wk, ZeuX, IngisKahn, bspkrs
MCP Data version : unknown


:extractMcpData UP-TO-DATE
:getVersionJson
:extractUserDev UP-TO-DATE
:genSrgs SKIPPED
:extractNatives UP-TO-DATE
:getAssetsIndex
:getAssets
:makeStart FAILED

FAILURE: Build failed with an exception.

  • What went wrong:

Execution failed for task ':makeStart'.

Unable to find a javac compiler;

com.sun.tools­.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre1­.8.0_71"

  • Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.

BUILD FAILED

Total time: 13.962 secs

 
Odpovědět 23. ledna 13:10
Avatar
Jakub Sakař
Člen
Avatar
Odpovídá na Pavel Říkovský
Jakub Sakař:

To se mi stalo taky. Pomohlo mi přeinstalovat java development kit.

 
Odpovědět 4. srpna 22:24
Avatar
Jindřich Pospíšil:

Mne se ukazuje to same a i po přeinstalování java development kitu.

 
Odpovědět 4. září 10:16
Avatar
Matěj Foltín:

Mám problém při spouštění Minecraftu:

Exception in thread "main" cpw.mods.fml.relauncher.FMLSecurityManager$ExitTrappedException
        at cpw.mods.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java:25)
        at java.lang.SecurityManager.checkExit(Unknown Source)
        at java.lang.Runtime.exit(Unknown Source)
        at java.lang.System.exit(Unknown Source)
        at net.minecraft.launchwrapper.Launch.launch(Launch.java:138)
        at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
        at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
        at GradleStart.main(Unknown Source)
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
 
Odpovědět 15. září 15:22
Avatar
Maty Klug
Člen
Avatar
Maty Klug:

jak je to na win10? a mohlo by to být trochu jednodušeji popsané?

 
Odpovědět 5. listopadu 14:55
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Maty Klug
pocitac770:

Vše funguje všude. Problém u tebe (a možná i řešení tvého "mohlo by to být trochu jednodušeji popsané") je pravděpodobně to, že i když jde o programování v Javě, tak si nepřečteš ani základy (viz jiné seriály v sekci Java) a jdeš už aplikovat "znalosti" do hry, pokud by sis předchozí látku přečetl, tak by jsi takovouhle otázku nepoložil...

Editováno 6. listopadu 0:35
 
Odpovědět 6. listopadu 0:34
Avatar
Ondřej Pohořelý:

C:\Users\Ondra\Des­ktop\forge-1.7.10-10.13.4.1558-1.7.10-src>gradlew setupDecompWor­kspace
eclipse


Powered By MCP:
http://modcoderpack.com/
Searge, ProfMobius, Fesh0r,
R4wk, ZeuX, IngisKahn, bspkrs
MCP Data version : unknown


FAILURE: Build failed with an exception.

  • What went wrong:

Task 'setupDecompWorşkspa­ce' not found in root project 'forge-1.7.10-10.13.4.1558-1.7.10-s
rc'. Some candidates are: 'setupDecompWor­kspace'.

  • Try:

Run gradlew tasks to get a list of available tasks. Run with --stacktrace option to get th
e stack trace. Run with -

  • info

or -

  • debug

option to get more log output.

BUILD FAILED

Total time: 26.635 secs

Odpovědět 13. listopadu 16:21
Nezastavuj se dlouho protože život nikdy nečeká !
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 46. Zobrazit vše