I LOVE all the solutions everybody has come up with here! Here is my best stab to add into the mix for an opal using cycles. This attempt uses layers of geometry to reflect the light which are inside the sphere. The shader for the reflections uses an iridescence approach using a color ramp with the transparency set really high so that you only get the specular reflections. I used a boolean operation to clip off some pretty basic planes placed randomly for the reflection geometry. The rest of the opal is a volume scatter node which can be adjusted for different color opals and what creates the shadow for the opal. Outside that is a glass sphere with an RGB split refraction to create some nice fringing color. The only unusual thing I am trying here is I have applied the texture coordinates of the bump texture for the reflections to the camera instead of the geometry to fake the motion of the reflections to make them move more like an opal might. Not the way it really works in a real opal I know but I thought it might be a good work around for some situations. Here’s the video of it in motion. If anyone likes this and wants to use it or finds a way to make it even better Please do! https://www.youtube.com/watch?v=SOs2EJ3OszE
opal gem blender test.blend (1.4 MB)