The problem is that what you are doing isn't how metals behave when they're in a crystal lattice, so it's not physically correct. Also, shaders don't really model physics, but rather try to mimic surface behavior.
What you need is a source of the correct color for the mineral that you're trying to model, in its crystal format. Crystal, because gem stones are usually the crystal versions of minerals.
Since you started your list with beryl, I suspect you're looking to reproduce an emerald gem, although it can be the base of a wide range of crystal forms
I'll use an emerald shader as an example, but the shader only needs a few small changes to model the other forms.
There are many ways to do this, but this one is simple to explain:
Most of the color in a gemstone comes from the interior of the stone absorbing light in certain bands. Otherwise, a good way to model a gemstone is with a glass shader, one of the few times that glass is a good choice.
Because the material output node has support for both a shader and a volume shader, that's what we'll use:
The glass shader should be set to white, no matter the color of the gem. The glass shader's IOR value might have to change to match the IOR of the gem.
The actual color of the gem comes from the absorption shader. In this case, I've set it green to match emerald; but as I said, beryl is the basis for minerals of many colors. Just change the color to match the mineral gemstone you're trying to model.
EDIT: from the comments, I was reminded that if you are going to use the Material Output's Volume input in Cycles, you need to go to Properties Editor, Render Properties tab and under Light Paths -> Max Bounces, change the setting of Volume from the default of 0 to some larger value.
Here is a diamond with the emerald shader
Volume bounces set to 0
Volume bounces set to 5