User Tools

Site Tools


tutorial:blocks

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
tutorial:blocks [2021/05/24 18:52] – [Creating a Custom Block Class] Replace Block.Settings by FabricBlockSettings technici4ntutorial:blocks [2022/04/29 09:35] – [Next Steps] solidblock
Line 30: Line 30:
 ==== Registering your Block ==== ==== Registering your Block ====
  
-Blocks should be registered under the ''Registry.BLOCK'' registry. Call //Registry.register// and pass in the appropriate arguments.+Blocks should be registered under the ''Registry.BLOCK'' registry. Call ''Registry.//register//'' and pass in the appropriate arguments. You can either register the block in ''onInitialize'' method or directly when creating the block instance in the static context, as the ''register'' method returns the block instance as well.
  
 <code java [enable_line_numbers="true",highlight_lines_extra="11"]> <code java [enable_line_numbers="true",highlight_lines_extra="11"]>
Line 133: Line 133:
   ]   ]
 } }
 +</code>
 +
 +In minecraft 1.17, there has been a change for breaking blocks. Now, to define harvest tools and harvest levels, we need to use tags. Read about tags at: [[tutorial:tags|Tags Tutorial]]. The tags that we need to add the block to are:
 +
 +  Harvest tool: src/main/resources/data/minecraft/tags/blocks/mineable/<tooltype>.json, Where 'tooltype' can be any of: 'axe', 'pickaxe', 'shovel' ore 'hoe'
 +  Harvest level: src/main/resources/data/minecraft/tags/blocks/needs_<tier>_tool.json, Where 'tier' can be any of: 'stone', 'iron' or 'diamond'
 +
 +<code JavaScript src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json>
 +{
 +  "replace": false,
 +  "values": [
 +    "tutorial:example_block"
 +  ]
 +}
 +</code>
 +
 +<code JavaScript src/main/resources/data/minecraft/tags/blocks/needs_stone_tool.json>
 +{
 +  "replace": false,
 +  "values": [
 +    "tutorial:example_block"
 +  ]
 +}
 +</code>
 +
 +For the harvest level tags (needs_stone_tool, needs_iron_tool and needs_diamond_tool) to take effect, add requiresTool() to the FabricToolSettings in the block declaration:
 +
 +
 +<code java [enable_line_numbers="true"]>
 +    public static final Block EXAMPLE_BLOCK = new ExampleBlock(FabricBlockSettings.of(Material.METAL).strength(4.0f).requiresTool());
 </code> </code>
  
 ===== Creating a Custom Block Class ===== ===== Creating a Custom Block Class =====
  
-The above approach works well for simple items but falls short when you want a block with //unique// mechanics. We'll create a //separate// class that extends ''Block'' to do this. The class needs a constructor that takes in an ''AbstractBlock.Settings'' argument:+The above approach works well for simple blocks but falls short when you want a block with //unique// mechanics. We'll create a //separate// class that extends ''Block'' to do this. The class needs a constructor that takes in an ''AbstractBlock.Settings'' argument:
  
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
Line 206: Line 236:
  
 [[tutorial:blockentity|Giving blocks a block entity so they can have advanced state like inventories]]. Also needed for many things like GUI and custom block rendering. [[tutorial:blockentity|Giving blocks a block entity so they can have advanced state like inventories]]. Also needed for many things like GUI and custom block rendering.
 +
 +To make your block flammable (that is, can be burned in fire), you may use ''FlammableBlockRegistry''.
tutorial/blocks.txt · Last modified: 2023/11/18 08:34 by solidblock