mcMMO/src/main/java/com/gmail/nossr50/skills/utilities/SkillType.java

158 lines
5.3 KiB
Java
Raw Normal View History

package com.gmail.nossr50.skills.utilities;
2012-01-09 20:00:13 +01:00
import org.bukkit.entity.Player;
2012-04-26 16:27:57 +02:00
import com.gmail.nossr50.config.Config;
2012-04-27 11:47:11 +02:00
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.Users;
public enum SkillType {
ACROBATICS(Config.getInstance().getLevelCapAcrobatics(), Config.getInstance().getFormulaMultiplierAcrobatics()),
ALL, //This one is just for convenience
ARCHERY(Config.getInstance().getLevelCapArchery(), Config.getInstance().getFormulaMultiplierArchery()),
AXES(AbilityType.SKULL_SPLIITER, Config.getInstance().getLevelCapAxes(), ToolType.AXE, Config.getInstance().getFormulaMultiplierAxes()),
EXCAVATION(AbilityType.GIGA_DRILL_BREAKER, Config.getInstance().getLevelCapExcavation(), ToolType.SHOVEL, Config.getInstance().getFormulaMultiplierExcavation()),
FISHING(Config.getInstance().getLevelCapFishing(), Config.getInstance().getFormulaMultiplierFishing()),
HERBALISM(AbilityType.GREEN_TERRA, Config.getInstance().getLevelCapHerbalism(), ToolType.HOE, Config.getInstance().getFormulaMultiplierHerbalism()),
MINING(AbilityType.SUPER_BREAKER, Config.getInstance().getLevelCapMining(), ToolType.PICKAXE, Config.getInstance().getFormulaMultiplierMining()),
REPAIR(Config.getInstance().getLevelCapRepair(), Config.getInstance().getFormulaMultiplierRepair()),
2013-01-23 22:34:01 +01:00
SMELTING(Config.getInstance().getLevelCapSmelting(), 0),
SWORDS(AbilityType.SERRATED_STRIKES, Config.getInstance().getLevelCapSwords(), ToolType.SWORD, Config.getInstance().getFormulaMultiplierSwords()),
TAMING(Config.getInstance().getLevelCapTaming(), Config.getInstance().getFormulaMultiplierTaming()),
UNARMED(AbilityType.BERSERK, Config.getInstance().getLevelCapUnarmed(), ToolType.FISTS, Config.getInstance().getFormulaMultiplierUnarmed()),
WOODCUTTING(AbilityType.TREE_FELLER, Config.getInstance().getLevelCapWoodcutting(), ToolType.AXE, Config.getInstance().getFormulaMultiplierWoodcutting());
private AbilityType ability;
private int maxLevel;
private ToolType tool;
private double xpModifier;
private SkillType() {
this.ability = null;
this.maxLevel = 0;
this.tool = null;
this.xpModifier = 0;
}
private SkillType(AbilityType ability, int maxLevel, ToolType tool, double xpModifier) {
this.ability = ability;
this.maxLevel = maxLevel;
this.tool = tool;
this.xpModifier = xpModifier;
}
private SkillType(int maxLevel, double xpModifier) {
this(null, maxLevel, null, xpModifier);
}
public AbilityType getAbility() {
return ability;
}
/**
* Get the max level of this skill.
*
* @return the max level of this skill
*/
public int getMaxLevel() {
if (maxLevel > 0) {
return maxLevel;
}
2013-01-10 04:43:21 +01:00
return Integer.MAX_VALUE;
}
public ToolType getTool() {
return tool;
}
/**
* Get the base permissions associated with this skill.
*
* @param player The player to check the permissions for
* @return true if the player has permissions, false otherwise
*/
public boolean getPermissions(Player player) {
switch (this) {
case ACROBATICS:
2013-01-07 02:52:31 +01:00
return Permissions.acrobatics(player);
case ARCHERY:
2013-01-07 02:52:31 +01:00
return Permissions.archery(player);
case AXES:
2013-01-07 02:52:31 +01:00
return Permissions.axes(player);
case EXCAVATION:
2013-01-07 02:52:31 +01:00
return Permissions.excavation(player);
case FISHING:
2013-01-07 02:52:31 +01:00
return Permissions.fishing(player);
case HERBALISM:
2013-01-07 02:52:31 +01:00
return Permissions.herbalism(player);
case MINING:
2013-01-07 02:52:31 +01:00
return Permissions.mining(player);
case REPAIR:
2013-01-07 02:52:31 +01:00
return Permissions.repair(player);
case SWORDS:
2013-01-07 02:52:31 +01:00
return Permissions.swords(player);
case TAMING:
2013-01-07 02:52:31 +01:00
return Permissions.taming(player);
case UNARMED:
2013-01-07 02:52:31 +01:00
return Permissions.unarmed(player);
case WOODCUTTING:
2013-01-07 02:52:31 +01:00
return Permissions.woodcutting(player);
default:
return false;
}
}
2012-03-26 23:31:15 +02:00
public double getXpModifier() {
return xpModifier;
}
public static SkillType getSkill(String skillName) {
2013-01-21 23:15:53 +01:00
if (skillName.equalsIgnoreCase("powerlevel") || skillName.equalsIgnoreCase("all")) {
return SkillType.ALL;
}
2013-01-21 23:15:53 +01:00
for (SkillType type : SkillType.values()) {
if (type.name().equalsIgnoreCase(skillName)) {
return type;
}
}
System.out.println("[DEBUG] Invalid mcMMO skill (" + skillName + ")");
return null;
}
2012-03-30 07:32:36 +02:00
/**
* Get the skill level for this skill.
*
* @param player The player to check
* @return the player's skill level
2012-03-30 07:32:36 +02:00
*/
public int getSkillLevel(Player player) {
return Users.getPlayer(player).getProfile().getSkillLevel(this);
}
2013-01-23 22:34:01 +01:00
// TODO: This is a little "hacky", we probably need to add something to distinguish child skills in the enum, or to use another enum for them
2013-01-23 22:34:01 +01:00
public boolean isChildSkill() {
switch (this) {
case SMELTING:
return true;
default:
return false;
}
}
2012-01-09 20:00:13 +01:00
}