ticking for env distributor

This commit is contained in:
RoBaertschi 2024-06-16 12:32:51 +02:00
parent a653a10ae8
commit 88753530be

View File

@ -1,7 +1,10 @@
package robaertschi.environmenttech.level.block; package robaertschi.environmenttech.level.block;
import com.mojang.serialization.MapCodec; import com.mojang.serialization.MapCodec;
import lombok.extern.slf4j.Slf4j;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor; 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.StateDefinition;
import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.level.block.state.properties.DirectionProperty;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; 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 class EnvDistributorBlock extends BaseEntityBlock {
public static final DirectionProperty FACING = BlockStateProperties.FACING; public static final DirectionProperty FACING = BlockStateProperties.FACING;
public static final MapCodec<EnvDistributorBlock> CODEC = simpleCodec(EnvDistributorBlock::new); public static final MapCodec<EnvDistributorBlock> CODEC = simpleCodec(EnvDistributorBlock::new);
@ -41,7 +53,7 @@ public class EnvDistributorBlock extends BaseEntityBlock {
} }
@Override @Override
protected BlockState mirror(BlockState pState, Mirror pMirror) { protected @NotNull BlockState mirror(BlockState pState, Mirror pMirror) {
return pState.rotate(pMirror.getRotation(pState.getValue(FACING))); return pState.rotate(pMirror.getRotation(pState.getValue(FACING)));
} }
@ -65,6 +77,25 @@ public class EnvDistributorBlock extends BaseEntityBlock {
@Nullable @Nullable
@Override @Override
public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) {
return null; return new EnvDistributorBlockEntity(pPos, pState);
} }
@Nullable
@Override
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(@NotNull Level pLevel, @NotNull BlockState pState, @NotNull BlockEntityType<T> 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");
}
}
}
} }