Buenas:
Sigo sin saber si lo que quieres es reemplazar "nombre_de_jugador" por algo que tienes en una variable (igual que reemplazas $hand por un valor) o si lo que quieres es meter en una variable java lo que se haya escrito en lugar de "nombre_de_jugador" (es decir, tienes $hand(Juan) y quieres obtener el Juan ese dentro de una variable String.
Imagino que es lo último ...
Tu expresión regular comenzaría siendo $hand(.*) donde .* representa cualquier secuencia de caracteres y que es lo que quieres obtener
Hay que escapar el $ y los ( ) por ser caracteres especiales en las expresiones regulares, así que quedaría \\$hand\\(.*\\)
Finalmente, como quieres recuperar el valor de .* hay que meterlo entre paréntesis para poder recogerlo luego, quedaría \\$hand\\((.*)\\)
El código java quedaría
Código java:
Ver originalPattern patron = Pattern.compile("\\$hand\\((.*)\\)");
Matcher matcher = patron.matcher(tuComandoBukkit);
// Hace que Matcher busque los trozos.
matcher.find();
// Aquí saldría el nombre_de_usuario
System.
out.
println(matcher.
group(1));
Si pones más grupos de paréntesis, serían group(1), group(2), etc en el orden que los hayas puesto.
Si lo que quieres es reemplazar el $hand(nombre_de_jugador) entero y sin saber el nombre del jugador, en el replace pon esto
replaceFirst("\\$hand\\(.*\\)", Integer.toString(player.getItemInHand().getTypeId( )))
debes usar replaceFirts() o replaceAll() porque admiten una expresión regular como primer parámetro.
Se bueno.