Most Experience related maps are now tracked via a new ExperienceMapManager to simplify loading/unloading of registered values

This commit is contained in:
nossr50
2019-03-06 16:50:38 -08:00
parent f0e8eb35c4
commit 76472a2b9f
4 changed files with 142 additions and 15 deletions

View File

@ -12,6 +12,7 @@ import com.gmail.nossr50.skills.repair.repairables.Repairable;
import com.gmail.nossr50.skills.repair.repairables.SimpleRepairableManager;
import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
import com.gmail.nossr50.skills.salvage.salvageables.SimpleSalvageableManager;
import com.gmail.nossr50.util.experience.ExperienceMapManager;
import java.io.File;
import java.util.ArrayList;
@ -50,6 +51,10 @@ public final class ConfigManager {
//TODO: Add these back when modded servers become a thing again
/* MISC MANAGERS */
private ExperienceMapManager experienceMapManager;
//private ModManager modManager;
/*private ToolConfigManager toolConfigManager;
@ -127,10 +132,23 @@ public final class ConfigManager {
// Multi Config Containers
initMultiConfigContainers();
/*
* Managers
*/
// Register Managers
initMiscManagers();
initCollectionManagers();
}
/**
* Misc managers
*/
private void initMiscManagers()
{
experienceMapManager = new ExperienceMapManager();
}
/**
* Initializes all of our Multi Config Containers
*/
@ -277,4 +295,8 @@ public final class ConfigManager {
public ItemWeightConfig getItemWeightConfig() {
return itemWeightConfig;
}
public ExperienceMapManager getExperienceMapManager() {
return experienceMapManager;
}
}

View File

@ -349,21 +349,6 @@ public class ExperienceConfig extends ConfigValidated {
return getIntValue(path);
}
/**
* 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, Material 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.toString()};
return hasNode(path);
}
/*
* Experience Bar Stuff
*/

View File

@ -0,0 +1,116 @@
package com.gmail.nossr50.util.experience;
import com.gmail.nossr50.config.Unload;
import com.gmail.nossr50.mcMMO;
import org.bukkit.Material;
import java.util.HashMap;
/**
* This class handles the XP for block break related XP
*/
public class ExperienceMapManager implements Unload {
public HashMap<Material, Integer> miningXpMap;
public HashMap<Material, Integer> herbalismXpMap;
public HashMap<Material, Integer> woodcuttingXpMap;
public HashMap<Material, Integer> excavationXpMap;
public ExperienceMapManager()
{
miningXpMap = new HashMap<>();
herbalismXpMap = new HashMap<>();
woodcuttingXpMap = new HashMap<>();
excavationXpMap = new HashMap<>();
//Register with unloader
mcMMO.getConfigManager().registerUnloadable(this);
}
/**
* Determines whether or not a block has Mining XP
* @param material target block material type
* @return true if the block has valid xp registers
*/
public boolean hasMiningXp(Material material)
{
return miningXpMap.get(material) != null;
}
/**
* Determines whether or not a block has Herbalism XP
* @param material target block material type
* @return true if the block has valid xp registers
*/
public boolean hasHerbalismXp(Material material)
{
return herbalismXpMap.get(material) != null;
}
/**
* Determines whether or not a block has Woodcutting XP
* @param material target block material type
* @return true if the block has valid xp registers
*/
public boolean hasWoodcuttingXp(Material material)
{
return woodcuttingXpMap.get(material) != null;
}
/**
* Determines whether or not a block has Excavation XP
* @param material target block material type
* @return true if the block has valid xp registers
*/
public boolean hasExcavationXp(Material material)
{
return excavationXpMap.get(material) != null;
}
/**
* Gets the XP value for breaking this block from the xp map
* @param material the target block material
* @return the raw XP value before any modifiers are applied
*/
public int getMiningXp(Material material)
{
return miningXpMap.get(material);
}
/**
* Gets the XP value for breaking this block from the xp map
* @param material the target block material
* @return the raw XP value before any modifiers are applied
*/
public int getHerbalismXp(Material material)
{
return herbalismXpMap.get(material);
}
/**
* Gets the XP value for breaking this block from the xp map
* @param material the target block material
* @return the raw XP value before any modifiers are applied
*/
public int getWoodcuttingXp(Material material)
{
return woodcuttingXpMap.get(material);
}
/**
* Gets the XP value for breaking this block from the xp map
* @param material the target block material
* @return the raw XP value before any modifiers are applied
*/
public int getExcavationXp(Material material)
{
return excavationXpMap.get(material);
}
@Override
public void unload() {
miningXpMap.clear();
woodcuttingXpMap.clear();
herbalismXpMap.clear();
excavationXpMap.clear();
}
}