diff --git a/src/main/java/com/massivecraft/massivecore/money/Money.java b/src/main/java/com/massivecraft/massivecore/money/Money.java index 9a530c3e..b65a4445 100644 --- a/src/main/java/com/massivecraft/massivecore/money/Money.java +++ b/src/main/java/com/massivecraft/massivecore/money/Money.java @@ -73,12 +73,22 @@ public class Money return mixin.plural(); } + // -------------------------------------------- // + // FRACTIONAL DIGITS + // -------------------------------------------- // + public static int fractionalDigits() { if (disabled()) return 0; return mixin.fractionalDigits(); } + public static double prepare(double amount) + { + if (disabled()) return amount; + return mixin.prepare(amount); + } + // -------------------------------------------- // // EXISTANCE // -------------------------------------------- // diff --git a/src/main/java/com/massivecraft/massivecore/money/MoneyMixin.java b/src/main/java/com/massivecraft/massivecore/money/MoneyMixin.java index 34e53869..7d654707 100644 --- a/src/main/java/com/massivecraft/massivecore/money/MoneyMixin.java +++ b/src/main/java/com/massivecraft/massivecore/money/MoneyMixin.java @@ -18,7 +18,13 @@ public interface MoneyMixin public String format(double amount, boolean includeUnit); public String singular(); public String plural(); + + // -------------------------------------------- // + // FRACTIONAL DIGITS + // -------------------------------------------- // + public int fractionalDigits(); + public double prepare(double amount); // -------------------------------------------- // // EXISTANCE diff --git a/src/main/java/com/massivecraft/massivecore/money/MoneyMixinAbstract.java b/src/main/java/com/massivecraft/massivecore/money/MoneyMixinAbstract.java index c93770af..44949bd1 100644 --- a/src/main/java/com/massivecraft/massivecore/money/MoneyMixinAbstract.java +++ b/src/main/java/com/massivecraft/massivecore/money/MoneyMixinAbstract.java @@ -15,6 +15,30 @@ public abstract class MoneyMixinAbstract implements MoneyMixin return this.format(amount, true); } + // -------------------------------------------- // + // FRACTIONAL DIGITS + // -------------------------------------------- // + + @Override + public double prepare(double amount) + { + final int fractionalDigits = this.fractionalDigits(); + + // -1 means infinite amount of fractional digits + if (fractionalDigits < 0) return amount; + + // 0 means no fractional digits + if (fractionalDigits == 0) return Math.ceil(amount); + + // OK! I'll have to calculate :P + int factor = (int) Math.round(Math.pow(10, fractionalDigits)); + amount = amount * factor; + amount = Math.ceil(amount); + amount = amount / factor; + + return amount; + } + // -------------------------------------------- // // MOVE // -------------------------------------------- // diff --git a/src/main/java/com/massivecraft/massivecore/money/MoneyMixinVault.java b/src/main/java/com/massivecraft/massivecore/money/MoneyMixinVault.java index 0eb6a762..3dc875d3 100644 --- a/src/main/java/com/massivecraft/massivecore/money/MoneyMixinVault.java +++ b/src/main/java/com/massivecraft/massivecore/money/MoneyMixinVault.java @@ -100,6 +100,10 @@ public class MoneyMixinVault extends MoneyMixinAbstract return this.economy.currencyNamePlural(); } + // -------------------------------------------- // + // FRACTIONAL DIGITS + // -------------------------------------------- // + @Override public int fractionalDigits() { @@ -204,6 +208,4 @@ public class MoneyMixinVault extends MoneyMixinAbstract return true; } - - }