diff --git a/src/main/java/robaertschi/environmenttech/level/block/EnvDistributorBlock.java b/src/main/java/robaertschi/environmenttech/level/block/EnvDistributorBlock.java index 70326ce..8d14a86 100644 --- a/src/main/java/robaertschi/environmenttech/level/block/EnvDistributorBlock.java +++ b/src/main/java/robaertschi/environmenttech/level/block/EnvDistributorBlock.java @@ -1,7 +1,10 @@ package robaertschi.environmenttech.level.block; import com.mojang.serialization.MapCodec; +import lombok.extern.slf4j.Slf4j; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; @@ -13,8 +16,17 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.DirectionProperty; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import robaertschi.environmenttech.level.block.entity.ETBlockEntities; +import robaertschi.environmenttech.level.block.entity.EnvDistributorBlockEntity; +import javax.annotation.ParametersAreNonnullByDefault; + +@SuppressWarnings("deprecation") +@Slf4j +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault public class EnvDistributorBlock extends BaseEntityBlock { public static final DirectionProperty FACING = BlockStateProperties.FACING; public static final MapCodec CODEC = simpleCodec(EnvDistributorBlock::new); @@ -41,7 +53,7 @@ public class EnvDistributorBlock extends BaseEntityBlock { } @Override - protected BlockState mirror(BlockState pState, Mirror pMirror) { + protected @NotNull BlockState mirror(BlockState pState, Mirror pMirror) { return pState.rotate(pMirror.getRotation(pState.getValue(FACING))); } @@ -65,6 +77,25 @@ public class EnvDistributorBlock extends BaseEntityBlock { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { - return null; + return new EnvDistributorBlockEntity(pPos, pState); } + + @Nullable + @Override + public BlockEntityTicker getTicker(@NotNull Level pLevel, @NotNull BlockState pState, @NotNull BlockEntityType pBlockEntityType) { + return createTickerHelper(pBlockEntityType, ETBlockEntities.ENV_DISTRIBUTOR_BLOCK_ENTITY.get(), this::tick); + } + + public void tick(Level level, BlockPos blockPos, BlockState blockState, EnvDistributorBlockEntity envDistributorBlockEntity) { + + if (!level.isClientSide()) { + if (level instanceof ServerLevel serverLevel) { + envDistributorBlockEntity.serverTick(serverLevel, blockPos, blockState); + } else { + log.error("level.isClientSide() returned false, but is not a ServerLevel, not ticking EnvCollector"); + } + } + } + + }