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 [2019/07/22 17:38]
fudge typo
tutorial:blockentity [2020/05/07 19:15] (current)
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 32: Line 32:
 @Override @Override
 public void onInitialize() { public void onInitialize() {
-   ​DEMO_BLOCK_ENTITY = Registry.register(Registry.BLOCK_ENTITY, "​modid:​demo",​ BlockEntityType.Builder.create(DemoBlockEntity::​new,​ DEMO_BLOCK).build(null));​+   ​DEMO_BLOCK_ENTITY = Registry.register(Registry.BLOCK_ENTITY_TYPE, "​modid:​demo",​ BlockEntityType.Builder.create(DemoBlockEntity::​new,​ DEMO_BLOCK).build(null));​
 } }
 </​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.1563817083.txt.gz · Last modified: 2019/07/22 17:38 by fudge