minecraft-src/net/minecraft/world/level/block/RodBlock.java
2025-07-04 01:41:11 +03:00

54 lines
1.8 KiB
Java

package net.minecraft.world.level.block;
import com.mojang.serialization.MapCodec;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.pathfinder.PathComputationType;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public abstract class RodBlock extends DirectionalBlock {
protected static final float AABB_MIN = 6.0F;
protected static final float AABB_MAX = 10.0F;
protected static final VoxelShape Y_AXIS_AABB = Block.box(6.0, 0.0, 6.0, 10.0, 16.0, 10.0);
protected static final VoxelShape Z_AXIS_AABB = Block.box(6.0, 6.0, 0.0, 10.0, 10.0, 16.0);
protected static final VoxelShape X_AXIS_AABB = Block.box(0.0, 6.0, 6.0, 16.0, 10.0, 10.0);
protected RodBlock(BlockBehaviour.Properties properties) {
super(properties);
}
@Override
protected abstract MapCodec<? extends RodBlock> codec();
@Override
protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
switch (((Direction)state.getValue(FACING)).getAxis()) {
case X:
default:
return X_AXIS_AABB;
case Z:
return Z_AXIS_AABB;
case Y:
return Y_AXIS_AABB;
}
}
@Override
protected BlockState rotate(BlockState state, Rotation rotation) {
return state.setValue(FACING, rotation.rotate(state.getValue(FACING)));
}
@Override
protected BlockState mirror(BlockState state, Mirror mirror) {
return state.setValue(FACING, mirror.mirror(state.getValue(FACING)));
}
@Override
protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) {
return false;
}
}