package me.fromgate.reactions.placeholders;
import me.fromgate.reactions.util.MathEval;
import me.fromgate.reactions.util.Variables;
import org.bukkit.entity.Player;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@PlaceholderDefine(id = "Calculate", needPlayer = false, keys = {"CALC", "calculate", "expression"})
public class PlaceholderCalc extends Placeholder {
@Override
public String processPlaceholder(Player player, String key, String param) {
String expression = replaceVariablesInExpression(param);
MathEval math = new MathEval();
try {
double result = math.evaluate(expression);
return (result == (int) result) ? Integer.toString((int) result) : Double.toString(result);
} catch (Exception ignore) {
}
return null;
}
private String replaceVariablesInExpression(String expression) {
String result = expression;
Pattern pattern = Pattern.compile("\\w+");
Matcher matcher = pattern.matcher(expression);
while (matcher.find()) {
String var = matcher.group();
result = result.replace(var, Variables.getVar("", var, var));
}
return result;
}
}