If you want to store data about blocks in Minecraft, you can
a) use metadata
b) use a TileEntity
Now you say you want to use NBT to store data, so you have to use a TileEntity. If you only want to store data, you need to override
canUpdate()
to return false, so it doesn't tick constantly. In a TileEntity, there are methods called
readFromNBT(NBTTagCompound)
and
writeToNBT(NBTTagCompound)
. In those methods, you can save any data to the NBTTagCompound passed in.