User Tools

Site Tools


tutorial:blockentityrenderers

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:blockentityrenderers [2019/08/06 18:35] fudgetutorial:blockentityrenderers [2019/08/13 15:43] – added more information for client entrypoint fudge
Line 3: Line 3:
 Make sure you [[tutorial:blockentity|added a block entity]] before reading this tutorial!  Make sure you [[tutorial:blockentity|added a block entity]] before reading this tutorial! 
 ===== Introduction ===== ===== Introduction =====
-Some may say blocks by themselves aren't that interesting, +Blocks by themselves aren't that interesting, 
 they just stay static at a certain location and a certain size until broken. they just stay static at a certain location and a certain size until broken.
 We can use block entity renderers to render items and blocks associated with a block entity far more dynamically - render multiple different items,  We can use block entity renderers to render items and blocks associated with a block entity far more dynamically - render multiple different items, 
Line 22: Line 22:
 } }
 </code> </code>
-And register it:+We're going to need to register our ''BlockEntityRenderer'', but only for the client.  
 +This wouldn't matter in a single-player setting, since the server runs in the same process as the client.  
 +However, in a multiplayer setting, where the server runs in a different process than the client, the server code 
 +has no concept of a "BlockEntityRenderer", and as a result would not accept registering one.  
 +To run initialization code only for the client, we need to setup a ''client'' entrypoint.   
 + 
 +Create a new class next to your main class that implements ''ClientModInitializer'':
 <code java> <code java>
-@Override +public class ExampleModClient implements ClientModInitializer { 
-public void onInitialize() {+    @Override 
 +    public void onInitializeClient() 
 +        // Here we will put client-only registration code 
 +    } 
 +
 +</code> 
 + 
 +Set this class as the ''client'' entrypoint in your ''fabric.mod.json'' (modify the path as needed): 
 +<code javascript "fabric.mod.json"> 
 +"entrypoints": {
     [...]     [...]
 +    "client": [
 +      {
 +        "value": "tutorial.path.to.ExampleModClient"
 +      }
 +    ]
 +}    
 +</code>
 +
 +And register the ''BlockEntityRenderer'' in our ClientModInitializer:
 +<code java>
 +@Override
 +public void onInitializeClient() {
     BlockEntityRendererRegistry.INSTANCE.register(DemoBlockEntity.class, new MyBlockEntityRenderer());     BlockEntityRendererRegistry.INSTANCE.register(DemoBlockEntity.class, new MyBlockEntityRenderer());
 } }
tutorial/blockentityrenderers.txt · Last modified: 2023/02/09 13:14 by mschae23