From ac6bead52e199f32486db1e91aeea63fdbcc5f48 Mon Sep 17 00:00:00 2001 From: tastybento Date: Mon, 16 Jan 2023 14:16:14 -0800 Subject: [PATCH] Add natural log to level-calc formula parsing Relates to #274 --- .../bentobox/level/calculators/IslandLevelCalculator.java | 3 +++ src/main/java/world/bentobox/level/config/ConfigSettings.java | 2 +- src/main/resources/config.yml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java index 9c9fb43..09f6218 100644 --- a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java +++ b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java @@ -135,6 +135,9 @@ public class IslandLevelCalculator { case "tan": x = Math.tan(Math.toRadians(x)); break; + case "log": + x = Math.log(x); + break; default: throw new RuntimeException("Unknown function: " + func); } diff --git a/src/main/java/world/bentobox/level/config/ConfigSettings.java b/src/main/java/world/bentobox/level/config/ConfigSettings.java index 67f7b91..3e8099e 100644 --- a/src/main/java/world/bentobox/level/config/ConfigSettings.java +++ b/src/main/java/world/bentobox/level/config/ConfigSettings.java @@ -90,7 +90,7 @@ public class ConfigSettings implements ConfigObject { @ConfigComment("Island level calculation formula") @ConfigComment("blocks - the sum total of all block values, less any death penalty") @ConfigComment("level_cost - in a linear equation, the value of one level") - @ConfigComment("This formula can include +,=,*,/,sqrt,^,sin,cos,tan. Result will always be rounded to a long integer") + @ConfigComment("This formula can include +,=,*,/,sqrt,^,sin,cos,tan,log (natural log). Result will always be rounded to a long integer") @ConfigComment("for example, an alternative non-linear option could be: 3 * sqrt(blocks / level_cost)") @ConfigEntry(path = "level-calc") private String levelCalc = "blocks / level_cost"; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 9b7c685..7f2ed95 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -53,7 +53,7 @@ levelcost: 100 # Island level calculation formula # blocks - the sum total of all block values, less any death penalty # level_cost - in a linear equation, the value of one level -# This formula can include +,=,*,/,sqrt,^,sin,cos,tan. Result will always be rounded to a long integer +# This formula can include +,=,*,/,sqrt,^,sin,cos,tan,log (natural log). Result will always be rounded to a long integer # for example, an alternative non-linear option could be: 3 * sqrt(blocks / level_cost) level-calc: blocks / level_cost #