From 0beaa8c6849b17ffdbc5aaaf6e69297420a6f705 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Fri, 13 Nov 2020 12:07:48 +0000 Subject: [PATCH] Updated number formatting --- .../willfp/ecoenchants/enchantments/EcoEnchant.java | 13 +++++++------ .../integrations/placeholder/PlaceholderEntry.java | 4 ++++ .../placeholder/PlaceholderManager.java | 10 +++++++++- .../plugins/PlaceholderIntegrationPAPI.java | 5 ----- .../com/willfp/ecoenchants/util/NumberUtils.java | 13 +++++++++++++ 5 files changed, 33 insertions(+), 12 deletions(-) diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java index 95c472f4..134f2a56 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java @@ -8,6 +8,7 @@ import com.willfp.ecoenchants.enchantments.meta.EnchantmentRarity; import com.willfp.ecoenchants.enchantments.util.Watcher; import com.willfp.ecoenchants.integrations.placeholder.PlaceholderEntry; import com.willfp.ecoenchants.integrations.placeholder.PlaceholderManager; +import com.willfp.ecoenchants.util.NumberUtils; import com.willfp.ecoenchants.util.StringUtils; import com.willfp.ecoenchants.util.interfaces.Registerable; import com.willfp.ecoenchants.util.optional.Prerequisite; @@ -151,12 +152,12 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist if(this.getConfig().config.get(EcoEnchants.CONFIG_LOCATION + "chance-per-level") != null) { PlaceholderManager.registerPlaceholder( new PlaceholderEntry(this.getPermissionName() + "_" + "chance_per_level", (player) -> { - return String.valueOf(this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level")); + return NumberUtils.format(this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level")); }) ); PlaceholderManager.registerPlaceholder( new PlaceholderEntry(this.getPermissionName() + "_" + "chance_per_level_percentage", (player) -> { - return String.valueOf(this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level") * 100); + return NumberUtils.format(this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level") * 100); }) ); } @@ -164,12 +165,12 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist if(this.getConfig().config.get(EcoEnchants.CONFIG_LOCATION + "multiplier") != null) { PlaceholderManager.registerPlaceholder( new PlaceholderEntry(this.getPermissionName() + "_" + "multiplier", (player) -> { - return String.valueOf(this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier")); + return NumberUtils.format(this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier")); }) ); PlaceholderManager.registerPlaceholder( new PlaceholderEntry(this.getPermissionName() + "_" + "multiplier_percentage", (player) -> { - return String.valueOf(this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier") * 100); + return NumberUtils.format(this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier") * 100); }) ); } @@ -177,12 +178,12 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist if(this instanceof Spell) { PlaceholderManager.registerPlaceholder( new PlaceholderEntry(this.getPermissionName() + "_" + "cooldown", (player) -> { - return String.valueOf(Spell.getCooldown((Spell) this, player)); + return NumberUtils.format(Spell.getCooldown((Spell) this, player)); }, true) ); PlaceholderManager.registerPlaceholder( new PlaceholderEntry(this.getPermissionName() + "_" + "cooldown_total", (player) -> { - return String.valueOf(((Spell) this).getCooldownTime()); + return NumberUtils.format(((Spell) this).getCooldownTime()); }) ); } diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/PlaceholderEntry.java b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/PlaceholderEntry.java index dec63448..31c3fc06 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/PlaceholderEntry.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/PlaceholderEntry.java @@ -25,4 +25,8 @@ public class PlaceholderEntry { public String getResult(Player player) { return this.function.call(player); } + + public boolean requiresPlayer() { + return requiresPlayer; + } } diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/PlaceholderManager.java b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/PlaceholderManager.java index a901c250..df325482 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/PlaceholderManager.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/PlaceholderManager.java @@ -1,7 +1,10 @@ package com.willfp.ecoenchants.integrations.placeholder; +import com.willfp.ecoenchants.util.Logger; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import javax.print.DocFlavor; import java.util.HashSet; import java.util.Optional; import java.util.Set; @@ -23,7 +26,12 @@ public class PlaceholderManager { public static String getResult(Player player, String identifier) { Optional matching = placeholders.stream().filter(expansion -> expansion.getIdentifier().equalsIgnoreCase(identifier)).findFirst(); - return matching.map(placeholderEntry -> placeholderEntry.getResult(player)).orElse(null); + if(!matching.isPresent()) + return null; + PlaceholderEntry entry = matching.get(); + if(player == null && entry.requiresPlayer()) + return ""; + return entry.getResult(player); } public static String translatePlaceholders(String text, Player player) { diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/plugins/PlaceholderIntegrationPAPI.java b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/plugins/PlaceholderIntegrationPAPI.java index 945c10a8..69b8c08c 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/plugins/PlaceholderIntegrationPAPI.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/integrations/placeholder/plugins/PlaceholderIntegrationPAPI.java @@ -7,8 +7,6 @@ import me.clip.placeholderapi.PlaceholderAPI; import me.clip.placeholderapi.expansion.PlaceholderExpansion; import org.bukkit.entity.Player; -import javax.annotation.PostConstruct; - public class PlaceholderIntegrationPAPI extends PlaceholderExpansion implements PlaceholderIntegration { @Override public boolean persist() { @@ -37,9 +35,6 @@ public class PlaceholderIntegrationPAPI extends PlaceholderExpansion implements @Override public String onPlaceholderRequest(Player player, String identifier) { - if(player == null) - return ""; - return PlaceholderManager.getResult(player, identifier); } diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/util/NumberUtils.java b/Plugin/src/main/java/com/willfp/ecoenchants/util/NumberUtils.java index 8e6a9c49..ddbef5b6 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/util/NumberUtils.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/util/NumberUtils.java @@ -1,5 +1,6 @@ package com.willfp.ecoenchants.util; +import java.text.DecimalFormat; import java.util.TreeMap; public class NumberUtils { @@ -123,4 +124,16 @@ public class NumberUtils { public static int log2(int N) { return (int)(Math.log(N) / Math.log(2)); } + + /** + * Format double to string + * @param toFormat The number to format + * @return Formatted + */ + public static String format(double toFormat) { + DecimalFormat df = new DecimalFormat("0.00"); + String formatted = df.format(toFormat); + + return formatted.endsWith("00") ? String.valueOf((int) toFormat) : formatted; + } }