V této kapitole si ukážeme, jak nastavit nástroj, kterým se má náš blok těžit a z jakého materiálu musí být nástroj vyrobený, aby nám vypadl blok. Dále si ukážeme, jak nastavit tvrdost bloku a odolnost proti výbuchu.
Nástroj na těžení
Nástroj na těžení se nastavuje pomocí tagů, což je skupina itemů/bloků. Na základě těchto skupin pak v kódu můžeme upravovat, co se má s blokem kdy stát. V tomto případě se tím upravuje rychlost těžení.
Na rozdíl od ostatních souborů s nastavením zde se soubor nebude jmenovat podle názvu bloku, ale podle nástroje, kterým chceme, aby se náš blok těžil. Možnosti jsou:
axe- sekerahoe- motyčkapickaxe- krumpáčshovel- lopata
Pokud tedy chceme těžit nástroj lopatou, tak vytvoříme soubor shovel.json
Ve složce resources si tedy vytvoříme nový soubor data/minecraft/tags/block/mineable/shovel.json.
Obsah souboru bude vypadat následovně:
{
"replace": false,
"values": ["custom-block:condensed_dirt"]
}replace- pokud nastavíme na
true, tak se přepíše původní skupina těchto bloků v Minecraftu. To dělat nebudeme, protože by se tím mohla rozbít hra. Takže hodnotu vždy nastavíme nafalse
- pokud nastavíme na
values- seznam bloků. které se mají do skupiny přidat
Tímto jsme nastavili, že se lopatou bude blok těžit rychleji.
Vyžadování nástroje
Pokud chceme, aby se tento blok nedal vytěžit bez nástroje, tak to musíme nastavit v kódu. Blok poté sice půjde vytěžit i bez nástroje, ale nic z něj nevypadne.
Ve třídě ModBlocks, kde jsme si blok přidávali stačí zavolat metodu .requiresTool() po vytvoření základního nastavení bloku.
public static final Block CONDENSED_DIRT = register(
new Block(AbstractBlock.Settings.create()
.requiresTool()),
CONDENSED_DIRT_KEY,
true
);Nyní by blok neměl jít vytěžit bez lopaty, kterou jsme nastavili v předchozím kroku jako nástroj na těžení tohoto bloku.
Nastavení materiálu nástroje
Kromě typu nástroje můžeme také nastavit, z jakého minimálního materiálu musí být nástroj vyrobený. Na to se používá také tag a název souboru je podle tohoto tagu. Pokud použijeme nižší úroveň materiálu, tak nám z bloku nic nevypadne.
Možnosti:
needs_stone_tool- úroveň těžení
1 - minimálně kamenný nástroj
- úroveň těžení
needs_iron_tool- úroveň těžení
2 - minimálně železný nástroj
- úroveň těžení
needs_diamond_tool- úroveň těžení
3 - minimálně diamantový nástroj
- úroveň těžení
Ostatní materiály
Dřevěné nástroje mají úroveň těžení
0, ale jsou užitečné pokud je na nějaký blok potřeba nástroj a není v žádné z výše uvedených skupin.Zlaté nástroje mají stejně jako dřevo úroveň těžení
0.Netherite nástroje mají úroveň těžení
4, ale ta se v základní hře na nic nevyužívá a proto nemá vlastní skupinu bloků.
Pokud tedy chceme, aby na náš blok byl potřeba diamantový nástroj, tak soubor pojmenujeme
needs_diamond_tool.json.
Ve složce resources si tedy vytvoříme nový soubor data/minecraft/tags/block/needs_diamond_tool.json.
Obsah souboru bude vypadat stejně jako u nastavení nástroje na těžení:
{
"replace": false,
"values": ["custom-block:condensed_dirt"]
}Nyní by blok měl jít vytěžit jen diamantovou lopatou. Pokud jste potřebný nástroj nastavili stejně jako já v předchozích krocích.
Nastavení odolnosti bloku
Odolnost bloku se v Minecraftu nastavuje pomocí metody strength() při registraci bloku. Odolnost je rozdělená na dvě kategorie.
hardness- ovlivňuje rychlost těžení
resistance- odolnost proti výbuchu
Do metody se uvádí ve výše uvedeném pořadí. Nebo můžete uvést jen jedno číslo a to se použije na obě vlastnosti.
Příklady hodnot bloků:
- stone
hardness:1.5fresistance:6.0f
- obsidian
hardness:50.0fresistance:1200.0f
- bedrock
hardness:-1f(∞)resistance:3600000f
Nastavení nejvyšších hodnot
Pokud chceme, aby blok nešel vykopat, tak mu stačí nastavit
hardnessna hodnotu-1. Uresistanceto ale takhle udělat nemůžeme a musíme nastavit vysoké číslo. Nejvyšší číslo má nastavené například bariéra a tím je3600000.75f.
Další příklady
Hodnoty všech bloků najdete na Minecraft wiki na následujících odkazech:
Příklad nastavení:
public static final Block CONDENSED_DIRT = register(
new Block(AbstractBlock.Settings.create()
.requiresTool()
.strength(3.0f, 6.0f)),
CONDENSED_DIRT_KEY,
true
);