CLASS net/minecraft/class_2343 net/minecraft/block/BlockEntityProvider COMMENT A block with a {@link BlockEntity}. If a block has a corresponding block entity, COMMENT it must implement this interface. Multiple blocks can share a block entity type. COMMENT COMMENT

The {@link #createBlockEntity} method is responsible for creating an instance COMMENT of your block entity; no other code should instantiate it. COMMENT COMMENT

See the documentation of {@link BlockEntity} for more information on what a COMMENT block entity is. See the documentation of {@link COMMENT net.minecraft.block.entity.BlockEntityType} for how to create a block entity type. COMMENT COMMENT @see BlockEntity COMMENT @see BlockWithEntity METHOD method_10123 createBlockEntity (Lnet/minecraft/class_2338;Lnet/minecraft/class_2680;)Lnet/minecraft/class_2586; COMMENT {@return a new block entity instance} COMMENT COMMENT

For example: COMMENT

{@code
		COMMENT @Override
		COMMENT public BlockEntity createBlockEntity(BlockPos pos, BlockState state) {
		COMMENT   return new MyBlockEntity(pos, state);
		COMMENT }
		COMMENT }
COMMENT COMMENT @implNote While this is marked as nullable, in practice this should never return COMMENT {@code null}. {@link PistonExtensionBlock} is the only block in vanilla that COMMENT returns {@code null} inside the implementation. ARG 1 pos ARG 2 state METHOD method_31645 getTicker (Lnet/minecraft/class_1937;Lnet/minecraft/class_2680;Lnet/minecraft/class_2591;)Lnet/minecraft/class_5558; COMMENT {@return the "ticker" for the block's block entity, or {@code null} if COMMENT the block entity does not need to be ticked} COMMENT COMMENT

Ticker is a functional interface called every tick to tick the block entity COMMENT on both the client and the server. COMMENT COMMENT

Tickers should validate that the passed {@code type} is the one this block expects, COMMENT and return {@code null} if it isn't. This is to prevent crashes in rare cases where a COMMENT mismatch occurs between the position's block and block entity. {@link COMMENT BlockWithEntity#checkType} can be used to implement the check. COMMENT COMMENT

Example: COMMENT COMMENT

{@code
		COMMENT public  BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type) {
		COMMENT   if (type != YourMod.MY_BLOCK_ENTITY_TYPE) return null;
		COMMENT   // This should be a static method usable as a BlockEntityTicker.
		COMMENT   return YourBlockEntity::tick;
		COMMENT }
		COMMENT }
ARG 1 world ARG 2 state ARG 3 type METHOD method_32896 getGameEventListener (Lnet/minecraft/class_3218;Lnet/minecraft/class_2586;)Lnet/minecraft/class_5714; COMMENT {@return the game event listener for the block's block entity, COMMENT or {@code null} if the block entity does not listen to game events} COMMENT COMMENT

Listeners should validate that the passed {@code blockEntity} is the block entity COMMENT for this block, and return {@code null} if it isn't. This is to prevent crashes in COMMENT rare cases where a mismatch occurs between the position's block and block entity. ARG 1 world ARG 2 blockEntity