From 4ea9037dd4f2d6c4aa0a224f8a3e9122cd7124ff Mon Sep 17 00:00:00 2001 From: nossr50 Date: Fri, 15 Feb 2019 15:08:15 -0800 Subject: [PATCH] new config system pt 6 doing some work on experience.yml --- Changelog.txt | 6 +- .../com/gmail/nossr50/core/config/Config.java | 17 +- .../config/experience/ExperienceConfig.java | 258 ++++++++++-------- .../mcmmo/{BlockTypes.java => BlockType.java} | 15 +- .../nossr50/core/mcmmo/bossbars/BarColor.java | 15 + .../nossr50/core/mcmmo/bossbars/BarStyle.java | 12 + .../nossr50/core/mcmmo/entity/EntityType.java | 10 + .../gmail/nossr50/core/util/StringUtils.java | 5 +- 8 files changed, 218 insertions(+), 120 deletions(-) rename core/src/main/java/com/gmail/nossr50/core/mcmmo/{BlockTypes.java => BlockType.java} (58%) create mode 100644 core/src/main/java/com/gmail/nossr50/core/mcmmo/bossbars/BarColor.java create mode 100644 core/src/main/java/com/gmail/nossr50/core/mcmmo/bossbars/BarStyle.java create mode 100644 core/src/main/java/com/gmail/nossr50/core/mcmmo/entity/EntityType.java diff --git a/Changelog.txt b/Changelog.txt index 8845f00c7..5fccb2c49 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -8,10 +8,14 @@ Key: - Removal Version 2.2.0 + mcMMO has a new config system (WIP) + mcMMO for Bukkit no longer requires Spigot in order to play, you can now use Bukkit instead (WIP) mcMMO is now abstracted from the Bukkit API in order to support more platforms (WIP) - Salvage config entries are no longer case sensitive mcMMO has changed from using maven to gradle! mcMMO is now a gradle project (this makes it much easier for us to support older versions of MC and other APIs) + +Version 2.1.12 + Salvage config entries are no longer case sensitive Fixed a bug where Fishing was not rewarding vanilla XP orbs Version 2.1.11 diff --git a/core/src/main/java/com/gmail/nossr50/core/config/Config.java b/core/src/main/java/com/gmail/nossr50/core/config/Config.java index 54f61a067..d7e1f3ec3 100644 --- a/core/src/main/java/com/gmail/nossr50/core/config/Config.java +++ b/core/src/main/java/com/gmail/nossr50/core/config/Config.java @@ -280,23 +280,32 @@ public abstract class Config implements VersionedConfig, Unload { return userRootNode; } - int getIntValue(String... path) + public int getIntValue(String... path) { return userRootNode.getNode(path).getInt(); } - double getDoubleValue(String... path) + public double getDoubleValue(String... path) { return userRootNode.getNode(path).getDouble(); } - boolean getBooleanValue(String... path) + public boolean getBooleanValue(String... path) { return userRootNode.getNode(path).getBoolean(); } - String getStringValue(String... path) + public String getStringValue(String... path) { return userRootNode.getNode(path).getString(); } + + /** + * Checks to see if a node exists in the user's config file + * @param path path to the node + * @return true if the node exists + */ + public boolean hasNode(String... path) { + return (userRootNode.getNode(path) != null); + } } diff --git a/core/src/main/java/com/gmail/nossr50/core/config/experience/ExperienceConfig.java b/core/src/main/java/com/gmail/nossr50/core/config/experience/ExperienceConfig.java index 056a8ca17..f2ff721f3 100644 --- a/core/src/main/java/com/gmail/nossr50/core/config/experience/ExperienceConfig.java +++ b/core/src/main/java/com/gmail/nossr50/core/config/experience/ExperienceConfig.java @@ -3,6 +3,10 @@ package com.gmail.nossr50.core.config.experience; import com.gmail.nossr50.core.McmmoCore; import com.gmail.nossr50.core.config.ConfigValidated; import com.gmail.nossr50.core.datatypes.experience.FormulaType; +import com.gmail.nossr50.core.mcmmo.BlockType; +import com.gmail.nossr50.core.mcmmo.bossbars.BarColor; +import com.gmail.nossr50.core.mcmmo.bossbars.BarStyle; +import com.gmail.nossr50.core.mcmmo.entity.EntityType; import com.gmail.nossr50.core.skills.MaterialType; import com.gmail.nossr50.core.skills.PotionStage; import com.gmail.nossr50.core.skills.PrimarySkillType; @@ -12,6 +16,64 @@ import java.util.ArrayList; import java.util.List; public class ExperienceConfig extends ConfigValidated { + public static final String EXPLOIT_FIX = "ExploitFix"; + public static final String ENDERMAN_ENDERMITE_FARMS = "EndermanEndermiteFarms"; + public static final String EXPERIENCE = "Experience"; + public static final String EXPERIENCE_FORMULA = EXPERIENCE + "_Formula"; + public static final String CURVE = "Curve"; + public static final String VALUES = "_Values"; + public static final String MULTIPLIER = "multiplier"; + public static final String BASE = "base"; + public static final String EXPONENT = "exponent"; + public static final String MULTIPLIER1 = "Multiplier"; + public static final String GLOBAL = "Global"; + public static final String MOBSPAWNERS = "Mobspawners"; + public static final String BREEDING = "Breeding"; + public static final String MODIFIER = "Modifier"; + public static final String CUSTOM_XP_PERK = "Custom_XP_Perk"; + public static final String BOOST = "Boost"; + public static final String DIMISHED_RETURNS = "Dimished_Returns"; + public static final String GUARANTEED_MINIMUM_PERCENTAGE = "Guaranteed_Minimum_Percentage"; + public static final String DIMINISHED_RETURNS = "Diminished_Returns"; + public static final String ENABLE = "Enable"; + public static final String ENABLED = ENABLE + "d"; + public static final String TIME_INTERVAL = "Time_Interval"; + public static final String CONVERSION = "Conversion"; + public static final String EXP = "Exp_"; + public static final String PVP = "PVP"; + public static final String REWARDS = "Rewards"; + public static final String COMBAT = "Combat"; + public static final String ANIMALS = "Animals"; + public static final String BARS = "_Bars"; + public static final String UPDATE = "Update"; + public static final String PASSIVE = "Passive"; + public static final String THIS_MAY_CAUSE_LAG = "ThisMayCauseLag"; + public static final String ALWAYS = "Always"; + public static final String TITLES_WHEN_XPIS_GAINED = "TitlesWhenXPIsGained"; + public static final String EXTRA_DETAILS = "ExtraDetails"; + public static final String COLOR = "Color"; + public static final String BAR_STYLE = "BarStyle"; + public static final String ACROBATICS = "Acrobatics"; + public static final String DODGE = "Dodge"; + public static final String ROLL = "Roll"; + public static final String FALL = "Fall"; + public static final String FEATHER = "Feather"; + public static final String ALCHEMY = "Alchemy"; + public static final String POTION_STAGE = "Potion_Stage_"; + public static final String ARCHERY = "Archery"; + public static final String DISTANCE = "Distance_"; + public static final String FISHING = "Fishing"; + public static final String SHAKE = "Shake"; + public static final String REPAIR = "Repair"; + public static final String BASE1 = "Base"; + public static final String TAMING = "Taming"; + public static final String ANIMAL_TAMING = "Animal_Taming"; + public static final String PARTY = "Party"; + public static final String THRESHOLD = "Threshold"; + public static final String CUMULATIVE = "Cumulative_"; + public static final String OCELOT = "Ocelot"; + public static final String WOLF = "Wolf"; + public static final String FEATHER_FALL_MULTIPLIER = "FeatherFall_Multiplier"; private static ExperienceConfig instance; private ExperienceConfig() { @@ -51,40 +113,40 @@ public class ExperienceConfig extends ConfigValidated { /* Curve values */ if (getMultiplier(FormulaType.EXPONENTIAL) <= 0) { - reason.add("Experience_Formula.Exponential_Values.multiplier should be greater than 0!"); + reason.add(EXPERIENCE_FORMULA + ".Exponential" + VALUES + "." + MULTIPLIER + " should be greater than 0!"); } if (getMultiplier(FormulaType.LINEAR) <= 0) { - reason.add("Experience_Formula.Linear_Values.multiplier should be greater than 0!"); + reason.add(EXPERIENCE_FORMULA + ".Linear" + VALUES + "." + MULTIPLIER + " should be greater than 0!"); } if (getExponent(FormulaType.EXPONENTIAL) <= 0) { - reason.add("Experience_Formula.Exponential_Values.exponent should be greater than 0!"); + reason.add(EXPERIENCE_FORMULA + ".Exponential" + VALUES + "." + EXPONENT + " should be greater than 0!"); } /* Global modifier */ if (getExperienceGainsGlobalMultiplier() <= 0) { - reason.add("Experience_Formula.Multiplier.Global should be greater than 0!"); + reason.add(EXPERIENCE_FORMULA + "." + MULTIPLIER1 + "." + GLOBAL + " should be greater than 0!"); } /* PVP modifier */ if (getPlayerVersusPlayerXP() < 0) { - reason.add("Experience_Formula.Multiplier.PVP should be at least 0!"); + reason.add(EXPERIENCE_FORMULA + "." + MULTIPLIER1 + "." + PVP + " should be at least 0!"); } /* Spawned Mob modifier */ if (getSpawnedMobXpMultiplier() < 0) { - reason.add("Experience_Formula.Mobspawners.Multiplier should be at least 0!"); + reason.add(EXPERIENCE_FORMULA + "." + MOBSPAWNERS + "." + MULTIPLIER1 + " should be at least 0!"); } /* Bred Mob modifier */ if (getBredMobXpMultiplier() < 0) { - reason.add("Experience_Formula.Breeding.Multiplier should be at least 0!"); + reason.add(EXPERIENCE_FORMULA + "." + BREEDING + "." + MULTIPLIER1 + " should be at least 0!"); } /* Conversion */ if (getExpModifier() <= 0) { - reason.add("Conversion.Exp_Modifier should be greater than 0!"); + reason.add(CONVERSION + "." + EXP + MODIFIER + " should be greater than 0!"); } /* @@ -94,51 +156,51 @@ public class ExperienceConfig extends ConfigValidated { /* Alchemy */ for (PotionStage potionStage : PotionStage.values()) { if (getPotionXP(potionStage) < 0) { - reason.add("Experience.Alchemy.Potion_Stage_" + potionStage.toNumerical() + " should be at least 0!"); + reason.add(EXPERIENCE + "." + ALCHEMY + "." + POTION_STAGE + potionStage.toNumerical() + " should be at least 0!"); } } /* Archery */ if (getArcheryDistanceMultiplier() < 0) { - reason.add("Experience.Archery.Distance_Multiplier should be at least 0!"); + reason.add(EXPERIENCE + "." + ARCHERY + "." + DISTANCE + MULTIPLIER1 + " should be at least 0!"); } /* Combat XP Multipliers */ if (getAnimalsXP() < 0) { - reason.add("Experience.Combat.Multiplier.Animals should be at least 0!"); + reason.add(EXPERIENCE + "." + COMBAT + "." + MULTIPLIER1 + "." + ANIMALS + " should be at least 0!"); } if (getDodgeXPModifier() < 0) { - reason.add("Skills.Acrobatics.Dodge_XP_Modifier should be at least 0!"); + reason.add("Skills." + ACROBATICS + "." + DODGE + "_XP_" + MODIFIER + " should be at least 0!"); } if (getRollXPModifier() < 0) { - reason.add("Skills.Acrobatics.Roll_XP_Modifier should be at least 0!"); + reason.add("Skills." + ACROBATICS + "." + ROLL + "_XP_" + MODIFIER + " should be at least 0!"); } if (getFallXPModifier() < 0) { - reason.add("Skills.Acrobatics.Fall_XP_Modifier should be at least 0!"); + reason.add("Skills." + ACROBATICS + "." + FALL + "_XP_" + MODIFIER + " should be at least 0!"); } /* Fishing */ // TODO: Add validation for each fish type once enum is available. if (getFishingShakeXP() <= 0) { - reason.add("Experience.Fishing.Shake should be greater than 0!"); + reason.add(EXPERIENCE + "." + FISHING + "." + SHAKE + " should be greater than 0!"); } /* Repair */ if (getRepairXPBase() <= 0) { - reason.add("Experience.Repair.Base should be greater than 0!"); + reason.add(EXPERIENCE + "." + REPAIR + "." + BASE1 + " should be greater than 0!"); } /* Taming */ if (getTamingXP(EntityType.WOLF) <= 0) { - reason.add("Experience.Taming.Animal_Taming.Wolf should be greater than 0!"); + reason.add(EXPERIENCE + "." + TAMING + "." + ANIMAL_TAMING + "." + WOLF + " should be greater than 0!"); } if (getTamingXP(EntityType.OCELOT) <= 0) { - reason.add("Experience.Taming.Animal_Taming.Ocelot should be greater than 0!"); + reason.add(EXPERIENCE + "." + TAMING + "." + ANIMAL_TAMING + "." + OCELOT + " should be greater than 0!"); } return reason; @@ -150,84 +212,85 @@ public class ExperienceConfig extends ConfigValidated { /* EXPLOIT TOGGLES */ public boolean isEndermanEndermiteFarmingPrevented() { - return getBooleanValue("ExploitFix.EndermanEndermiteFarms", true); + return getBooleanValue(EXPLOIT_FIX, ENDERMAN_ENDERMITE_FARMS); } /* Curve settings */ public FormulaType getFormulaType() { - return FormulaType.getFormulaType(getStringValue("Experience_Formula.Curve")); + return FormulaType.getFormulaType(getStringValue(EXPERIENCE_FORMULA, CURVE)); } public boolean getCumulativeCurveEnabled() { - return getBooleanValue("Experience_Formula.Cumulative_Curve", false); + return getBooleanValue(EXPERIENCE_FORMULA, CUMULATIVE + CURVE); } /* Curve values */ public double getMultiplier(FormulaType type) { - return getDoubleValue("Experience_Formula." + StringUtils.getCapitalized(type.toString()) + "_Values.multiplier"); + return getDoubleValue(EXPERIENCE_FORMULA, StringUtils.getCapitalized(type.toString()) + VALUES, MULTIPLIER); } public int getBase(FormulaType type) { - return getIntValue("Experience_Formula." + StringUtils.getCapitalized(type.toString()) + "_Values.base"); + return getIntValue(EXPERIENCE_FORMULA, StringUtils.getCapitalized(type.toString()) + VALUES, BASE); } public double getExponent(FormulaType type) { - return getDoubleValue("Experience_Formula." + StringUtils.getCapitalized(type.toString()) + "_Values.exponent"); + return getDoubleValue(EXPERIENCE_FORMULA, StringUtils.getCapitalized(type.toString()) + VALUES, EXPONENT); } /* Global modifier */ public double getExperienceGainsGlobalMultiplier() { - return getDoubleValue("Experience_Formula.Multiplier.Global", 1.0); + return getDoubleValue(EXPERIENCE_FORMULA, MULTIPLIER1, GLOBAL); } - public void setExperienceGainsGlobalMultiplier(double value) { - config.set("Experience_Formula.Multiplier.Global", value); - } + //TODO: Rewrite this + /*public void setExperienceGainsGlobalMultiplier(double value) { + config.set(EXPERIENCE_FORMULA, MULTIPLIER1, GLOBAL, value); + }*/ /* PVP modifier */ public double getPlayerVersusPlayerXP() { - return getDoubleValue("Experience_Formula.Multiplier.PVP", 1.0); + return getDoubleValue(EXPERIENCE_FORMULA, MULTIPLIER1, PVP); } /* Spawned Mob modifier */ public double getSpawnedMobXpMultiplier() { - return getDoubleValue("Experience_Formula.Mobspawners.Multiplier", 0.0); + return getDoubleValue(EXPERIENCE_FORMULA, MOBSPAWNERS, MULTIPLIER1); } public double getBredMobXpMultiplier() { - return getDoubleValue("Experience_Formula.Breeding.Multiplier", 1.0); + return getDoubleValue(EXPERIENCE_FORMULA, BREEDING, MULTIPLIER1); } /* Skill modifiers */ public double getFormulaSkillModifier(PrimarySkillType skill) { - return getDoubleValue("Experience_Formula.Modifier." + StringUtils.getCapitalized(skill.toString())); + return getDoubleValue(EXPERIENCE_FORMULA, MODIFIER, StringUtils.getCapitalized(skill.toString())); } /* Custom XP perk */ public double getCustomXpPerkBoost() { - return getDoubleValue("Experience_Formula.Custom_XP_Perk.Boost", 1.25); + return getDoubleValue(EXPERIENCE_FORMULA, CUSTOM_XP_PERK, BOOST); } /* Diminished Returns */ public float getDiminishedReturnsCap() { - return (float) getDoubleValue("Dimished_Returns.Guaranteed_Minimum_Percentage", 0.05D); + return (float) getDoubleValue(DIMISHED_RETURNS, GUARANTEED_MINIMUM_PERCENTAGE); } public boolean getDiminishedReturnsEnabled() { - return getBooleanValue("Diminished_Returns.Enabled", false); + return getBooleanValue(DIMINISHED_RETURNS, ENABLED); } public int getDiminishedReturnsThreshold(PrimarySkillType skill) { - return getIntValue("Diminished_Returns.Threshold." + StringUtils.getCapitalized(skill.toString()), 20000); + return getIntValue(DIMINISHED_RETURNS, THRESHOLD, StringUtils.getCapitalized(skill.toString())); } public int getDiminishedReturnsTimeInterval() { - return getIntValue("Diminished_Returns.Time_Interval", 10); + return getIntValue(DIMINISHED_RETURNS, TIME_INTERVAL); } /* Conversion */ public double getExpModifier() { - return getDoubleValue("Conversion.Exp_Modifier", 1); + return getDoubleValue(CONVERSION, EXP + MODIFIER); } /* @@ -236,78 +299,53 @@ public class ExperienceConfig extends ConfigValidated { /* General Settings */ public boolean getExperienceGainsPlayerVersusPlayerEnabled() { - return getBooleanValue("Experience.PVP.Rewards", true); + return getBooleanValue(EXPERIENCE, PVP, REWARDS); } /* Combat XP Multipliers */ public double getCombatXP(EntityType entity) { - return getDoubleValue("Experience.Combat.Multiplier." + StringUtils.getPrettyEntityTypeString(entity).replace(" ", "_")); + return getDoubleValue(EXPERIENCE, COMBAT, MULTIPLIER1, entity.getConfigName()); } public double getAnimalsXP(EntityType entity) { - return getDoubleValue("Experience.Combat.Multiplier." + StringUtils.getPrettyEntityTypeString(entity).replace(" ", "_"), getAnimalsXP()); + return getDoubleValue(EXPERIENCE, COMBAT, MULTIPLIER1, entity.getConfigName()); } public double getAnimalsXP() { - return getDoubleValue("Experience.Combat.Multiplier.Animals", 1.0); + return getDoubleValue(EXPERIENCE, COMBAT, MULTIPLIER1, ANIMALS); } public boolean hasCombatXP(EntityType entity) { - return config.contains("Experience.Combat.Multiplier." + StringUtils.getPrettyEntityTypeString(entity).replace(" ", "_")); + return hasNode(EXPERIENCE, COMBAT, MULTIPLIER1, entity.getConfigName()); } /* Materials */ - public int getXp(PrimarySkillType skill, Material data) { - String baseString = "Experience." + StringUtils.getCapitalized(skill.toString()) + "."; - String explicitString = baseString + StringUtils.getExplicitConfigMaterialString(data); - if (config.contains(explicitString)) - return getIntValue(explicitString); - String friendlyString = baseString + StringUtils.getFriendlyConfigMaterialString(data); - if (config.contains(friendlyString)) - return getIntValue(friendlyString); - String wildcardString = baseString + StringUtils.getWildcardConfigMaterialString(data); - if (config.contains(wildcardString)) - return getIntValue(wildcardString); - return 0; + + /** + * Gets the raw XP given for breaking this block, this does not include modifiers + * @param skill The skill to give XP for + * @param blockType the type of block + * @return the raw amount of XP for this block before modifiers + */ + public int getXp(PrimarySkillType skill, BlockType blockType) { + //TODO: This is going to need to be changed, this code here is only placeholder + String[] path = new String[]{ EXPERIENCE, StringUtils.getCapitalized(skill.toString()), blockType.getConfigName() }; + return getIntValue(path); } - /* Materials */ - public int getXp(PrimarySkillType skill, BlockData data) { - String baseString = "Experience." + StringUtils.getCapitalized(skill.toString()) + "."; - String explicitString = baseString + StringUtils.getExplicitConfigBlockDataString(data); - if (config.contains(explicitString)) - return getIntValue(explicitString); - String friendlyString = baseString + StringUtils.getFriendlyConfigBlockDataString(data); - if (config.contains(friendlyString)) - return getIntValue(friendlyString); - String wildcardString = baseString + StringUtils.getWildcardConfigBlockDataString(data); - if (config.contains(wildcardString)) - return getIntValue(wildcardString); - return 0; - } - - public boolean doesBlockGiveSkillXP(PrimarySkillType skill, Material data) { - String baseString = "Experience." + StringUtils.getCapitalized(skill.toString()) + "."; - String explicitString = baseString + StringUtils.getExplicitConfigMaterialString(data); - if (config.contains(explicitString)) - return true; - String friendlyString = baseString + StringUtils.getFriendlyConfigMaterialString(data); - if (config.contains(friendlyString)) - return true; - String wildcardString = baseString + StringUtils.getWildcardConfigMaterialString(data); - return config.contains(wildcardString); - } - - public boolean doesBlockGiveSkillXP(PrimarySkillType skill, BlockData data) { - String baseString = "Experience." + StringUtils.getCapitalized(skill.toString()) + "."; - String explicitString = baseString + StringUtils.getExplicitConfigBlockDataString(data); - if (config.contains(explicitString)) - return true; - String friendlyString = baseString + StringUtils.getFriendlyConfigBlockDataString(data); - if (config.contains(friendlyString)) - return true; - String wildcardString = baseString + StringUtils.getWildcardConfigBlockDataString(data); - return config.contains(wildcardString); + /** + * Checks if a block gives XP + * This is used to determine whether or not mcMMO should track a block that is placed by a user, among other things. + * Note: If the block has an entry in the config that will return true even if the XP is 0, this does not check the value of the XP + * @param skill The skill to check for + * @param blockType the type of block + * @return true if the block does give XP + */ + public boolean doesBlockGiveSkillXP(PrimarySkillType skill, BlockType blockType) { + //TODO: This used to support wildcard characters, seems a bit unnecessary to do so. + //TODO: This is going to need to be changed, this code here is only placeholder + String[] path = new String[] {EXPERIENCE, StringUtils.getCapitalized(skill.toString()), blockType.getConfigName()}; + return hasNode(path); } /* @@ -315,31 +353,31 @@ public class ExperienceConfig extends ConfigValidated { */ public boolean isPartyExperienceBarsEnabled() { - return getBooleanValue("Experience_Bars.Update.Party", true); + return getBooleanValue(EXPERIENCE + BARS, UPDATE, PARTY); } public boolean isPassiveGainsExperienceBarsEnabled() { - return getBooleanValue("Experience_Bars.Update.Passive", true); + return getBooleanValue(EXPERIENCE + BARS, UPDATE, PASSIVE); } public boolean getDoExperienceBarsAlwaysUpdateTitle() { - return getBooleanValue("Experience_Bars.ThisMayCauseLag.AlwaysUpdateTitlesWhenXPIsGained.Enable", false) || getAddExtraDetails(); + return getBooleanValue(EXPERIENCE + BARS, THIS_MAY_CAUSE_LAG, ALWAYS + UPDATE + TITLES_WHEN_XPIS_GAINED, ENABLE) || getAddExtraDetails(); } public boolean getAddExtraDetails() { - return getBooleanValue("Experience_Bars.ThisMayCauseLag.AlwaysUpdateTitlesWhenXPIsGained.ExtraDetails", false); + return getBooleanValue(EXPERIENCE + BARS, THIS_MAY_CAUSE_LAG, ALWAYS + UPDATE + TITLES_WHEN_XPIS_GAINED, EXTRA_DETAILS); } public boolean isExperienceBarsEnabled() { - return getBooleanValue("Experience_Bars.Enable", true); + return getBooleanValue(EXPERIENCE + BARS, ENABLE); } public boolean isExperienceBarEnabled(PrimarySkillType primarySkillType) { - return getBooleanValue("Experience_Bars." + StringUtils.getCapitalized(primarySkillType.toString()) + ".Enable", true); + return getBooleanValue(EXPERIENCE + BARS, StringUtils.getCapitalized(primarySkillType.toString()), ENABLE); } public BarColor getExperienceBarColor(PrimarySkillType primarySkillType) { - String colorValueFromConfig = getStringValue("Experience_Bars." + StringUtils.getCapitalized(primarySkillType.toString()) + ".Color"); + String colorValueFromConfig = getStringValue(EXPERIENCE + BARS, StringUtils.getCapitalized(primarySkillType.toString()), COLOR); for (BarColor barColor : BarColor.values()) { if (barColor.toString().equalsIgnoreCase(colorValueFromConfig)) @@ -351,7 +389,7 @@ public class ExperienceConfig extends ConfigValidated { } public BarStyle getExperienceBarStyle(PrimarySkillType primarySkillType) { - String colorValueFromConfig = getStringValue("Experience_Bars." + StringUtils.getCapitalized(primarySkillType.toString()) + ".BarStyle"); + String colorValueFromConfig = getStringValue(EXPERIENCE + BARS, StringUtils.getCapitalized(primarySkillType.toString()), BAR_STYLE); for (BarStyle barStyle : BarStyle.values()) { if (barStyle.toString().equalsIgnoreCase(colorValueFromConfig)) @@ -364,46 +402,46 @@ public class ExperienceConfig extends ConfigValidated { /* Acrobatics */ public int getDodgeXPModifier() { - return getIntValue("Experience.Acrobatics.Dodge", 120); + return getIntValue(EXPERIENCE, ACROBATICS, DODGE); } public int getRollXPModifier() { - return getIntValue("Experience.Acrobatics.Roll", 80); + return getIntValue(EXPERIENCE, ACROBATICS, ROLL); } public int getFallXPModifier() { - return getIntValue("Experience.Acrobatics.Fall", 120); + return getIntValue(EXPERIENCE, ACROBATICS, FALL); } public double getFeatherFallXPModifier() { - return getDoubleValue("Experience.Acrobatics.FeatherFall_Multiplier", 2.0); + return getDoubleValue(EXPERIENCE, ACROBATICS, FEATHER_FALL_MULTIPLIER); } /* Alchemy */ public double getPotionXP(PotionStage stage) { - return getDoubleValue("Experience.Alchemy.Potion_Stage_" + stage.toNumerical(), 10D); + return getDoubleValue(EXPERIENCE, ALCHEMY, POTION_STAGE + stage.toNumerical()); } /* Archery */ public double getArcheryDistanceMultiplier() { - return getDoubleValue("Experience.Archery.Distance_Multiplier", 0.025); + return getDoubleValue(EXPERIENCE, ARCHERY, DISTANCE + MULTIPLIER1); } public int getFishingShakeXP() { - return getIntValue("Experience.Fishing.Shake", 50); + return getIntValue(EXPERIENCE, FISHING, SHAKE); } /* Repair */ public double getRepairXPBase() { - return getDoubleValue("Experience.Repair.Base", 1000.0); + return getDoubleValue(EXPERIENCE, REPAIR, BASE1); } public double getRepairXP(MaterialType repairMaterialType) { - return getDoubleValue("Experience.Repair." + StringUtils.getCapitalized(repairMaterialType.toString())); + return getDoubleValue(EXPERIENCE, REPAIR, StringUtils.getCapitalized(repairMaterialType.toString())); } /* Taming */ public int getTamingXP(EntityType type) { - return getIntValue("Experience.Taming.Animal_Taming." + StringUtils.getPrettyEntityTypeString(type)); + return getIntValue(EXPERIENCE, TAMING, ANIMAL_TAMING, type.getConfigName()); } } diff --git a/core/src/main/java/com/gmail/nossr50/core/mcmmo/BlockTypes.java b/core/src/main/java/com/gmail/nossr50/core/mcmmo/BlockType.java similarity index 58% rename from core/src/main/java/com/gmail/nossr50/core/mcmmo/BlockTypes.java rename to core/src/main/java/com/gmail/nossr50/core/mcmmo/BlockType.java index 9ac7b8d73..1873363a5 100644 --- a/core/src/main/java/com/gmail/nossr50/core/mcmmo/BlockTypes.java +++ b/core/src/main/java/com/gmail/nossr50/core/mcmmo/BlockType.java @@ -6,6 +6,19 @@ package com.gmail.nossr50.core.mcmmo; * For example, an Oak Log in older versions of MC was simply a block with state information of being variant oak * To account for all the differences between version we have our own custom constants that will match based on platform */ -public enum BlockTypes { +public enum BlockType { + //TODO: Fill in every block that has ever existed + AIR, + WATER; + //TODO: Wire this up + + /** + * Gets the config name for a block type + * @return the config name for this block type + */ + public String getConfigName() + { + + } } diff --git a/core/src/main/java/com/gmail/nossr50/core/mcmmo/bossbars/BarColor.java b/core/src/main/java/com/gmail/nossr50/core/mcmmo/bossbars/BarColor.java new file mode 100644 index 000000000..03b1f53c5 --- /dev/null +++ b/core/src/main/java/com/gmail/nossr50/core/mcmmo/bossbars/BarColor.java @@ -0,0 +1,15 @@ +package com.gmail.nossr50.core.mcmmo.bossbars; + +/** + * Boss bars can only be specific colors + * Those colors are listed here + */ +public enum BarColor { + BLUE, + GREEN, + PINK, + PURPLE, + RED, + WHITE, + YELLOW +} diff --git a/core/src/main/java/com/gmail/nossr50/core/mcmmo/bossbars/BarStyle.java b/core/src/main/java/com/gmail/nossr50/core/mcmmo/bossbars/BarStyle.java new file mode 100644 index 000000000..6e9f5fecf --- /dev/null +++ b/core/src/main/java/com/gmail/nossr50/core/mcmmo/bossbars/BarStyle.java @@ -0,0 +1,12 @@ +package com.gmail.nossr50.core.mcmmo.bossbars; + +/** + * Represents the visual style for Boss Bar, these are hardcoded and only the following are available + */ +public enum BarStyle { + SEGMENTED_6, + SEGMENTED_10, + SEGMENTED_12, + SEGMENTED_20, + SOLID +} diff --git a/core/src/main/java/com/gmail/nossr50/core/mcmmo/entity/EntityType.java b/core/src/main/java/com/gmail/nossr50/core/mcmmo/entity/EntityType.java new file mode 100644 index 000000000..7aaed73a1 --- /dev/null +++ b/core/src/main/java/com/gmail/nossr50/core/mcmmo/entity/EntityType.java @@ -0,0 +1,10 @@ +package com.gmail.nossr50.core.mcmmo.entity; + +public enum EntityType { + //TODO: Fill this out + WOLF, + OCELOT; + + //TODO: Wire this up + public String getConfigName() { return toString(); } +} diff --git a/core/src/main/java/com/gmail/nossr50/core/util/StringUtils.java b/core/src/main/java/com/gmail/nossr50/core/util/StringUtils.java index e4234f181..24080b1c2 100644 --- a/core/src/main/java/com/gmail/nossr50/core/util/StringUtils.java +++ b/core/src/main/java/com/gmail/nossr50/core/util/StringUtils.java @@ -1,11 +1,8 @@ package com.gmail.nossr50.core.util; import com.gmail.nossr50.core.datatypes.party.PartyFeature; +import com.gmail.nossr50.core.mcmmo.entity.EntityType; import com.gmail.nossr50.core.skills.SuperAbilityType; -import org.bukkit.Material; -import org.bukkit.block.data.Ageable; -import org.bukkit.block.data.BlockData; -import org.bukkit.entity.EntityType; public class StringUtils {