Código:
Con esto lo que hago es reemplazar una string con variables por los valores de esas variables. La string tendría un formato como este "$hand==32". Como ven el en código obtengo el valor de "$hand" usando el parámetro "player".public String variables(Player player, String text) { Calendar calendar = Calendar.getInstance(); return text.replace("$gamemode", player.getGameMode().name()) .replace("$food", Integer.toString(player.getFoodLevel())) .replace("$health", Integer.toString(player.getHealth())) .replace("$exp", Integer.toString(player.getTotalExperience())) .replace("$world", player.getWorld().getName()) .replace("$hand", Integer.toString(player.getItemInHand().getTypeId())) .replace("$amount", Integer.toString(player.getItemInHand().getAmount())) .replace("$mctime", Long.toString(player.getWorld().getTime())) .replace("$hour", Integer.toString(calendar.get(Calendar.HOUR_OF_DAY))) .replace("$min", Integer.toString(calendar.get(Calendar.MINUTE))) .replace("$sec", Integer.toString(calendar.get(Calendar.SECOND))) .replace("$year", Integer.toString(calendar.get(Calendar.YEAR))) .replace("$month", Integer.toString(calendar.get(Calendar.MONTH)+1)) .replace("$day", Integer.toString(calendar.get(Calendar.DAY_OF_MONTH))); }
Lo que necesito ahora es no usar la variable "player" como parámetro de la función, sino que quiero usar el siguiente formato "$hand(player)==32".
Imagino que la solución a esto es mediante el uso de expresiones regulares, pero ahora mismo no se me ocurre la manera más eficiente de hacerlo, así que antes de comerme la cabeza y hacer algo demasiado complejo os pregunto a vosotros de qué manera haríais esto.
Si no me he explicado correctamente decídmelo y entraré más en detalles. Saludos!