User Tools

Site Tools


tutorial:blockentity

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
tutorial:blockentity [2020/02/09 12:46]
juuz mapping update
tutorial:blockentity [2020/05/07 19:15]
earthcomputer [Registring your BlockEntity] Fix typo in section header
Line 17: Line 17:
 </​code>​ </​code>​
  
-Bellow ​will show you how to create the ''​ExampleMod.DEMO_BLOCK_ENTITY''​ field.+Below will show you how to create the ''​ExampleMod.DEMO_BLOCK_ENTITY''​ field.
  
 You can simply add variables to this barebone class or implement interfaces such as ''​Tickable''​ and ''​Inventory''​ to add more functionality. ''​Tickable''​ provides a single ''​tick()''​ method, which is called once per tick for every loaded instance of your Block in the world., while ''​Inventory''​ allows your BlockEntity to interact with automation such as hoppers - there will likely be a separate tutorial dedicated entirely to this interface later. You can simply add variables to this barebone class or implement interfaces such as ''​Tickable''​ and ''​Inventory''​ to add more functionality. ''​Tickable''​ provides a single ''​tick()''​ method, which is called once per tick for every loaded instance of your Block in the world., while ''​Inventory''​ allows your BlockEntity to interact with automation such as hoppers - there will likely be a separate tutorial dedicated entirely to this interface later.
  
-===== Registring ​your BlockEntity =====+===== Registering ​your BlockEntity =====
  
 Once you have created the ''​BlockEntity''​ class, you will need to register it for it to function. The first step of this process is to create a ''​BlockEntityType'',​ which links your ''​Block''​ and ''​BlockEntity''​ together. Assuming your ''​Block''​ has been created and saved to a local variable ''​DEMO_BLOCK'',​ you would create the matching ''​BlockEntityType''​ with the line below. ''​modid:​demo''​ should be replaced by your Mod ID and the name you want your ''​BlockEntity''​ to be registered under. Once you have created the ''​BlockEntity''​ class, you will need to register it for it to function. The first step of this process is to create a ''​BlockEntityType'',​ which links your ''​Block''​ and ''​BlockEntity''​ together. Assuming your ''​Block''​ has been created and saved to a local variable ''​DEMO_BLOCK'',​ you would create the matching ''​BlockEntityType''​ with the line below. ''​modid:​demo''​ should be replaced by your Mod ID and the name you want your ''​BlockEntity''​ to be registered under.
Line 36: Line 36:
 </​code>​ </​code>​
  
-Once your ''​BlockEntityType''​ has been created and registered ​as seen above, you can simply implement ​''​BlockEntityProvider'' ​in your ''​Block'' ​class:+==== Connecting a Block Entity to a Block ==== 
 + 
 +Once your ''​BlockEntityType''​ has been created and registered, you'll need a block that is associated with it. You can do this by implementing ​''​BlockEntityProvider'' ​and overriding ​''​createBlockEntity''​. Each time your block is placed, your Block Entity will spawn alongside it.
  
 <code java> <code java>
-@Override +public class MyBlock extends Block implements BlockEntityProvider { 
-public BlockEntity createBlockEntity(BlockView blockView) { + 
-   ​return new DemoBlockEntity();​+   ​[...] 
 + 
 +   @Override 
 +   ​public BlockEntity createBlockEntity(BlockView blockView) { 
 +      return new DemoBlockEntity();​ 
 +   }
 } }
 </​code>​ </​code>​
tutorial/blockentity.txt · Last modified: 2020/05/07 19:15 by earthcomputer