mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-11-03 18:43:43 +01:00 
			
		
		
		
	Move logic for config format into ConfigStringUtils
This commit is contained in:
		@@ -18,6 +18,9 @@ import java.util.List;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
import static com.gmail.nossr50.util.text.ConfigStringUtils.getConfigPartyFeatureString;
 | 
			
		||||
import static com.gmail.nossr50.util.text.ConfigStringUtils.getMaterialConfigString;
 | 
			
		||||
 | 
			
		||||
public class GeneralConfig extends BukkitConfig {
 | 
			
		||||
 | 
			
		||||
    public GeneralConfig(@NotNull File dataFolder) {
 | 
			
		||||
@@ -122,7 +125,7 @@ public class GeneralConfig extends BukkitConfig {
 | 
			
		||||
 | 
			
		||||
        for (PartyFeature partyFeature : PartyFeature.values()) {
 | 
			
		||||
            if (getPartyFeatureUnlockLevel(partyFeature) < 0) {
 | 
			
		||||
                reason.add("Party.Leveling." + StringUtils.getPrettyPartyFeatureString(partyFeature).replace(" ", "") + "_UnlockLevel should be at least 0!");
 | 
			
		||||
                reason.add("Party.Leveling." + getConfigPartyFeatureString(partyFeature) + "_UnlockLevel should be at least 0!");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -627,7 +630,7 @@ public class GeneralConfig extends BukkitConfig {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getPartyFeatureUnlockLevel(PartyFeature partyFeature) {
 | 
			
		||||
        return config.getInt("Party.Leveling." + StringUtils.getPrettyPartyFeatureString(partyFeature).replace(" ", "") + "_UnlockLevel", 0);
 | 
			
		||||
        return config.getInt("Party.Leveling." + getConfigPartyFeatureString(partyFeature) + "_UnlockLevel", 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Party Teleport Settings */
 | 
			
		||||
@@ -711,7 +714,7 @@ public class GeneralConfig extends BukkitConfig {
 | 
			
		||||
        if (material.toString().equalsIgnoreCase("LILY_PAD"))
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
        return config.getBoolean("Bonus_Drops." + StringUtils.getCapitalized(skill.toString()) + "." + StringUtils.getFormattedMaterialString(material).replace(" ", "_"));
 | 
			
		||||
        return config.getBoolean("Bonus_Drops." + StringUtils.getCapitalized(skill.toString()) + "." + getMaterialConfigString(material).replace(" ", "_"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean getDoubleDropsDisabled(PrimarySkillType skill) {
 | 
			
		||||
@@ -892,7 +895,7 @@ public class GeneralConfig extends BukkitConfig {
 | 
			
		||||
    /* Woodcutting */
 | 
			
		||||
    public boolean getWoodcuttingDoubleDropsEnabled(BlockData blockData) {
 | 
			
		||||
        return config.getBoolean("Bonus_Drops.Woodcutting."
 | 
			
		||||
                + StringUtils.getFormattedMaterialString(blockData.getMaterial()));
 | 
			
		||||
                + getMaterialConfigString(blockData.getMaterial()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean getTreeFellerSoundsEnabled() {
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,8 @@ import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import static com.gmail.nossr50.util.skills.SkillTools.isChildSkill;
 | 
			
		||||
import static com.gmail.nossr50.util.text.ConfigStringUtils.getConfigEntityTypeString;
 | 
			
		||||
import static com.gmail.nossr50.util.text.ConfigStringUtils.getMaterialConfigString;
 | 
			
		||||
 | 
			
		||||
public class ExperienceConfig extends BukkitConfig {
 | 
			
		||||
    private static ExperienceConfig instance;
 | 
			
		||||
@@ -327,11 +329,11 @@ public class ExperienceConfig extends BukkitConfig {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public double getCombatXP(EntityType entity) {
 | 
			
		||||
        return config.getDouble("Experience_Values.Combat.Multiplier." + StringUtils.getPrettyEntityTypeString(entity).replace(" ", "_"));
 | 
			
		||||
        return config.getDouble("Experience_Values.Combat.Multiplier." + getConfigEntityTypeString(entity).replace(" ", "_"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public double getAnimalsXP(EntityType entity) {
 | 
			
		||||
        return config.getDouble("Experience_Values.Combat.Multiplier." + StringUtils.getPrettyEntityTypeString(entity).replace(" ", "_"), getAnimalsXP());
 | 
			
		||||
        return config.getDouble("Experience_Values.Combat.Multiplier." + getConfigEntityTypeString(entity).replace(" ", "_"), getAnimalsXP());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public double getAnimalsXP() {
 | 
			
		||||
@@ -339,7 +341,7 @@ public class ExperienceConfig extends BukkitConfig {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean hasCombatXP(EntityType entity) {
 | 
			
		||||
        return config.contains("Experience_Values.Combat.Multiplier." + StringUtils.getPrettyEntityTypeString(entity).replace(" ", "_"));
 | 
			
		||||
        return config.contains("Experience_Values.Combat.Multiplier." + getConfigEntityTypeString(entity).replace(" ", "_"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Materials  */
 | 
			
		||||
@@ -349,7 +351,7 @@ public class ExperienceConfig extends BukkitConfig {
 | 
			
		||||
            return 0;
 | 
			
		||||
 | 
			
		||||
        final String baseString = "Experience_Values." + StringUtils.getCapitalized(skill.toString()) + ".";
 | 
			
		||||
        final String configPath = baseString + StringUtils.getFormattedMaterialString(material);
 | 
			
		||||
        final String configPath = baseString + getMaterialConfigString(material);
 | 
			
		||||
        return config.getInt(configPath, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -479,7 +481,7 @@ public class ExperienceConfig extends BukkitConfig {
 | 
			
		||||
 | 
			
		||||
    /* Taming */
 | 
			
		||||
    public int getTamingXP(EntityType type) {
 | 
			
		||||
        return config.getInt("Experience_Values.Taming.Animal_Taming." + StringUtils.getPrettyEntityTypeString(type));
 | 
			
		||||
        return config.getInt("Experience_Values.Taming.Animal_Taming." + getConfigEntityTypeString(type));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean preventStoneLavaFarming() {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,13 @@
 | 
			
		||||
package com.gmail.nossr50.config.party;
 | 
			
		||||
 | 
			
		||||
import com.gmail.nossr50.config.BukkitConfig;
 | 
			
		||||
import com.gmail.nossr50.util.text.StringUtils;
 | 
			
		||||
import org.bukkit.Material;
 | 
			
		||||
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
 | 
			
		||||
import static com.gmail.nossr50.util.text.ConfigStringUtils.getMaterialConfigString;
 | 
			
		||||
 | 
			
		||||
public class ItemWeightConfig extends BukkitConfig {
 | 
			
		||||
    private static ItemWeightConfig instance;
 | 
			
		||||
 | 
			
		||||
@@ -23,7 +24,7 @@ public class ItemWeightConfig extends BukkitConfig {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getItemWeight(Material material) {
 | 
			
		||||
        return config.getInt("Item_Weights." + StringUtils.getFormattedMaterialString(material).replace(" ", "_"), config.getInt("Item_Weights.Default"));
 | 
			
		||||
        return config.getInt("Item_Weights." + getMaterialConfigString(material).replace(" ", "_"), config.getInt("Item_Weights.Default"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public HashSet<Material> getMiscItems() {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,6 @@ import com.gmail.nossr50.mcMMO;
 | 
			
		||||
import com.gmail.nossr50.util.BlockUtils;
 | 
			
		||||
import com.gmail.nossr50.util.LogUtils;
 | 
			
		||||
import com.gmail.nossr50.util.PotionUtil;
 | 
			
		||||
import com.gmail.nossr50.util.text.StringUtils;
 | 
			
		||||
import org.bukkit.ChatColor;
 | 
			
		||||
import org.bukkit.Material;
 | 
			
		||||
import org.bukkit.Tag;
 | 
			
		||||
@@ -22,6 +21,8 @@ import java.util.ArrayList;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import static com.gmail.nossr50.util.text.ConfigStringUtils.getMaterialConfigString;
 | 
			
		||||
 | 
			
		||||
public class TreasureConfig extends BukkitConfig {
 | 
			
		||||
 | 
			
		||||
    public static final String FILENAME = "treasures.yml";
 | 
			
		||||
@@ -239,29 +240,29 @@ public class TreasureConfig extends BukkitConfig {
 | 
			
		||||
 | 
			
		||||
                    for (String dropper : dropList) {
 | 
			
		||||
                        if (dropper.equals("Bushes")) {
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(Material.FERN), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(BlockUtils.getShortGrass()), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(Material.FERN), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(BlockUtils.getShortGrass()), hylianTreasure);
 | 
			
		||||
                            for (Material species : Tag.SAPLINGS.getValues())
 | 
			
		||||
                                AddHylianTreasure(StringUtils.getFormattedMaterialString(species), hylianTreasure);
 | 
			
		||||
                                AddHylianTreasure(getMaterialConfigString(species), hylianTreasure);
 | 
			
		||||
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(Material.DEAD_BUSH), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(Material.DEAD_BUSH), hylianTreasure);
 | 
			
		||||
                            continue;
 | 
			
		||||
                        }
 | 
			
		||||
                        if (dropper.equals("Flowers")) {
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(Material.POPPY), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(Material.DANDELION), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(Material.BLUE_ORCHID), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(Material.ALLIUM), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(Material.AZURE_BLUET), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(Material.ORANGE_TULIP), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(Material.PINK_TULIP), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(Material.RED_TULIP), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(StringUtils.getFormattedMaterialString(Material.WHITE_TULIP), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(Material.POPPY), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(Material.DANDELION), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(Material.BLUE_ORCHID), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(Material.ALLIUM), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(Material.AZURE_BLUET), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(Material.ORANGE_TULIP), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(Material.PINK_TULIP), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(Material.RED_TULIP), hylianTreasure);
 | 
			
		||||
                            AddHylianTreasure(getMaterialConfigString(Material.WHITE_TULIP), hylianTreasure);
 | 
			
		||||
                            continue;
 | 
			
		||||
                        }
 | 
			
		||||
                        if (dropper.equals("Pots")) {
 | 
			
		||||
                            for (Material species : Tag.FLOWER_POTS.getValues())
 | 
			
		||||
                                AddHylianTreasure(StringUtils.getFormattedMaterialString(species), hylianTreasure);
 | 
			
		||||
                                AddHylianTreasure(getMaterialConfigString(species), hylianTreasure);
 | 
			
		||||
                            continue;
 | 
			
		||||
                        }
 | 
			
		||||
                        AddHylianTreasure(dropper, hylianTreasure);
 | 
			
		||||
 
 | 
			
		||||
@@ -4,9 +4,10 @@ import com.gmail.nossr50.commands.party.PartySubcommandType;
 | 
			
		||||
import com.gmail.nossr50.locale.LocaleLoader;
 | 
			
		||||
import com.gmail.nossr50.mcMMO;
 | 
			
		||||
import com.gmail.nossr50.util.Permissions;
 | 
			
		||||
import com.gmail.nossr50.util.text.StringUtils;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
 | 
			
		||||
import static com.gmail.nossr50.util.text.ConfigStringUtils.getConfigPartyFeatureString;
 | 
			
		||||
 | 
			
		||||
public enum PartyFeature {
 | 
			
		||||
    CHAT,
 | 
			
		||||
    TELEPORT,
 | 
			
		||||
@@ -15,11 +16,11 @@ public enum PartyFeature {
 | 
			
		||||
    XP_SHARE;
 | 
			
		||||
 | 
			
		||||
    public String getLocaleString() {
 | 
			
		||||
        return LocaleLoader.getString("Party.Feature." + StringUtils.getPrettyPartyFeatureString(this).replace(" ", ""));
 | 
			
		||||
        return LocaleLoader.getString("Party.Feature." + getConfigPartyFeatureString(this));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getFeatureLockedLocaleString() {
 | 
			
		||||
        return LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Party.Feature.Locked." + StringUtils.getPrettyPartyFeatureString(this).replace(" ", ""), mcMMO.p.getGeneralConfig().getPartyFeatureUnlockLevel(this)));
 | 
			
		||||
        return LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Party.Feature.Locked." + getConfigPartyFeatureString(this), mcMMO.p.getGeneralConfig().getPartyFeatureUnlockLevel(this)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean hasPermission(Player player) {
 | 
			
		||||
 
 | 
			
		||||
@@ -10,11 +10,12 @@ import com.gmail.nossr50.datatypes.skills.alchemy.PotionStage;
 | 
			
		||||
import com.gmail.nossr50.mcMMO;
 | 
			
		||||
import com.gmail.nossr50.skills.SkillManager;
 | 
			
		||||
import com.gmail.nossr50.util.skills.RankUtils;
 | 
			
		||||
import com.gmail.nossr50.util.text.StringUtils;
 | 
			
		||||
import org.bukkit.inventory.ItemStack;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import static com.gmail.nossr50.util.text.ConfigStringUtils.getMaterialConfigString;
 | 
			
		||||
 | 
			
		||||
public class AlchemyManager extends SkillManager {
 | 
			
		||||
    private final double LUCKY_MODIFIER = 4.0 / 3.0;
 | 
			
		||||
 | 
			
		||||
@@ -34,7 +35,7 @@ public class AlchemyManager extends SkillManager {
 | 
			
		||||
        StringBuilder list = new StringBuilder();
 | 
			
		||||
 | 
			
		||||
        for (ItemStack ingredient : getIngredients()) {
 | 
			
		||||
            String string = StringUtils.getFormattedMaterialString(ingredient.getType());
 | 
			
		||||
            String string = getMaterialConfigString(ingredient.getType());
 | 
			
		||||
 | 
			
		||||
            list.append(", ").append(string);
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -5,12 +5,13 @@ import com.gmail.nossr50.config.treasure.TreasureConfig;
 | 
			
		||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 | 
			
		||||
import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
 | 
			
		||||
import com.gmail.nossr50.mcMMO;
 | 
			
		||||
import com.gmail.nossr50.util.text.StringUtils;
 | 
			
		||||
import org.bukkit.block.BlockState;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import static com.gmail.nossr50.util.text.ConfigStringUtils.getMaterialConfigString;
 | 
			
		||||
 | 
			
		||||
public class Excavation {
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the list of possible {@link ExcavationTreasure|ExcavationTreasures} obtained from a given block.
 | 
			
		||||
@@ -19,7 +20,7 @@ public class Excavation {
 | 
			
		||||
     * @return the list of treasures that could be found
 | 
			
		||||
     */
 | 
			
		||||
    protected static List<ExcavationTreasure> getTreasures(BlockState blockState) {
 | 
			
		||||
        String friendly = StringUtils.getFormattedMaterialString(blockState.getBlockData().getMaterial());
 | 
			
		||||
        String friendly = getMaterialConfigString(blockState.getBlockData().getMaterial());
 | 
			
		||||
        if (TreasureConfig.getInstance().excavationMap.containsKey(friendly))
 | 
			
		||||
            return TreasureConfig.getInstance().excavationMap.get(friendly);
 | 
			
		||||
        return new ArrayList<>();
 | 
			
		||||
 
 | 
			
		||||
@@ -43,6 +43,7 @@ import java.util.*;
 | 
			
		||||
 | 
			
		||||
import static com.gmail.nossr50.util.ItemUtils.hasItemIncludingOffHand;
 | 
			
		||||
import static com.gmail.nossr50.util.ItemUtils.removeItemIncludingOffHand;
 | 
			
		||||
import static com.gmail.nossr50.util.text.ConfigStringUtils.getMaterialConfigString;
 | 
			
		||||
import static java.util.Objects.requireNonNull;
 | 
			
		||||
 | 
			
		||||
public class HerbalismManager extends SkillManager {
 | 
			
		||||
@@ -714,10 +715,10 @@ public class HerbalismManager extends SkillManager {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        final String friendly = StringUtils.getFormattedMaterialString(blockState.getBlockData().getMaterial());
 | 
			
		||||
        if (!TreasureConfig.getInstance().hylianMap.containsKey(friendly))
 | 
			
		||||
        final String materialConfigString = getMaterialConfigString(blockState.getBlockData().getMaterial());
 | 
			
		||||
        if (!TreasureConfig.getInstance().hylianMap.containsKey(materialConfigString))
 | 
			
		||||
            return false;
 | 
			
		||||
        List<HylianTreasure> treasures = TreasureConfig.getInstance().hylianMap.get(friendly);
 | 
			
		||||
        List<HylianTreasure> treasures = TreasureConfig.getInstance().hylianMap.get(materialConfigString);
 | 
			
		||||
 | 
			
		||||
        if (treasures.isEmpty()) {
 | 
			
		||||
            return false;
 | 
			
		||||
@@ -750,12 +751,12 @@ public class HerbalismManager extends SkillManager {
 | 
			
		||||
        PlayerInventory playerInventory = getPlayer().getInventory();
 | 
			
		||||
        
 | 
			
		||||
        if (!playerInventory.contains(Material.BROWN_MUSHROOM, 1)) {
 | 
			
		||||
            NotificationManager.sendPlayerInformation(getPlayer(), NotificationType.REQUIREMENTS_NOT_MET, "Skills.NeedMore", StringUtils.getFormattedMaterialString(Material.BROWN_MUSHROOM));
 | 
			
		||||
            NotificationManager.sendPlayerInformation(getPlayer(), NotificationType.REQUIREMENTS_NOT_MET, "Skills.NeedMore", StringUtils.getPrettyMaterialString(Material.BROWN_MUSHROOM));
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!playerInventory.contains(Material.RED_MUSHROOM, 1)) {
 | 
			
		||||
            NotificationManager.sendPlayerInformation(getPlayer(), NotificationType.REQUIREMENTS_NOT_MET, "Skills.NeedMore", StringUtils.getFormattedMaterialString(Material.RED_MUSHROOM));
 | 
			
		||||
            NotificationManager.sendPlayerInformation(getPlayer(), NotificationType.REQUIREMENTS_NOT_MET, "Skills.NeedMore", StringUtils.getPrettyMaterialString(Material.RED_MUSHROOM));
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -96,7 +96,7 @@ public class RepairManager extends SkillManager {
 | 
			
		||||
 | 
			
		||||
        // Level check
 | 
			
		||||
        if (skillLevel < minimumRepairableLevel) {
 | 
			
		||||
            NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILED, "Repair.Skills.Adept", String.valueOf(minimumRepairableLevel), StringUtils.getFormattedMaterialString(item.getType()));
 | 
			
		||||
            NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILED, "Repair.Skills.Adept", String.valueOf(minimumRepairableLevel), StringUtils.getPrettyMaterialString(item.getType()));
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -115,7 +115,7 @@ public class RepairManager extends SkillManager {
 | 
			
		||||
 | 
			
		||||
        // Check if they have the proper material to repair with
 | 
			
		||||
        if (!inventory.contains(repairMaterial)) {
 | 
			
		||||
            String prettyName = repairable.getRepairMaterialPrettyName() == null ? StringUtils.getFormattedMaterialString(repairMaterial) : repairable.getRepairMaterialPrettyName();
 | 
			
		||||
            String prettyName = repairable.getRepairMaterialPrettyName() == null ? StringUtils.getPrettyMaterialString(repairMaterial) : repairable.getRepairMaterialPrettyName();
 | 
			
		||||
 | 
			
		||||
            String materialsNeeded = "";
 | 
			
		||||
 | 
			
		||||
@@ -156,7 +156,7 @@ public class RepairManager extends SkillManager {
 | 
			
		||||
 | 
			
		||||
                // Fail out with "you need material" if we don't find a suitable alternative.
 | 
			
		||||
                if (possibleMaterial.isEmpty()) {
 | 
			
		||||
                    String prettyName = repairable.getRepairMaterialPrettyName() == null ? StringUtils.getFormattedMaterialString(repairMaterial) : repairable.getRepairMaterialPrettyName();
 | 
			
		||||
                    String prettyName = repairable.getRepairMaterialPrettyName() == null ? StringUtils.getPrettyMaterialString(repairMaterial) : repairable.getRepairMaterialPrettyName();
 | 
			
		||||
 | 
			
		||||
                    String materialsNeeded = "";
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -96,7 +96,7 @@ public class SalvageManager extends SkillManager {
 | 
			
		||||
        if (getSkillLevel() < minimumSalvageableLevel) {
 | 
			
		||||
            NotificationManager.sendPlayerInformation(player, NotificationType.REQUIREMENTS_NOT_MET,
 | 
			
		||||
                    "Salvage.Skills.Adept.Level",
 | 
			
		||||
                    String.valueOf(minimumSalvageableLevel), StringUtils.getFormattedMaterialString(item.getType()));
 | 
			
		||||
                    String.valueOf(minimumSalvageableLevel), StringUtils.getPrettyMaterialString(item.getType()));
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -143,11 +143,11 @@ public class SalvageManager extends SkillManager {
 | 
			
		||||
 | 
			
		||||
        // We only send a confirmation message after processing the event (fixes #4694)
 | 
			
		||||
        if (lotteryResults == potentialSalvageYield && potentialSalvageYield != 1 && RankUtils.isPlayerMaxRankInSubSkill(player, SubSkillType.SALVAGE_ARCANE_SALVAGE)) {
 | 
			
		||||
            NotificationManager.sendPlayerInformationChatOnly(player, "Salvage.Skills.Lottery.Perfect", String.valueOf(lotteryResults), StringUtils.getFormattedMaterialString(item.getType()));
 | 
			
		||||
            NotificationManager.sendPlayerInformationChatOnly(player, "Salvage.Skills.Lottery.Perfect", String.valueOf(lotteryResults), StringUtils.getPrettyMaterialString(item.getType()));
 | 
			
		||||
        } else if (salvageable.getMaximumQuantity() == 1 || getSalvageLimit() >= salvageable.getMaximumQuantity()) {
 | 
			
		||||
            NotificationManager.sendPlayerInformationChatOnly(player,  "Salvage.Skills.Lottery.Normal", String.valueOf(lotteryResults), StringUtils.getFormattedMaterialString(item.getType()));
 | 
			
		||||
            NotificationManager.sendPlayerInformationChatOnly(player,  "Salvage.Skills.Lottery.Normal", String.valueOf(lotteryResults), StringUtils.getPrettyMaterialString(item.getType()));
 | 
			
		||||
        } else {
 | 
			
		||||
            NotificationManager.sendPlayerInformationChatOnly(player,  "Salvage.Skills.Lottery.Untrained", String.valueOf(lotteryResults), StringUtils.getFormattedMaterialString(item.getType()));
 | 
			
		||||
            NotificationManager.sendPlayerInformationChatOnly(player,  "Salvage.Skills.Lottery.Untrained", String.valueOf(lotteryResults), StringUtils.getPrettyMaterialString(item.getType()));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        player.getInventory().setItemInMainHand(new ItemStack(Material.AIR));
 | 
			
		||||
 
 | 
			
		||||
@@ -370,7 +370,7 @@ public class TamingManager extends SkillManager {
 | 
			
		||||
            } else {
 | 
			
		||||
                //Player did not have enough of the item in their main hand
 | 
			
		||||
                int difference = tamingSummon.getItemAmountRequired() - itemInMainHand.getAmount();
 | 
			
		||||
                NotificationManager.sendPlayerInformationChatOnly(player, "Taming.Summon.COTW.NeedMoreItems", String.valueOf(difference), StringUtils.getFormattedMaterialString(itemInMainHand.getType()));
 | 
			
		||||
                NotificationManager.sendPlayerInformationChatOnly(player, "Taming.Summon.COTW.NeedMoreItems", String.valueOf(difference), StringUtils.getPrettyMaterialString(itemInMainHand.getType()));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,81 @@
 | 
			
		||||
package com.gmail.nossr50.util.text;
 | 
			
		||||
 | 
			
		||||
import com.gmail.nossr50.datatypes.party.PartyFeature;
 | 
			
		||||
import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
 | 
			
		||||
import org.bukkit.Material;
 | 
			
		||||
import org.bukkit.entity.EntityType;
 | 
			
		||||
import org.jetbrains.annotations.NotNull;
 | 
			
		||||
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.concurrent.ConcurrentHashMap;
 | 
			
		||||
import java.util.function.Function;
 | 
			
		||||
 | 
			
		||||
import static com.gmail.nossr50.util.text.StringUtils.getCapitalized;
 | 
			
		||||
import static java.util.Objects.requireNonNull;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Utility class for String operations, including formatting and caching deterministic results to improve performance.
 | 
			
		||||
 */
 | 
			
		||||
public class ConfigStringUtils {
 | 
			
		||||
    public static final String UNDERSCORE = "_";
 | 
			
		||||
    public static final String SPACE = " ";
 | 
			
		||||
 | 
			
		||||
    // Using concurrent hash maps to avoid concurrency issues (Folia)
 | 
			
		||||
    private static final Map<EntityType, String> configEntityStrings = new ConcurrentHashMap<>();
 | 
			
		||||
    private static final Map<SuperAbilityType, String> configSuperAbilityStrings = new ConcurrentHashMap<>();
 | 
			
		||||
    private static final Map<Material, String> configMaterialStrings = new ConcurrentHashMap<>();
 | 
			
		||||
    private static final Map<PartyFeature, String> configPartyFeatureStrings = new ConcurrentHashMap<>();
 | 
			
		||||
    
 | 
			
		||||
    public static String getConfigSuperAbilityString(SuperAbilityType superAbilityType) {
 | 
			
		||||
        requireNonNull(superAbilityType, "superAbilityType cannot be null");
 | 
			
		||||
        return configSuperAbilityStrings.computeIfAbsent(superAbilityType,
 | 
			
		||||
                ConfigStringUtils::createConfigFriendlyString);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static String getMaterialConfigString(Material material) {
 | 
			
		||||
        return configMaterialStrings.computeIfAbsent(material, ConfigStringUtils::createConfigFriendlyString);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static String getConfigEntityTypeString(EntityType entityType) {
 | 
			
		||||
        return configEntityStrings.computeIfAbsent(entityType, ConfigStringUtils::createConfigFriendlyString);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static String getConfigPartyFeatureString(PartyFeature partyFeature) {
 | 
			
		||||
        return configPartyFeatureStrings.computeIfAbsent(partyFeature,
 | 
			
		||||
                // For whatever dumb reason, party feature enums got formatted like this...
 | 
			
		||||
                pf -> createConfigFriendlyString(pf.name()).replace(UNDERSCORE, ""));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static String createConfigFriendlyString(String baseString) {
 | 
			
		||||
        return CONFIG_FRIENDLY_STRING_FORMATTER.apply(baseString);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static final Function<String, String> CONFIG_FRIENDLY_STRING_FORMATTER = baseString -> {
 | 
			
		||||
        if (baseString.contains(UNDERSCORE) && !baseString.contains(SPACE)) {
 | 
			
		||||
            return asConfigFormat(baseString.split(UNDERSCORE));
 | 
			
		||||
        } else {
 | 
			
		||||
            if(baseString.contains(SPACE)) {
 | 
			
		||||
                return asConfigFormat(baseString.split(SPACE));
 | 
			
		||||
            } else{
 | 
			
		||||
                return getCapitalized(baseString);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    private static @NotNull String asConfigFormat(String[] substrings) {
 | 
			
		||||
        final StringBuilder configString = new StringBuilder();
 | 
			
		||||
 | 
			
		||||
        for (int i = 0; i < substrings.length; i++) {
 | 
			
		||||
            configString.append(getCapitalized(substrings[i]));
 | 
			
		||||
            if (i < substrings.length - 1) {
 | 
			
		||||
                configString.append(UNDERSCORE);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return configString.toString();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static String createConfigFriendlyString(Object object) {
 | 
			
		||||
        return createConfigFriendlyString(object.toString());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +1,14 @@
 | 
			
		||||
package com.gmail.nossr50.util.text;
 | 
			
		||||
 | 
			
		||||
import com.gmail.nossr50.datatypes.party.PartyFeature;
 | 
			
		||||
import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
 | 
			
		||||
import org.bukkit.Material;
 | 
			
		||||
import org.bukkit.block.data.BlockData;
 | 
			
		||||
import org.bukkit.entity.EntityType;
 | 
			
		||||
import org.jetbrains.annotations.NotNull;
 | 
			
		||||
 | 
			
		||||
import java.text.DecimalFormat;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.concurrent.ConcurrentHashMap;
 | 
			
		||||
import java.util.function.Function;
 | 
			
		||||
 | 
			
		||||
import static java.util.Objects.requireNonNull;
 | 
			
		||||
@@ -24,10 +22,9 @@ public class StringUtils {
 | 
			
		||||
    protected static final DecimalFormat shortDecimal = new DecimalFormat("##0.0");
 | 
			
		||||
 | 
			
		||||
    // Using concurrent hash maps to avoid concurrency issues (Folia)
 | 
			
		||||
    private static final Map<EntityType, String> formattedEntityStrings = new HashMap<>();
 | 
			
		||||
    private static final Map<SuperAbilityType, String> formattedSuperAbilityStrings = new HashMap<>();
 | 
			
		||||
    private static final Map<Material, String> formattedMaterialStrings = new HashMap<>();
 | 
			
		||||
    private static final Map<PartyFeature, String> prettyPartyFeatureStringCache = new HashMap<>();
 | 
			
		||||
    private static final Map<EntityType, String> formattedEntityStrings = new ConcurrentHashMap<>();
 | 
			
		||||
    private static final Map<SuperAbilityType, String> formattedSuperAbilityStrings = new ConcurrentHashMap<>();
 | 
			
		||||
    private static final Map<Material, String> formattedMaterialStrings = new ConcurrentHashMap<>();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets a capitalized version of the target string.
 | 
			
		||||
@@ -73,7 +70,10 @@ public class StringUtils {
 | 
			
		||||
     * @return The "trimmed" string
 | 
			
		||||
     */
 | 
			
		||||
    public static String buildStringAfterNthElement(@NotNull String @NotNull [] args, int index) {
 | 
			
		||||
        StringBuilder trimMessage = new StringBuilder();
 | 
			
		||||
        if (index < 0)
 | 
			
		||||
            throw new IllegalArgumentException("Index must be greater than or equal to 0");
 | 
			
		||||
 | 
			
		||||
        final StringBuilder trimMessage = new StringBuilder();
 | 
			
		||||
 | 
			
		||||
        for (int i = index; i < args.length; i++) {
 | 
			
		||||
            if (i > index) {
 | 
			
		||||
@@ -92,7 +92,7 @@ public class StringUtils {
 | 
			
		||||
     * @param material Material to convert
 | 
			
		||||
     * @return Pretty string representation of the Material
 | 
			
		||||
     */
 | 
			
		||||
    public static String getFormattedMaterialString(Material material) {
 | 
			
		||||
    public static String getPrettyMaterialString(Material material) {
 | 
			
		||||
        return formattedMaterialStrings.computeIfAbsent(material, StringUtils::createPrettyString);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -107,39 +107,6 @@ public class StringUtils {
 | 
			
		||||
        return formattedEntityStrings.computeIfAbsent(entityType, StringUtils::createPrettyString);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets a wildcard configuration string for BlockData.
 | 
			
		||||
     * Results are cached to improve performance.
 | 
			
		||||
     *
 | 
			
		||||
     * @param blockData BlockData to convert
 | 
			
		||||
     * @return Wildcard configuration string
 | 
			
		||||
     */
 | 
			
		||||
    public static String getWildcardConfigBlockDataString(BlockData blockData) {
 | 
			
		||||
        return getFormattedMaterialString(blockData.getMaterial());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets an explicit configuration string for BlockData.
 | 
			
		||||
     * Results are cached to improve performance.
 | 
			
		||||
     *
 | 
			
		||||
     * @param data BlockData to convert
 | 
			
		||||
     * @return Explicit configuration string
 | 
			
		||||
     */
 | 
			
		||||
    public static String getExplicitConfigBlockDataString(BlockData data) {
 | 
			
		||||
        return getFormattedMaterialString(data.getMaterial());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets a pretty string representation of a PartyFeature.
 | 
			
		||||
     * Results are cached to improve performance.
 | 
			
		||||
     *
 | 
			
		||||
     * @param partyFeature PartyFeature to convert
 | 
			
		||||
     * @return Pretty string representation
 | 
			
		||||
     */
 | 
			
		||||
    public static String getPrettyPartyFeatureString(PartyFeature partyFeature) {
 | 
			
		||||
        return prettyPartyFeatureStringCache.computeIfAbsent(partyFeature, StringUtils::createPrettyString);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates a pretty string from a base string by splitting underscores and capitalizing words.
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user