Uses of Interface

Packages that use BlockState
The root package of the Bukkit API, contains generalized API classes.
Classes used to manipulate the voxels in a world, including special states.
Generalized BlockData classes.
Interfaces for non-voxel objects that can exist in a world, including all players, monsters, projectiles, etc.
Events relating to when a block is changed or interacts with the world.
Events relating to entities, excluding some directly referencing some more specific entity types.
Events triggered by various world states or changes.
Classes to facilitate world generation implementation.
The interfaces used when manipulating extra data can can be stored inside item stacks.
Classes related to creating or using structures without creating Structure blocks in the world.
Multi and single purpose classes to facilitate various programmatic concepts.