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 - sekera
  • hoe - motyčka
  • pickaxe - 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 na false
  • 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.

ModBlocks.java
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
  • needs_iron_tool
    • úroveň těžení 2
    • minimálně železný nástroj
  • needs_diamond_tool
    • úroveň těžení 3
    • minimálně diamantový nástroj

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.5f
    • resistance: 6.0f
  • obsidian
    • hardness: 50.0f
    • resistance: 1200.0f
  • bedrock
    • hardness: -1f (∞)
    • resistance: 3600000f

Nastavení nejvyšších hodnot

Pokud chceme, aby blok nešel vykopat, tak mu stačí nastavit hardness na hodnotu -1. U resistance to ale takhle udělat nemůžeme a musíme nastavit vysoké číslo. Nejvyšší číslo má nastavené například bariéra a tím je 3600000.75f.

Další příklady

Hodnoty všech bloků najdete na Minecraft wiki na následujících odkazech:

Příklad nastavení:

ModBlocks.java
public static final Block CONDENSED_DIRT = register(
		new Block(AbstractBlock.Settings.create()
				  .requiresTool()
				  .strength(3.0f, 6.0f)),
		CONDENSED_DIRT_KEY,
		true
);