Updating Blocks Entities
A guide for converting AzureLib/Geckolib Blocks Entities to the new 3.x code.
Block Entities Class
public class ExampleBE extends BlockEntity implements GeoBlockEntity {// Geckolib used GeckoLibUtilprivate final AnimatableInstanceCache cache = AzureLibUtil.createInstanceCache(this);public ExampleBE(BlockPos pos, BlockState blockState) {super(YourEntityTypes.EXAMPLE_BE, pos, blockState);}@Overridepublic void registerControllers(AnimatableManager.ControllerRegistrar controllers) {// Where you registered your Controllers and such}@Overridepublic AnimatableInstanceCache getAnimatableInstanceCache() {return cache;}}
As you can see here, you no longer need to implement a Geo interface to your class anymore and no longer register your controllers here. All that is needed now is to simply implement a Dispatcher, which we will cover below.
Animations
private static final RawAnimation SPINNING = RawAnimation.begin().thenLoop("spinning");@Overridepublic void registerControllers(AnimatableManager.ControllerRegistrar controllers) {controllers.add(new AnimationController<>(this, "base_controller", 0,state -> PlayState.CONTINUE).triggerableAnim("spinning",SPINNING));}
Heads up!
It is recommend to created a dedicated class for your Animation triggers as AzureLib now functions only using animation trigger calls, which is registered in your item like in the example above of the new Item class:
public class ExampleBEDispatcher {private static final AzCommand SPINNING_COMMAND = AzCommand.create("base_controller","spinning",AzPlayBehaviors.LOOP);public void spin(BlockEntity entity) {SPINNING_COMMAND.sendForItem(entity, itemStack);}}
Rendering
public class ExampleBERenderer extends GeoBlockRenderer<ExampleBE> {public ExampleBERenderer() {super(new DefaultedBlockGeoModel<>(ResourceLocation.fromNamespaceAndPath(YOUR_MOD_ID, "examplebe")));}}
This is where you will now register the ResourceLocation model and texture of your armor and you register your ExampleBEAnimator.
Registering
This has not changed for Block Entities, please refer to your mod loader for how to register block entities and the block entities renderer.